情景一:同一广播域内,两台主机通信过程

———————————————————————————————————————————————————————————————————

两主机要通信时,要把应用数据封装成IP包,然后再交给下一层数据链路层继续封装成帧,之后根据MAC地址把数据从一台主机发送出去,传送到另一台主机。
如图,当n0和n1通信时,假如n0知道n1的IP地址(IP地址一般由由用户手动输入或者应用程序填充,或者通过DNS域名解析协议得知)却不知道它的MAC地址。通信步骤如下:

  • n0发送一个ARP广播请求(源IP是n0,目的IP是n1,源MAC是n0,目标MAC为FFFF:FFFF:FFFF)给同一广播域中的所有成员
  • 交换机sw0从自己的1接口收到该广播包,然后读取该帧的源MAC地址和目的MAC地址,由于sw0刚启动时,它的MAC表是空的,所以它会把n0的MAC地址和与之对应的接口1放到一张表里,这张表就是MAC地址表。然后交换机从其它接口广播该帧。
  • 其它主机收到该帧后,因为是广播帧,所以主机都可以拆掉二层的封装,查看目标IP地址是不是自己。目标IP不是自己的,丢弃此包。目标IP是自己的,首先把源主机的IP地址和MAC地址映射关系存入自己的ARP映射表中,然后构建ARP响应数据包,此时,二层的源MAC为被解析设备的MAC,目的为ARP解析发起者的MAC。这个响应不再以广播形式发送,而是直接发给主机A。
  • sw0收到应答包,又会检查源MAC、目标MAC,把n1的MAC和自身的接口2放进MAC地址表中。再查看自己的MAC地址表,发现存在目标MAC与自己的1接口对应,那它就会直接把这个应答包从接口1发送出去。
  • 主机n0收到应答包,发现目标MAC地址是自己,就会处理这个包。并把n1的MAC与IP放进自己的ARP缓存表中。这时,主机n0知道了n1的MAC地址了,就可以进行二层封装发送数据了。
情景二:跨路由的数据传输
——————————————————————————————————————————————————————————————————
  • 当n0和n2通信时,n0检查发现n2与自己处于不同的网段。所以,n0将数据包发送给它的网关,也就是路由r0上的f0/0接口。此时源IP和源MAC是n0自己的,目标IP是n2的,目标MAC是r0上接口f0/0的(如果n0不知道f0/0的MAC地址,与场景一相似,n0会发一个目标IP为自己的网关的ARP广播来得到f0/0的MAC地址)
  • 数据包到达r0时,路由器r0拆掉二层封装,查看目标IP是否是自己,由于目标IP不是自己,路由器r0查看自己的路由表,找出到达n2网段的路由,如果没有相关条目,就直接丢弃。
  • r0查看路由表后发现到达n2网段的出接口是f0/1,下一跳IP为路由r1的f0/1接口。于是经过二层封装,把数据包经由f0/1接口转发至路由器r1。此时,数据包的源IP是n0,源MAC是f0/1,目标IP是n2,目标MAC是r1的f0/1接口。
  • r1收到数据包后,发现目标MAC是自己,拆掉二层封装,检查目标IP是否是自己,发现不是,r1查找自己的路由表,发现目标IP跟自己的f0/0接口在同一网段,于是经过二层封装后将数据包发送到f0/0接口上。此时,数据包的源IP是n0,源MAC为r1的f0/0,目标IP是n2,目标MAC是n2。(如果r1上的ARP缓存表中没有n2的MAC地址,则接口f0/0会发送一个ARP广播给它相连的广播域中,这个ARP请求包的源IP是接口F0/0的IP 源MAC也是F0/0的MAC  目标IP是N2 目标MAC为12个F,假如n2的IP地址和MAC地址的映射关系已经在r1的ARP缓存中了,那就直接对数据包进行二层封装)。
  • 包达到n2,n2发现目标MAC是自己,收下。
 总结
——————————————————————————————————————————————————————————————————
同一广播域中,包的源、目标IP,源、目标MAC是真实的两台主机上的IP与MAC地址。

跨路由中,包的源IP与目标IP始终不会发生变化,源和目标MAC根据所经过的路由接口不同而发生相应变化。

参考:http://blog.chinaunix.net/uid-23886490-id-3038875.html

 
 

