TCP/IP网络模型有哪几层?

应用层:

  用户直接接触到的就是应用层,应用层专注于用户提供应用功能,例如:HTTP、FTP、DNS、Telnet、SMTP等。

  应用层工作在操作系统中得用户态传输层及以下则工作在内核态

传输层

  应用层的数据包会传给传输层,传输层是为应用层提供网络支持。传输层的两个协议:TCPUDP

​ TCP(传输控制协议),TCP相较于UDP的特性,比如:流量控制,超时重传,拥塞控制等,为了保证数据包能可靠的传输给对方。

  UDP只负责发送数据包,不保证数据包是否能抵达对方,但是实时性相对较好,传输效率也较高。如果要实现UDP的可靠传输,可以把TCP的特性在应用层实现。

  应用传输数据过大,传输层的数据包大小超过MSS(TCP最大报文段长度),需要将数据包分块,如果中途有一个分块丢失或损坏,只需重新发送此分块即可,而不需要发送整个数据包。在TCP协议中,每个分块称为一个TCP段(TCP Segment)。

  传输层负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,此时需要用一个编号将应用区分开,这个编号就是端口。例如:Web服务器通常使用80端口,22端口通常是远程登录服务器的端口。

网络层

  实现传输功能的是网络层,传输层只是作为数据传输的媒介,帮助应用到应用的通信。

  常见协议是IP协议(Internet Protocol),IP协议会将传输层的报文作为数据部分,再加上IP包头部组装成IP报文,如果IP报文大小超过MTU(一般默认1500Bytes)会再次进行分片,得到一个即将发送的到网络的IP报文。

选自小林coding

IP协议寻址功能:

  由于网络层需要有区分设备的编号,一般使用IP地址给设备进行编号,对于IPv4协议,IP地址共32位,分为四段(比如:192.168.100.1),每段8位。由于IPv4地址有设备上限,无法做到一个设备一个IP地址,所以会将IP地址分成两种意义:

  • 一个是网络号,负责标识该IP地址是属于哪个子网
  • 一个是主机号,负责标识同一子网下的不同主机

此时需要子网掩码才能计算出IP地址的网络号和主机号,比如:10.100.122.0/24,后面的/24表示就是255.255.255.0子网掩码,255.255.255.0二进制就是11111111-11111111-11111111-00000000,24个1,为了简化子网掩码的表示,就会用/24代替255.255.255.0

网络号将 10.100.122.2 和 255.255.255.0 按位与运算

取自小林coding

主机号:将 255.255.255.0 取反后与IP地址进行进行按位与运算

在寻址过程中,先匹配相同的网络号(表示要找到同一个子网),才会去找对应的主机号。

IP协议路由功能

当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪条路径。

IP协议的寻址是告诉我们去往下一个目的地朝哪个方向走,路由是根据下一个目的地选择路径。

网络接口层

网络接口层会在IP头部的前面加上MAC头部,并封装成数据帧发送到网络上。网络接口层主要是为网络层提供链路级别传输的服务,负责以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来表示网络上的设备。

MAC头部是以以太网的头部,包含了接收方和发送方的MAC地址等信息,可以通过ARP协议获取对方的MAC地址。

总结

网络接口层的传输单位是帧,IP的传输单位是包,TCP层传输单位是段,HTTP传输单位是消息或报文,每一层的封装格式如下:

取自小林coding