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头 帧头
浙公网安备 33010602011771号