应用层:为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。
应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。
传输层:为应用层提供网络支持。
*TCP包含众多特性比如流量控制、超时重传、拥塞控制等因此可实现可靠传输。
*UDP只负责传输不管是否到达,不可靠传输,但是实时性好。
*当传输层的数据包大小超过 MSS(TCP 最大报文段长度) , 就要将数据包分块应用层数据包 ,传输层分割为TCP段;
*端口:应用层应用编号。
*传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。
*实际的传输功能就交给下一层让其作为应用间数据传输的媒介,实现应用到应用的通信
网络层:负责将数据从一个设备传输到另一个设备
*需要将 IP 地址分成两种意义:
一个是网络号,负责标识该 IP 地址是属于哪个「子网」的;
一个是主机号,负责标识同一「子网」下的不同主机;
*子网掩码才能算出 IP 地址 的网络号和主机号。
IP地址与子网掩码按位与得网络号
IP地址与子网掩码取反再按位与得主机号
*IP 协议会将传输层的报文作为数据部分,再加上 IP 包头组装成 IP 报文, 如果 IP 报文大小超过 MTU(以太网中一般为 1500 字节)就会再次进行分片
网络接口层:负责在以太网、WiFi 这样的底层网络上发送数据帧
网络接口层的传输单位是帧(frame)
IP 层的传输单位是包(packet)
TCP 层的传输单位是段(segment)
HTTP 的传输单位则是消息或报文(message)
但这些名词并没有什么本质的区分,可以统称为数据包。