网络基础知识 知识量:6 - 28 - 111
在操作系统中,网络控制软件(协议栈)和网络硬件(网卡)是实现网络通信的关键组件。它们共同协作,将浏览器的消息发送给服务器。协议栈是网络通信的核心,它负责将数据分割成数据包、添加协议头、处理数据包的顺序和错误检测等任务。下面对协议栈进行简单的解剖,以便更好地理解其内部结构和功能。
应用层:这是最靠近用户的一层,负责处理应用程序之间的通信。例如,HTTP协议就在这一层运行,用于处理Web浏览器和Web服务器之间的请求和响应。
传输层:这一层负责建立、管理和终止网络上的端到端连接。它提供了两种主要的协议,TCP(传输控制协议)和UDP(用户数据报协议)。TCP是一种面向连接的协议,它提供了可靠的数据传输服务,例如数据的顺序和流量控制。而UDP是无连接的协议,它不保证数据的可靠传输,主要用于需要快速传输数据的场景,如流媒体或实时游戏。
网络层:这一层负责将数据包从源发送到目的地。它通过IP地址寻址来路由数据包。主要的协议包括IP(互联网协议)和ICMP(互联网控制消息协议)。IP协议用于数据包的封装和解封装,而ICMP用于在主机或路由器之间传递控制消息。
链路层:这一层负责将数据包发送到物理网络上。它处理网络接口卡(NIC)和传输介质(如双绞线、光纤等)之间的细节。主要的协议包括Ethernet(以太网)和PPP(点对点协议)。
物理层:这是最底层,负责处理电子信号的传输。这一层规定了网络的物理特性,如电压、线缆规范等。
当浏览器想要发送一个请求时,它会通过以上每一层,将数据打包并添加相应的协议头。然后,这些数据包会被发送到网卡,由网卡将其转换成电子信号并通过网线发送出去。
服务器的协议栈也会执行类似的操作,但是它是从下往上进行的:首先接收到电子信号,然后逐层解包,直到得到浏览器发送的原始请求。
套接字的实体就是通信控制信息,具体来说,它是一个用于存放控制信息的内存空间。这个内存空间记录了用于控制通信操作的控制信息,如通信对象的IP地址、端口号、通信操作的进行状态等。这些信息是协议栈内部用于执行操作的重要参考,比如需要查看套接字中的通信对象IP地址和端口号,以便发送数据。因此,从这个角度看,套接字其实就是一个概念,也可以说这些控制信息就是套接字的实体。
调用socket时的操作主要包括以下几个步骤:
创建套接字:使用socket函数创建一个套接字对象,该对象可以用于后续的网络通信。
绑定地址:使用bind函数将套接字对象绑定到一个IP地址和端口号上。这是为了指定套接字通信的端点。
监听连接:对于服务器端套接字,使用listen函数开始监听客户端的连接请求。这是为了等待客户端的连接请求。
接受连接:对于服务器端套接字,使用accept函数接受客户端的连接请求,并返回一个新的套接字用于与客户端进行通信。
发送和接收数据:使用send或sendto函数向连接的客户端发送数据,使用recv或recvfrom函数从连接的客户端接收数据。
关闭套接字:使用close或closesocket函数关闭套接字,释放相关资源。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6