Linux网络

 
 

为了解决网络互联中异构设备的兼容性问题,并解耦复杂的网络包处理流程,OSI模型把网路互联的框架分为应用层,表示层,会话层,传输层,网络层,数据链路以及物理层等七层,每一层负责不同的功能

  应用层,负责为应用程序提供统一的接口。

  表示层,负责把数据转换成兼容接收系统的格式。

  会话层,负责维护计算机之间的通信连接。

  传输层,负责为数据加上传输表头,形成数据包。

  网络层,负责数据的路由和转发。

  数据链路层,负责 MAC 寻址、错误侦测和改错。

  物理层,负责在物理网络中传输数据帧。

但是OSI模型还是太复杂了,Linux中实际使用的是四层模型,即TCP/IP网络模型

  TCP/IP:把网络互联的框架分为应用层,传输层,网络层和网络接口等四层

  应用层,负责向用户提供一组应用程序,比如 HTTP、FTP、DNS 等。

  传输层,负责端到端的通信,比如 TCP、UDP 等。

  网络层,负责网络包的封装、寻址和路由,比如 IP、ICMP 等。

  网络接口层,负责网络包在物理网络中的传输,比如 MAC 寻址、错误侦测以及通过网卡传输网络帧等。

Linux网络栈

  网络包在每一层的处理逻辑,都取决于各层的网络协议,比如应用层,一个提供REST API的应用,可以使用HTTP协议,把他需要传输的JSON数据封装到HTTP协议中,然后向下传递给TCP层.而封装的事情就比较简单,只是在原来的负载前后,增加固定格式的元数据,原始的负载数据并不会被修改.

应用层  应用程序

传输层  应用程序    TCP头

网络层  应用程序    TCP头    IP头

网络接口层  帧尾 应用程序 TCP头 IP头 帧头

posted on 2021-08-19 15:13  Michael0931  阅读(58)  评论(0)    收藏  举报