0
点赞
收藏
分享

微信扫一扫

3.Linux系统如何收发网络包+

1.网络模型

  为了使多种设备能够通过网络通信,为解决不同设备在网络中的兼容性,国际标准性组织开发了OSI网络模型,即应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层。

  • 网络层:给应用程序提供统一接口;
  • 表示层:将数据转换成兼容另一个系统识别的格式;
  • 会话层:负责建立、管理和终止表示层实体之间的通信会话;
  • 传输层:负责端到端的数据传输;
  • 网络层:负责数据路由、转发、分片;
  • 数据链路层:负责数据的封帧以及差错校验,以及MAC寻址
  • 物理层:负责在物理网络中传输帧。

TCP/IP网络模型共有四层,分别是应用层、传输层、网络层、网络接口层

  • 应用层:负责向用户提供一组应用程序,如HTTP、DNS、FTP等;
  • 传输层:负责端对端的通信,如TCP、UDP等;
  • 网络层:负责网络包的封装、分片、路由、转发,如IP、ICP等;
  • 网络接口层:负责网络包在物理网络中的传输,如网络包的封帧、MAC寻址、差错校验,通过网卡传输数据帧。

2. Linux网络协议栈

  网络分层格式如下:

3.Linux系统如何收发网络包+_IP

   传输层中添加了TCP头,网络层给TCP数据加上IP头,网络接口层给IP数据前后分别加上帧头和帧尾。在数据链路层中传输数据并不能传输任意大小的数据包,在以太网中规定了最大传输党员(MYU)是1500字节,即规定单次传输的最大IP包大小。

  当网络包数据大小超过1500字节时,就会在网络层分片,确保分片后IP包不能超过MTU大小,如果MTU太小,分包较多,网络吞吐能力越差。反之越好。

  网络数据传输协议栈结构如下:

3.Linux系统如何收发网络包+_网络层_02

   应用层程序通通过过系统调用,跟socket层进行数据交互;Socket层下面是传输层、网络层、网络接口层;最下面一层是网卡驱动程序和硬件网卡设备;LVS(Linux Virtual Server)是基于Linux的高性能、高可靠性负载均衡器。

 



举报

相关推荐

0 条评论