数据转发的过程(HCIA学习)

  • Post author:
  • Post category:其他


数据转发过程

背景:TCP/IP协议簇和底层协议配合,保证了数据能够实现端到端的传输。这个过程是数据在不同的设备转发前的一系列封装和解封装的过程,熟悉了这个,才能对网络进行正确的分析和检测。


目标:

  • 数据封装和解封装的过程

  • 处理数据转发过程中的基本故障


数据转发过程:

  • 分类

    • 同一网络

      • 本地转发:主机A给主机B发送数据

    • 不同网络

      • 远程转发:主机A给服务器A发送数据

  • 举例:主机A需要访问服务器A的Web服务,假定两者之间建立了TCP连接。

    • TCP封装

      • 主机三次握手后建立来了可靠的TCP连接

      • 对应用层封装(加密,压缩等)

      • 进行传输层封装

        • 填充源端口:本例中为1027

        • 目地端口字段:80

        • 初始序列号

        • 确认序列号

        • 标识位

        • 窗口字段

        • 校验和字段

    • IP封装

      • 网络层封装

        • IP封装时,需要明确IP报文的源和目的地址。

        • IP报文大于网络的最大传输单元(MTU),则报文有可能在传输过程中分片。

        • TTL字段用于减少网络环路造成的影响。默认TTL=255

        • 协议字段标识了传输层所使用的协议(TCP协议—0X06)

    • 查找路由

      • 通过路由表知道数据下一跳的地址是哪里

        • 通过接口10.1.1.1的接口跳到网关10.1.1.254

    • ARP

      • 通过ARP缓存表找到下一跳的地址

        • Dynamic 动态,指的是动态地址

        • 如果没有下一跳的MAC地址,那么久会发送ARP请求

    • 以太网封装

      • 主机A在链路层封装数据帧是,遵循IEEE802.3或者Ethernet_II标准,Ethernet_II帧头中的类型字段填充0X0800,表示网络层用的是IP协议。源MAC地址为主机AC地址,目的MAC地址是网关路由器E0/0接口的MAC地址

    • 数据帧转发过程

      • 主机在半双工状态下,使用CSMA/CD检测链路是否空闲

      • 空闲的话,发送

        • 前导码(Preamble)用于使接受者进入同步状态

        • 定界符(SFD)用于指示帧的开始

      • 遇到冲突域

        • 同一冲突域里的设备都会接收到主机A发送的数据帧

        • 只有网关RTA会处理该数据帧,并继续转发

      • 主机A发送到数据帧到共享以太网,此网络中的所有设备都会收到,进行FCS校验,

        • 未通过,帧被丢弃

        • 通过,检查帧中的目的MAC地址

          • 与自己的MAC地址不吻合

          • 与自己的MAC地址吻合,继续处理

            • 解封装–帧头帧尾剥去

            • 剩下的根据帧头中的类型字段的值送到网络层中的对应协议去处理。

      • 网关检查具有到达目的的网络的路由条目

        • 若果存在转发路径,则为数据包添加新的二层帧头和帧尾,并继续转发

        • RTA收到此数据报文后

          • 网络层处理

            • RTA根据IP报头信息中的校验和字段,检查完整性

            • RTA根据IP地址查看路由表,确认是否能把数据包发送到目的端

            • RTA必须对TTL值处理

            • 报文大小不得超过MTU的值,超过就分片

          • 处理完后,报文送到数据链路层重新封装,成为一个新的 数据帧(头部会封装新的源MAC地址和目的MAC地址,)

          • 如果网络设备不知道下一跳的MAC地址通过ARP协议获取

    • 数据帧解封装

      • RTB以服务器A的MAC地址作为目的MAC地址继续转发

      • 服务器A接收到该数据帧后,发现目的MAC为自己的,且通过FCS校验完整后,就继续处理

    • 数据包解封装

      • 服务器A检查数据包的目的IP地址就是自己的,就会解封装,去除报头和报尾

        • 若数据被分片,则需要重新组合。

          • 标识字段用于标识同一数据源的分片报文

          • 偏移量:分片在原分组中的相对位置

          • 标志字段

            • 最低位为1,标识后面还有分片

            • 0,就是标识这是最后一个数据片

            • 中间一位为1表示不能分片

            • 为0表示允许分片。

      • 送往上层协议TCP继续处理

    • 数据段解封装

      • 服务器A检查TCP头部目的端口,然后将数据段发送给应用层的HTTP协议处理


提问:

  1. 数据在进行二层和三层封装之前,主机需要了解什么信息

    目的端IP地址,目的网络的路由以及下一跳的MAC地址

  2. 传输层如何准确的将数据给特定应用

    传输层检查TCP/UDO报文中的端口号来识别

  3. 当两台主机同时访问服务器的HTTP服务,如何区分属于哪个会话

    TCP报文头中包含源端口可以区分会话

    服务器通过源IP地址来识别



版权声明:本文为weixin_46210899原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。