数据包从源主机到达目标主机的过程相关推荐

  1. 数据包从源主机到达目标主机过程详解

    为了便于理解,先从同一广播域内两台主机通信开始叙述吧.只要能理解这些,那也就差不多可以理解跨路由传输过程了(两者不同之处在于源和目标MAC地址的转换). 情景一:同一广播域内,两台主机通信过程. 我们 ...

  2. 路由器怎么知道外网返回的数据包发给局域网中哪台主机呢?

    这个已经困扰了我很久的问题,今天终于把它查出来了,拖延症啊..... 首先内网中的客户端将数据包传送给路由器,路由器解析数据包后发现,这个数据包是送给外网的.例如这个数据包的源IP:192.168.1 ...

  3. python对比excel两列数据_python 对比excel表格数据表-python实现两个excel表列数据对比若源表与目标表存......

    在数据分析方面,比起python,excel的局限性在哪 data3 = pandas.merge(data1, data2, on=['名称'], how='inner') inner:内连接,取交 ...

  4. HCIA-RS自用笔记(15)OSPF基础、OSPF核心工作流程、OSPF数据包类型、OSPF邻居建立条件及过程

    OSPF(7/20,41min) 开放式最短路径优先(Open Shortest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议 Open指公有协议:Cost以带宽进行计 ...

  5. 抓取从源地址为10.0.0.111主机访问目标主机10.0.0.222的80/tcp端口的流量?

    tcpdump tcp port 80 -nn icmp and src host 10.0.0.111 and dst host 10.0.0.222

  6. 数据包经由路由转发时源、目的IP地址及MAC地址变化情况

    IP数据包经由路由转发的时候源ip,目的ip,源MAC,目的mac是否发生改变,如何改变? A-–(B1-B2)-–(C1-C2)---E 如上拓扑图为例,B1和B2是路由器B上的两个接口,C1和C2 ...

  7. ping无法访问目标主机 0丢失_预渗透之目标识别

    目标识别 在利用第三方工具(如搜索引擎)获取目标网络的信息之后,接下来就要识别出目标系统里联网的主机,包括在目标网络里搜索在线的主机和鉴定目标机器上安装的操作系统,目标识别有助于后期漏洞映射阶段的工作 ...

  8. 路由器的工作原理,形成,转发数据包的过程

    一.路由器的工作原理 二.路由表的形成 三.静态路由和默认路由 四.路由器转发数据包的封装过程 五.静态路由和默认路由的配置 概述: 在只有一个网段的网络中,包可以很容易地从源主机到达目标主机,但是如 ...

  9. 计算机网络-实验三:使用网络协议分析器捕捉和分析协议数据包

    一.实验目的 (1) 熟悉ethereal的使用 (2) 验证各种协议数据包格式 (3) 学会捕捉并分析各种数据包. 二.实验环境 安装了TCP/IP协议的Windows系统,包含实用的网络工具. 三 ...

最新文章

  1. 应用事件探查器优化SQL Server系统[转]
  2. 基于vue的UI框架集锦(移动端+pc端)
  3. 前端学习(1524):ES6模块导入和导出
  4. STM32之RCC原理
  5. 去中心化交易聚合平台ParaSwap将平台交易gas费成本降低约 20%
  6. Linux 命令(3)—— sed 命令
  7. 使用Adobe Acrobat为PDF文件添加图章(仅图片)
  8. 切换账号_微软 Edge 更新:自动切换工作 / 生活账号,移动端上线集锦功能
  9. 访问共享文件时切换默认的访问账号
  10. ubuntu 16.04安装并启动openssh
  11. linux boa post方式失败,移植boa出现的错误及解决方法
  12. 最全的芯片封装技术详细介绍(珍藏版)
  13. matlab欠采样,科学网—傅立叶欠采样算子的Matlab代码 - 屈小波的博文
  14. cad插入块_CAD施工制图常见问答(一)
  15. Asis CTF 2016 b00ks
  16. Cadence Allegro输出钻孔信息文件图文教程及视频演示
  17. 电机系统标幺值基准值的选取
  18. DM8 roll.dbf损坏修复
  19. IT民工实际工作的一天
  20. Github 上 annie 下载神器的安装及使用教程

热门文章

  1. java代码一括改包名_长安成人高考不考
  2. TPLINK AC650双频高增益无线USB网卡 TL-WDN5200H免驱版 Ubuntu16.04 安装
  3. springCloud alibaba-之大圣归来
  4. tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
  5. shiro报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
  6. 解决idea控制台乱码
  7. 高清电视HDTV概述(2)
  8. eclipse 常用插件
  9. 【宫水三叶的刷题日记】497. 非重叠矩形中的随机点(中等)
  10. SpringMVC中那些Java Config