主机A和主机B通信报文的转发过程

1、主机A和主机B在同一网段中

主机A查看自己的ARP缓存,检查是否有主机B的IP到MAC的映射,如果有映射,构造报文,目的IP为主机B的IP,源IP为主机A的IP,目的MAC为主机B的MAC,源MAC为主机A的MAC,将报文发送给交换机C,交换机C进行MAC地址表学习,将主机A的MAC和报文入端口号记录下来,然后交换机C查看自己的MAC转发表,检查是否有主机B的MAC到端口的映射,如果有映射,获取对应的端口,将报文从此端口转发出去,报文到达主机B。如果交换机C没有主机B的MAC转发表映射,采用洪泛的形式广播报文,主机B收到报文后向主机A回复,交换机C进行MAC表学习,将主机B的MAC和报文入端口号记录下来。

如果主机A没有主机B的ARP映射,主机A需要发送ARP请求,以获取主机B的MAC,将报文发往交换机C,交换机C采用洪泛的形式广播报文,主机B收到广播报文后,在自己的ARP缓存表中写入主机A的IP到MAC的映射,将自己的MAC封装到ARP回复报文中,单播给主机A,主机A获取到主机B的MAC后,在自己的ARP缓存表中写入主机B的IP到MAC的映射,构造报文发送给主机B,过程同上。

主机B向主机A回复报文的过程类似。

2、主机A和主机B不在同一个网络中


       主机 A 会首先检查目的IP地址是否与自己在同一网段,如果在,就直接广播ARP请求来获取目的主机的MAC地址,如果不在同一网段,又配置有网关地址的话,那么主机 A 就通过 ARP 请求,询问192.168.0.1(网关)在哪里,网关收到后就会回应主机 A ,把网关的MAC地址告诉主机 A ,当获取到网关的MAC地址后,把网关的MAC地址作为MAC帧中的目的MAC地址,然后就把数据丢给网关 192.168.0.1 ,网关根据路由表,转发给下一个路由器,再由下一个路由器交付给主机 D 所在的网络,即网关,网关再通过ARP,找到目的主机 D ,完成数据交付。

主机A查看自己的ARP缓存表,检查是否有路由器E的IP到MAC的映射,如果有映射,获取路由器E的MAC,构造报文,目的IP为主机B的IP,源IP为主机A的IP,目的MAC为路由器E的MAC,源MAC为主机A的MAC,将报文通过交换机C发往路由器E,过程同上。 如果主机A没有路由器E的IP到MAC的映射,需要发送ARP请求,获取路由器E的MAC,过程同上。路由器E收到主机A的报文后,剥离报文的MAC帧头,查询路由表,发现目标主机B所在的网络是直连的,查看自己的ARP缓存表,如果有主机B的IP到MAC的映射关系,获取主机B的MAC,封装报文MAC帧头,目的MAC为主机B的MAC,源MAC为路由器E的MAC,将报文通过交换机D发往主机B,如果路由器E没有主机B的IP到MAC的映射关系,需要发送ARP请求,获取主机B的MAC,过程同上。

主机B向主机A回复报文的过程类似。

注:路由器上的路由表一般是配置静态路由或者通过路由协议自动学习的。

目的主机接收到数据帧的操作:
        当目的主机接收到数据帧后对比目的MAC,如是发送给自己的,则拆去数据帧头,发往网络层,网络层对比目的IP,如相同则拆包发往传输层,传输层再对比目的端口,确认相同则拆去数据段交给应用程进行数据组装。

