计算机网络
TCP/IP 四层模型
应用层
应用层处于操作系统的用户态,其余三层都处于内核态,应用层负责为用户提供网络功能,比如 HTTP、DNS 等,他并不关心数据是如何传输的,只关心数据如何使用。
传输层
传输层包括 TCP 和 UDP 协议,TCP 更可靠一些,会加上 TCP 报头,但是速度会更慢,UDP 速度更快,但是可靠性会降低。当数据包比较大的时候,TCP 分层会进行分片,然后分段传输,这样如果有一段传输失败,只需要重传这一段,而不是整个数据包。
端口是传输层的一个重要概念,当设备作为接收方时,可能会有多个应用运行,每个应用需要一个端口来区分。
传输层可能大家刚接触的时候,会认为它负责将数据从一个设备传输到另一个设备,事实上它并不负责。为了使传输层简单、高效,让其作为应用间数据传输的媒介,帮助实现应用到应用的通信,而实际的传输功能就交给下一层。
网络层
网络层会将传输层的数据作为数据包,然后加上 IP 报文头,如果报文过长会进行分片处理。网络层负责将数据从一个设备传输到另一个设备,他通过网络号和主机号来确定一个设备。那么网络号(同一子网)和主机号是如何确定的呢?如何配合子网掩码,将 IP 和子网掩码进行与运算,得到网络号。将 IP 和子网掩码进行异或运算,才会去找主机。
路由器是网络层的重要设备,路由可以帮助我们转发数据包,而路由是根据 IP 地址来转发数据包的。IP 和路由类似导航和方向盘的关系。
网络接口层
网络接口层在 IP 头部之前,会加上 MAC 头部,以数据帧的形式传输。
在网络层我们依靠 IP 协议来确定一个设备,在网络接口层我们需要引入以太网协议,以太网协议在局域网中使用,局域网中每个设备都有一个 MAC 地址,以太网协议会根据 MAC 地址进行数据包的传输,将数据包传输到目的主机。所以网络接口层工作在网卡这个层次,负责在 WI-FI 和网线中传输数据。