跨子网通信的具体流程

发布于:2024-11-28 ⋅ 阅读:(16) ⋅ 点赞:(0)

  1. TCP/IP 数据包的封装(发送方)

    • TCP 封装:应用程序的数据被 TCP 协议封装为一个 TCP 数据段,包含序列号等信息。
    • IP 封装:TCP 数据段被 IP 协议封装为一个 IP 数据包,包含源 IP 和目标 IP 地址。
    • MAC 封装
      • 发送方通过路由表判断目标 IP 是否在同一个子网。
      • 如果目标 IP 不在同一子网,发送方将目标 MAC 地址设置为默认网关的 MAC 地址。
      • 数据帧的 MAC 头部填充默认网关的 MAC 地址,IP 数据包作为负载被包含在 MAC 帧中。
  2. 发送到默认网关

    • 数据帧从发送方的网卡发出,经过交换机或无线 AP,发送到默认网关。
    • 默认网关的网卡收到数据帧后,解析 MAC 头,确认自己是接收方(MAC 地址匹配),然后将 MAC 层信息移除,保留 IP 数据包。
  3. 路由器的处理(默认网关)

    • 路由器检查 IP 数据包的目标 IP 地址。
    • 在路由表中查找目标 IP 所属的子网。
      • 如果目标子网与路由器直连:
        • 路由器发起 ARP 请求,查找目标 IP 对应的 MAC 地址。
        • 路由器将新的目标 MAC 地址封装到数据帧中。
      • 如果目标子网不与路由器直连:
        • 路由器会将数据包转发给下一跳路由器(使用下一跳的 MAC 地址)。
        • 这一过程会重复,直到数据到达目标子网。
  4. 数据到达目标子网

    • 当数据到达目标子网时,最终的路由器会通过 ARP 找到目标设备的 MAC 地址。
    • 路由器将目标设备的 MAC 地址封装到 MAC 帧中,最终将数据发送到目标设备。
  5. 目标设备接收数据

    • 目标设备的网卡接收到数据帧后,解析 MAC 头,确认自己是接收方(MAC 地址匹配)。
    • 提取 IP 数据包,再逐层向上解析,最终还原应用程序数据。

关键点解析

  1. 在发送设备处

    • TCP 和 IP 的封装工作在发送方就完成,源 IP 和目标 IP 是固定的,不会在传输过程中修改。
    • MAC 地址的封装是动态的,因为 MAC 地址只在当前的局域网内有效。
  2. 默认网关的作用

    • 如果目标设备不在同一子网,默认网关(路由器)会作为中介,接管数据。
    • 路由器的作用是通过其路由表找到目标网络的位置。
  3. ARP 的使用

    • 在局域网内(包括路由器连接的子网),MAC 地址通过 ARP 广播查找。
    • 如果目标设备的 MAC 地址未缓存,路由器会广播 ARP 请求获取目标设备的 MAC 地址。
  4. MAC 和 IP 的动态配合

    • IP 地址是逻辑的,指明最终的目标。
    • MAC 地址是物理的,用于局域网内的传输,目标可能是下一跳路由器,也可能是最终设备。

通俗解释:

那我的理解就是tcp,ip都是在第一个发送的设备处就可以包好,然后如果接受方和自己不在一个子网中,就包上默认网关的mac发送过去,默认网关接收到之后去掉mac头部尾部,然后在路由表里查找有没有接收方的ip,如果有的话就arp广播找到mac地址包上之后发过去