如何将数据从一台主机发送到另一台主机上(详解)

Packet Traveling—How Packets Move Through a Network

原视频链接:https://www.youtube.com/watch?v=rYodcvhh7b8

概念

Packet:
  • 包,是TCP/IP协议通信传输中的数据单位,一般称为“数据包”
TCP/IP协议:
  • 是工作在OSI模型第三层(网络层)、第四层(传输层)上的,帧工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。
hosts:
  • 网络主机,是连接到一个计算机网络中的一台计算机或其他设备
switches:
  • 交换机,是一种多端口的网桥,在数据链路层使用MAC地址转发数据。通过引入路由功能,一些交换机也可以在网络层转发数据,这种交换机一般称为三层交换机或多层交换机。
MAC地址:
  • Media Access Control Address,称为局域网地址、以太网地址或物理地址,是用来确认网络设备位置的地址。
    • 补充:在OSI模型中,第三层网络层负责IP地址,第二层数据链接层则负责MAC地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
routers:
  • 路由器,是互联网的枢纽,是连接英特网中各局域网、广域网的设备; 它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送数据。 作用在OSI模型的第三层(网络层),提供了 路由 与 转发 两种重要机制
    • 路由:收集网络拓扑信息并动态形成路由表 ;路由器控制层面的工作,决定数据包从来源端到目的端所经过的路由路径
    • 转发:根据转发表(FIB)转发IP数据包 路由器数据层面的工作,将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行)
APR表:
  • 记录着主机的IP地址(网络地址)到MAC地址(物理地址)的映射关系
MAC Address表:
  • 记录交换机端口到MAC地址的映射关系
Routing表:
  • 记录IP 网络到接口的映射关系

过程

preparation:

在这里插入图片描述

说明:
  • IP networks:11.11.11.0/24 22.22.22.0/24
  • IP address: 11.11.11.10 11.11.11.20 22.22.22.30 22.22.22.40 11.11.11.1 22.22.22.1
  • MAC address: aaaa.aaaa.aaaa bbbb.bbbb.bbbb cccc.cccc.cccc dddd.dddd.dddd ee01.ee01.ee01 ee02.ee02.ee02
  • 路由器的Routing表中记录了IP网络与路由器接口的映射关系

step 1:Host A has Data for Host D

在这里插入图片描述

说明:
  • Host A想要发送数据给Host D。Host A将数据封装成IP数据报,IP包头中有源IP地址(11.11.11.10)和目的IP地址(22.22.22.40)
  • 在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送。因此发送方还需要有接收方的物理地址。
  • Host A查看自己的ARP表,发现没有Host D的MAC地址,于是需要发送ARP请求报文去获取默认网关的MAC地址,为了将数据发送给路由器

step 2:Host A sends an ARP Request for 11.11.11.1

在这里插入图片描述

说明:
  • Host A发送ARP请求报文,报文内容大概可以理解为:IP地址为11.11.11.1的MAC地址是什么?

  • ARP请求报文中的源IP地址和源MAC地址分别为Host A的IP地址和MAC地址,目的IP地址和目的MAC地址为11.11.11.1的IP地址和全0的MAC地址。

  • ARP报文格式如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-48HTp0BB-1649313659719)(.\images\ARP.png)]

step 3:Switch X Receives Frame

在这里插入图片描述

说明:
  • Frame:帧
  • Switch X接收帧,并将端口号与Host A的MAC地址写入到它的MAC表中。
  • ARP请求报文以广播的形式发送,所以该网段上的所有主机都会接收到这个请求包,除了接收端口2上的主机

step 4:Host B discards frame

在这里插入图片描述

说明:
  • Host B比对传过来的ARP请求报文当中的目的ip地址与自己的ip地址,发现对不上,于是丢弃该报文

step 5:Router receives ARP requests

在这里插入图片描述

说明:
  • 路由器接收到ARP请求报文后,对比传过来的目的IP地址与自己的IP地址,发现对上了,于是收下这个报文
  • 路由器将报文中的Host A发送方的IP地址和MAC地址写入到自己的ARP表中。

