linux 封装 分用

封装:(常用四层为例)

  上层协议是如何使用下层协议提供的服务的呢?

  其实这是通过封装(encapsulation)实现的。应用程序数据发送到物理网络上之前,将沿着协议栈从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程就称为封装。

 分用:

  当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用(demultiplexing)。分用是依靠头部信息中的类型字段实现的。

网络通信的过程(案例):

  A(IP :192.168.1.1/24 MAC:01:02:03:04:05:06) 发送给     B(IP: 192.168.1.2/24  MAC: 0a:0b:0c:0d:0e:0f)

 ARP协议请求过程:(终端 arp -a 查询 ip对应物理地址) RARP(根据MAC地址寻址IP地址)

  第一次访问没有目标MAC地址,使用ARP协议(根据IP地址寻址MAC地址),ARP协议将这些连接过信息保存在主机缓存当中,如果没有找到这些对应的MAC地址,使用ARP协议寻找MAC地址。

ARP请求:是广播给一个局域网内所有主机,每个主机请求的目的端IP地址进行解析,与自身相同则进行ARP应答。

ARP请求包:192.168.1.2访问192.168.1.3第一次访问不知道目的机器MAC地址,填充为0,共28字节

 

实际发送需要加上以太网帧的协议头(14字节): 

第一次发送时,目的物理地址全部为ff,为广播发送。目标主机接收到后为ARP应答(操作变为2),返回就可以直接填入目标和本机MAC地址:之后 IP地址 对应 MAC地址 存入本机缓存,即可以下一次使用

posted on   廿陆  阅读(23)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示