网络模型
OSI 七层网络模型
OSI 模型把 网络互联的框架分为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层 等七层,每个层负责不同的功能。其中
应用层,负责为应用程序提供统一的接口。
表示层,负责把数据转换成兼容接收系统的格式。
会话层,负责维护计算机之间的通信连接。
传输层,负责为数据加上传输表头,形成数据包。
网络层,负责数据的路由和转发。
数据链路层,负责 MAC 寻址、错误侦测和改错。
物理层,负责在物理网络中传输数据帧。
TCP/IP 四层网络模型。
在 Linux 中,我们实 际上使用的是另一个更实用的四层模型
TCP/IP 模型,把网络互联的框架分为应用层、传输层、网络层、网络接口层等四层,其
中,
应用层,负责向用户提供一组应用程序,比如 HTTP、FTP、DNS 等。
传输层,负责端到端的通信,比如 TCP、UDP 等。
网络层,负责网络包的封装、寻址和路由,比如 IP、ICMP 等。
网络接口层,负责网络包在物理网络中的传输,比如 MAC 寻址、错误侦测以及通过网
卡传输网络帧等。
Linux 网络栈
有了 TCP/IP 模型后,在进行网络传输时,数据包就会按照协议栈,对上一层发来的数据
进行逐层处理;然后封装上该层的协议头,再发送给下一层。
传输层在应用程序数据前面增加了 TCP 头;
网络层在 TCP 数据包前增加了 IP 头;
而网络接口层,又在 IP 数据包前后分别增加了帧头和帧尾。
分片:
物理链路中并不能传输任 意大小的数据包。网络接口配置的最大传输单元(MTU),就规定了最大的 IP 包大小。
在我们最常用的以太网中,MTU 默认值是 1500(这也是 Linux 的默认值)。
一旦网络包超过 MTU 的大小,就会在网络层分片,以保证分片后的 IP 包不大于 MTU
值。显然,MTU 越大,需要的分包也就越少,自然,网络吞吐能力就越好。