step 6:Router generates ARP Response

在这里插入图片描述

说明:
  • 路由器生成一个ARP响应请求报文,因为已经知道目的MAC地址(即Host A的地址)和目的IP地址(即Host A的IP地址),于是可以通过单播的方式发送出去

step 7:Switch X Receives Frame

在这里插入图片描述

说明:
  • Switch X接收ARP响应报文,将报文中的MAC地址和对应的Switch端口写入到自己的MAC地址表中
  • 然后查阅MAC地址表,发现目的MAC地址对应的是端口2,于是从端口2将响应报文转发出去

step 8:Host A receives ARP Response

在这里插入图片描述

说明:
  • Host A接收到响应报文后,将响应报文中的源IP地址(11.11.11.1)和源MAC地址(ee01.ee01.ee01)写入到自己的ARP表中

step 9:Host A creates L2 header and sends Packet

在这里插入图片描述

说明:
  • Host A将IP数据报封装成帧,帧头中记录着源MAC地址和目的MAC地址,分别为Host A的MAC地址(aaaa.aaaa.aaaa)和路由器的MAC地址(ee01.ee01.ee01)

step 10:Switch X receives frame

在这里插入图片描述

说明:
  • Switch X接收帧,查阅自己的MAC表,发现已经有端口和MAC的映射关系,所以不再添加。然后查阅MAC表,发现目的MAC地址对应的是端口3,于是从端口3将帧转发

step 11:Router receives Packet and strips L2 header

在这里插入图片描述

说明:
  • 路由器接收到帧,并丢弃帧头,取出其中的IP数据报部分。
  • 帧头的作用就是能将IP数据报从Host A传送到路由器

step 12:Router consults Routing Table

在这里插入图片描述

说明:
  • 路由器查阅Routing表,发现目的IP地址需要从eth2端口发出
  • 路由器查询自己的ARP表,发现没有目的IP与目的MAC地址映射关系,于是路由器需要利用ARP知道目的MAC地址

step 13:Router sends an ARP Request for 22.22.22.40

在这里插入图片描述

说明:
  • 路由器发送一个ARP请求,询问IP地址为22.22.22.40的Host的MAC地址

step 14:Switch Y receives frame

在这里插入图片描述

说明:
  • Switch Y会接收到这个ARP请求报文,将ARP请求报文中的源MAC地址和对应端口号写入到自己的MAC地址表中
  • Switch Y查阅自己的MAC地址表,发现没有目的MAC地址的映射关系,于是采用广播的形式从非接收端口(非端口4)发送ARP请求报文

step 15:Host C discards frame

在这里插入图片描述

说明:
  • Host C接收到ARP请求报文之后,对比报文中的目的IP地址,发现与自己的IP地址不同,于是丢弃该ARP报文。

step 16:Host D receives ARP request

在这里插入图片描述

说明:
  • Host D接收到ARP请求报文,发现报文中的目的IP地址与自己的目的IP地址相同,于是收下这个ARP报文。
  • 将报文中的源MAC地址(ee02.ee02.ee02)和源IP地址(22.22.22.1)写入到自己的ARP表中。

step 17:Host D generates ARP Response

在这里插入图片描述

说明:
  • Host D生成ARP响应报文,因为知道路由器的MAC地址,所以可以直接发送出去

step 18:Switch Y receives frame

在这里插入图片描述

说明:
  • Switch Y接收到ARP响应报文,将报文中的源MAC地址(dddd.dddd.dddd)与对应端口(5)写入到自己的MAC地址表中。
  • Switch Y查阅MAC地址表,发现有目的MAC地址(ee02.ee02.ee02)的映射关系,所以Switch Y将从端口4将ARP响应报文发送出去

step 19:Router receives ARP Response

在这里插入图片描述

说明:
  • 路由器收到ARP 响应报文之后,可以从报文中得知Host D的IP地址和MAC地址,于是将该IP地址(22.22.22.40)和MAC地址(dddd.dddd.dddd)写入到自己的ARP表中。

step 20:Router creates L2 header and sends Packet