同一网段和不同网段中的两台主机通信的过程相关推荐

  1. 局域网中的两台主机共享一台显示器

    最近由于下载需要用到并口,但是我现在的主机中没有并口,但是我还有一台老式的台式机电脑,主机有并口但是显示器是打屁股的,摆在那里很占地方,于是想着能不能实现两台主机共享一台显示器.想一想,要实现这个功能 ...

  2. C++使用ICE实现两台主机通信实例

    ice使用过程跟google protocol buffer.gsoap类似,都是先写一个类似配置文件的东西,然后使用提供的工具生成相应语言的代码. ice先写一个后缀名为.ice的文件,然后使用sl ...

  3. 同一网段两个主机通信(交换机) 不同网段两个主机通信(路由器)

    网络中两台主机通信的完整过程 主机A和主机B通信报文的转发过程 1.主机A和主机B在同一个二层网络中,直接走二层交换 主机A查看自己的ARP缓存,检查是否有主机B的IP到MAC的映射,如果有映射,构造 ...

  4. #两台主机之间通信时为什么要用IP地址,而不直接用硬件地址?

    两台主机之间通信时为什么要用IP地址,而不直接用硬件地址?   既然在网络链路上传送的数据帧最终是用硬件地址来寻找目的主机,为什么还要用IP地址进行通信,为什么不直接是用硬件地址进行通信?   首先要 ...

  5. 如何使用两台主机实现三个网段之间互通且三个网段均可联网

    版权声明:对于本博客所有原创文章,允许个人.教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者.出处及本声明. 博客地址:http://blog.csdn.net/s ...

  6. 直连的不同网段的两台主机如何通信

    今天我们来看一下,如何让两台直连的主机,配置不同网段的ip地址后,还可以ping通.同时从中可以了解些什么? 环境配置 准备两台电脑,系统是Ubuntu的,用一根网线把它们的网络接口连起来 在Ubun ...

  7. 如何确定两台主机是否在同一个网段?

    举例说明: 已知A.B两台主机的IP地址和子网掩码,判断他们是否在同一个网段. A:192.168.1.1/24      B:192.168.1.33/27 判断两台主机是否在同一个网段的方法: 用 ...

  8. 局域网内两台主机 IP ping 不通的问题分析

    1.问题背景 同一个局域网内的两台主机互相之间 ping 不通 IP: 或者 A 机器可以 ping 通 B 机器,但是,B 机器 ping 不通 A 机器. 2.原因分析 1)查看两台机器的IP配置 ...

  9. [计算机网络试题]某子网的子网掩码为255.255.255.224,那么,选项中的四台主机中,不能与其它三台正常通信的是_

    [作者:杨景文] 题目1 某子网的子网掩码为255.255.255.224,那么,选项中的四台主机中,不能与其它三台正常通信的是() A. 202.3.1.33 B. 202.3.1.65 C. 20 ...

最新文章

  1. 用自然语言从GitHub搜代码,跳过论坛提问环节,来自Facebook新研究
  2. bootstrap 提交表单给后台_基于Bootstrap的响应式后台管理模板Ace
  3. 谷歌控制面板中的NetWrok
  4. Thinkphp 数据库配置参数
  5. BZOJ1076奖励关题解
  6. selenium之HTML元素无法定位
  7. 求小于100的所有合数 python_python100例
  8. 中国天气网天气城市ID
  9. cdr 表格自动填充文字_Cdr教程 用CorelDRAW绘制百事可乐标志Logo设计教程
  10. Excise_day05_Array
  11. SIMCOM 常用AT指令
  12. 河道、地下水位监测方案
  13. Java使用graphhopper完成路线规划
  14. c++练习 日期的顺延显示
  15. xdf文档怎么转换为pdf_如何将PDF文件和图像转换为Google文档文档
  16. 【代码审计】iCMS_v7.0.7 keywords.admincp.php页面存在SQL注入漏洞分析
  17. C#中利用正则表达式实现字符串搜索
  18. 改改host,轻松登录dropbox!(For Windows)
  19. oracle crs 4535,Oracle 11g RAC CRS磁盘丢失后恢复
  20. java方法调用之单分派与多分派(二)

热门文章

  1. git 如何进行版本回退?
  2. 原生js+css 实现轮播图 完整代码
  3. 一字节anti创建进程线程等回调
  4. Linux常用命令简介
  5. 自然语言处理复习笔记
  6. 浅谈软件开发方向之嵌入式
  7. CSS隐藏浏览器滚动条
  8. slam初学(一)——Kdevelop的安装及汉化
  9. python-opencv学习笔记(八):判断是否雾天与图像能见度测算
  10. ping不通_为何移动4G的两台手机Ping不通?