在这里插入图片描述

说明:
  • 路由器将原先从Host A那里收到的IP数据报封装成帧,帧头中记录着源MAC地址和目的MAC地址,分别为路由器的MAC地址(ee02.ee02.ee02)和Host D的MAC地址(dddd.dddd.dddd)

step 21:Switch Y receives frame

在这里插入图片描述

说明:
  • Switch Y会接收到帧,然后发现自己的MAC地址表中已经有了端口4和源MAC地址(ee02.ee02.ee02)的映射,于是不再添加;
  • Switch Y接着查阅MAC地址表,发现目的MAC地址(dddd.dddd.dddd)对应端口5,于是将帧从端口5转发出去

step 22:Host D receives Packet

在这里插入图片描述

说明:
  • Host D接收到帧之后,首先丢弃帧头,再丢弃IP包头,最后取到Host A想要发送给Host D的数据。

至此,step 1- step 22 完成Host A将数据发送给Host D的全部过程。


step 23:Host D responds with Data for Host A

在这里插入图片描述

说明:
  • Host D想给Host A发送回复数据
  • Host D从Host A发送的帧中得知了Host A的IP地址,从自己的ARP表中得知了默认网关MAC地址
  • Host D将数据封装成IP数据报,IP包头有源IP地址(22.22.22.40)和目的IP地址(11.11.11.10)

step 24:Host D creates L2 header and sends Packet

在这里插入图片描述

说明:
  • Host D将IP数据报封装成帧,帧头有源MAC地址(dddd.dddd.dddd)和目的MAC地址(ee02.ee02.ee02),将帧发送给路由器

step 25:Switch Y receives frame

在这里插入图片描述

说明:
  • Switch Y接收到帧,发现帧中的源MAC地址和端口号已经有对应映射关系,所以不再添加
  • Switch Y查阅MAC地址表,找到目的MAC地址和端口的映射关系,于是从端口4将帧发送出去

step 26:Router receives Packet and strips L2 header

在这里插入图片描述

说明:
  • 路由器接收到帧后,丢弃帧头,取出其中的IP数据报部分

step 27:Router consults Routing Table

在这里插入图片描述

说明:
  • 路由器查询Routing表,发现IP地址对应的IP网络应该从接口eth1发送,同时路由器查询ARP表,发现已经有目的IP地址的目的MAC地址(aaaa.aaaa.aaaa)

step 28:Router creates L2 header and sends Packet

在这里插入图片描述

说明:
  • 路由器将IP数据报封装成帧,帧头有源MAC地址(ee01.ee01.ee01)和目的MAC地址(aaaa.aaaa.aaaa),将帧发送出去

step 29:Switch X receives frame

在这里插入图片描述

说明:
  • Switch X接收到帧,发现帧中的源MAC地址(ee01.ee01.ee01)和端口号(3)已经有对应的映射关系,于是不再添加
  • Switch X查阅MAC地址表,发现目的MAC地址对应端口2,于是将帧从端口2转发出去

step 30:Host A receives Packet

在这里插入图片描述

说明:
  • Host A接收到帧,去除帧头和IP包头,获取到从Host D想要发送给Host A的回复数据。

至此,step 23- step30完成Host D发送回复数据给Host A的全过程。

总结

  • 主机A想给主机D发送数据,必须知道主机D的MAC地址;
  • 如果主机A的ARP表中没有主机D的MAC地址,那么主机A需要获取默认网关的MAC地址,然后通过路由器来获取主机D的MAC地址;
  • 如果主机A的ARP表中没有默认网关的MAC地址,需要通过ARP来获取MAC地址
  • 主机A获取到默认网关的MAC地址之后,将数据封装成帧发送给路由器
  • 如果路由器的ARP表中没有主机D的MAC地址,路由器需要通过ARP来获取主机D 的MAC地址
  • 路由器获取到主机D的MAC地址之后,将数据重新封装成帧发送给主机D
  • 主机D发送回复数据给主机A,因为所有MAC地址已知,所以不用采用ARP,而是直接发送。
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想总比行动多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值