在当今的以太网络通信中,在 IP 数据包中有两个必不可少的地址,那就是 IP 地址和网卡地址(即 MAC 地址),在数据包中,无论是 IP 地址还是 MAC 地址,都有源地址和目标地址,因为通信是双方的,所以就必须同时拥有双方的地址!在同一 IP 网络中通信,将会发生以下事件:

1、同网段主机间通信

主机A与主机B通信,这时主机A肯定首先要封装这些需要发给主机B的数据包,那么对于主机A来说,自己的IP地址和MAC自己肯定能够轻易得到,对于主机B的IP地址这时主机A也应该知道,要不然它就不清楚自己将要和谁通信,当有了自己的IP地址,MAC地址以及主机B的IP地址后,主机A在数据包中可以正确地写上源IP地址,目标IP地址,接下来的工作就是写入自己的MAC地址(即源MAC),最后还必须正确写入目标主机B的MAC地址,可这时主机A才发现自己根本没有目标主机B的MAC地址,那该怎么办呢?这时主机A就通过比较上面已经封装好的源IP和目标IP,通过子网掩码计算一下,发现源IP和目标IP恰好在同一个IP网络内,那么它想要得到目标主机B的MAC地址就有办法了,首先主机A就向本网段发过一个ARP请求,这个ARP请求包中包括主机A的源IP地址,源MAC地址,目标主机B的IP地址,而目标MAC地址为广播MAC地址(全部为F),因为我们要找的就是目标MAC,所以这里用广播MAC地址,又因为是以太网,所以整个局域网的所有主机都能收到这个请求MAC地址的数据包,当然主机B也能收到,因此在主机B收到此ARP请求后,立即构建一个包括自己的MAC地址的ARP回应包,回应给主机A,当主机A收到这个ARP回应后,终于完成了找寻目标MAC的重大任务,从而把目标主机B的MAC地址正确封装进上面还未封装结束的正准备发给主机B的数据包,在这时,源IP和源MAC以及目标IP和目标MAC都已正确存在于数据包中,那么这里主机A向网络内发出这些数据包,因为目标地址在本网段,所以本网段所有主机都能收到这个数据包(这是以太网的特性),最后只有真正的目标主机B能够打开这些数据包,在此,同网段两台主机之间的通信就此圆满结束!

2、不同网段主机间通信

在这里应该注意另外一个问题,因为主机A要寻找的目标主机B在同一网络,所以主机A能够通过ARP得到目标主机B的MAC地址,从而完成通信,当主机A在封装数据包时检测到目标主机并不在本网段,在这时,数据包不能把目标主机的MAC地址顺利封装进去,那么就用到另一种方法,那就是网关,主机A在准备发向主机B的数据中,封装好自己的IP地址和MAC地址,同时也封装好目标主机B的IP地址,数据包封装到这里,主机A就利用上面得到同网段目标主机B的方法去请求得到网关的MAC地址,同样也是用ARP去广播,因为网关必须和本机在同一网段,理所当然,网关能够收到这个ARP请求并能正确回应给主机A,这时主机A在数据包中封装好自己的IP地址和MAC地址,同时也封装好目标主机B的IP地址和网关的MAC地址,把数据包从网卡发出去,因为目标MAC是网关的,所以网关收到这个数据包后,发现目标MAC是自己,而目标IP却是别人,所以它不可以再往上打开这个数据包,它要做的工作就是把这些数据包发给下一跳路由器(如果网关自身就是一台路由器的话),如果网关是一台普通PC,那么它就发给路由器,让路由器把这些数据包正确传输到远程目标网络,到达远程网络后,它们的网关再将数据包发给数据包中的目标IP,即源主机A苦苦寻找的目标主机B,从而真正结束不同网络之间的通信,回应的数据包也是用同样的方法到达目的地,在这里,还需要注意的是,当网关把数据包发给下一跳路由器时,这个数据包必须由网关把目标MAC改成下一跳路由器的MAC地址(通过ARP得到),而源端MAC改成发出端口的MAC地址,否则下一跳路由器收到目标MAC不是自己的数据包,会丢弃不予理睬,下一跳路由器再发给下一跳路由器同样要把目标MAC地址改为下一跳路由器的MAC地址再发出去!

最后还可以总结出:在网段通信时,数据包中的地址就是源IP,目标IP,源MAC,目标MAC,根本用不到网关,而当检测到需要把数据包发到远程网络时,这时,目标MAC就必须改变了,在还没有出内网时,目标MAC必须写成网关的MAC地址发出去,当网关收到时,再把目标MAC地址改成下一跳的MAC地址发出去,同时源MAC地址要始终保持为发出端口的MAC地址(回应报文可以依靠它路由回去),而源IP及目标IP不曾改变(用于判断收到数据包的本机IP和数据包IP是否一致,若一致不转发),就算到达了公网上,目标MAC仍然在不断改变着,直到最后,这个数据包到达目标IP的网络,最终通信结束!

下面是个例子:Ping过程详细解

配置好路由器Route和pc0、pc1的IP地址以及网关

这个过程可以具体分为四个阶段:
一、pc0到Router阶段

1 、 ping 进程将调用因特网控制报文协议( ICMP ), ICMP 创建一个回应请求数据包;

2 、 ICMP 将这个有效负荷交给因特网协议( IP ),然后 IP 协议会创建一个数据包。这时,这个数据包将包含源 IP 地址、目的 IP 地址和值为 0x01 的协议字段。

3 、一旦数据包被创建, IP 协议将判断目的 IP 地址是处于本地网络中,还是处于一个远程网络中;

4 、由于 IP 协议断定这是一个远程请求,这个数据包需要被发送到默认网关,这样,   这个数据包才能路由到远程网络。本机注册表将被使用,以查找配的默认网关;

5、主机pc0的默认网关被配置为172.16.0.1 要能够发送这个数据包到默认网关,必须要知道路由器的FastEthernet0/0接口(其IP地址被配置为172.16.0.1)的硬件地址,因为只有这样,数据包才可以被下传给数据链路层并生成数据帧,

【注:】在本地局域网内,主机只可以通过硬件地址来进行通信, pc0 要想和 pc1 通信,它必须将数据包发送到本地网络中默认网关的 mac 地址上,这一点很重要。 mac 地址永远都应用于本地局域网,而绝不会通过路由器。

6 、接着, pc0 检查 arp 缓存,查看一个默认网关的IP地址是否已经解析为硬件地址,如果已经被解析,数据包就将被释放、传送到数据链路层并生成数据帧(目的方的硬件地址也将通数据包一同下传至数据链路层),要查看 pc0 主机上的 arp 缓存,可以使用下列命令:

PC>arp -a

Internet Address      Physical Address      Type

172.16.0.1            0004.9ade.a201      dynamic

如果这个硬件地址在 pc0 主机的 arp 缓存中尚未被解析,一个 arp 广播将被发送到本地网络,以搜索 172.16.0.1 的硬件地址,路由器会响应这个请求并提供 FastEthernet0/0 的硬件地址,接着 pc0 主机将缓存这个地址;

7、一旦这个数据包和目的方的硬件地址被交付给数据链路层,局域网驱动器将用来提供媒体访问以通过以太网,此时将会产生一个数据帧,使用控制信息来封转此数据包。在这个帧中包含有目的方和源方的mac地址,以及以太网类型字段。在本例中,这个协议为IP协议。在这个帧的结尾处是被称为帧校验序列(FCS)的字段,它是装载循冗余校验(CRC)计算值的区域。此数据帧还需要查询一些信息,即pc0的mac地址,以及作为目的方的默认网关的mac地址,但这里并不包括pc1主机的mac地址;

8 、数据帧完成封装以后,就会被交付到物理层,以一次一位的方式发送往物理媒体(在试验中是双绞线对);

9 、在冲突域中的每台设备将接收这些位并重建为帧。它们都运行 CRC 并核对保存在 FCS 字段中的内容,如果这   两个值不匹配,此帧将会被丢弃。

如果这个 CRC 值相吻合,那么就核查目的方的 mac 地址,如果匹配,那么路由器将将查看以太网类型字段,以了解在网络层使用的协议;

10 、数据包从数据帧中抽出,然后这个数据帧剩下的部分被丢弃,再把数据包传给以太网类型字段中列出的上层协议,在这里是传给 IP 协议;

11 、 IP 会接受这个数据包,并检查其目的 IP 地址,由于数据包的目的地址与接收路由器所配置的任一地址不相匹配,路由器将会在路由表中查看目的 IP 网络的地址;

12 、此路由表中必须包含有网络 172.16.1.0 的表项,否则此数据包会被立即丢弃,然后一个携带有 “destination network unavailable” 信息的 ICMP 包将被发送回发送方 pc0 ;

13 、如果路由器找到目的方的网络,数据包将被交换到输出接口,由于在被试验中所有网络都是直连的,因此没有必要使用主动路由协议;

二、Router到pc1阶段

14 、路由器将交换此数据包到 FastEthernet0/1 的缓冲区内;

15 、 FastEthernet0/1 的缓冲区需要了解目的方主机的 mac 地址,它首先检查 arp 缓存,

如果 pc1 的 mac 地址已经被解析并保存在路由器的 arp 缓存中,则这个数据包和 mac 地址将被传递到数据链路层并组成数据帧。下面是路由器的 arp 缓存:

Router#show arp

Protocol  Address           Age (min)  Hardware Addr   Type   Interface

Internet  172.16.0.1          -          0004.9ADE.A201  ARPA   FastEthernet0/0

Internet  172.16.0.2         35         0001.63BC.C8A7  ARPA   FastEthernet0/0

Internet  172.16.1.1          -          0004.9ADE.A202  ARPA   FastEthernet0/1

Internet  172.16.1.2          35        000C.8513.CAAB  ARPA   FastEthernet0/1

如果这个硬件地址尚未被解析,路由器将从 FastEthernet0/1 发送一个 arp 广播到请求,以查找  172.16.1.2 的硬件地址, pc1 会响应这个请求并提供硬件地址,接着路由器将缓存这个地址;然后这个包和硬件地址都会被发送到数据链路层并组成数据帧;

16 、数据链路层将使用这个目的方的源方的 mac 地址,以及以太网的类型字段和 FCS 来创建一个数据帧,这个帧将被

17 、 pc1 主机会接收到此帧,并立即运行 CRC ,如果运算结果与FCS字段的内容相匹配,这个目的mac地址将被检查,如果发现是匹配的,随后将检查以太网类型字段中的值,以判断应该将数据包上传给网络层的什么位置;

18 、在网络层, IP 会接收这个数据包,并检查其目的方的 IP 地址,由于他们是匹配的,数据包的协议字段将会被检查,以了解有效负荷应该交给谁;

三、pc1到Router阶段

19 、此有效负荷会交给 ICMP ,它将知道这是一个回应请求, ICMP 会应答这个请求,通过即可丢掉这个数据包并随之产生一个新的有效负荷来作为回应应答;

20 、随后创建的数据包中将包含源方和目的方的地址、协议字段和有效负荷。现在,目的方设备为 pc0 ;

21 、 IP 协议将判断目的 IP 地址是处于本地网络中,还是处于一个远程网络中 , 由于 IP 协议断定这是一个远程请求,这个数据包需要被发送到默认网关,这样,这个数据包才能路由到远程网络。本机注册表将被使用,以查找配的默认网关;

22 、在 pc1 的注册表中可以找到默认网关的 IP 地址,之后将查看 arp 缓存,以了解是否已经完成了从 IP 地址到 mac 地址的解析;

23 、一旦默认网关的 mac 地址找到,此数据包和目的方的 mac 地址都将被送往数据链路层,以完成数据帧的封转;

24 、数据链路层会封装数据包的内容,并在帧报头中包含以下内容:

目的方和源方的 mac 地址           在以太网类型字段中填充 0x0800 ( IP )      将 CRC 结果填入 FCS 字段

25 、这时,帧将会被传给物理层,并以一次一位的方式发送到网络媒体上;

26 、路由器的 FastEthernet0/1 接口会接收到这些位并重建为一个帧, CRC 校验被运行,帧的 FCS 字段被检验,以确认   两个结果是相符的;

27 、 CRC 检验通过之后,目的 mac 地址将被检查。由于路由器的接口同这个地址是想匹配的,数据包将被从这个帧中取出,   然后以太网类型字段将被检查,以了解数据包应该投递给网络层上的哪一个协议;

28 、由于协议被判断为 IP 。于是 IP 将得到这个数据包,首先 IP 将对IP报头运行CRC校验,然后检查目的方的 IP 地址;

29 、在这种情况下,路由器确实知道到达 172.16.0.0 的方式,这一输出的接口是 FastEthernet0/0 ,于是数据包将交换到接口 FastEthernet0/0 上;

四、Rouetr到pc0阶段

30 、路由器检查 arp 缓存,确定 172.16.0.2 的 mac 地址是否已经被解析;

31 、由于在将数据包传送到 pc1 的过程中, 172.16.0.2 的 mac 地址已经被缓存起来,因此,这一 mac 地址和数据包将被传递到数据链路层;

32 、数据链路层会使用这个目的方的 mac 地址和源 mac 地址,然后将 IP 放入以太网类

33、这个帧然后被传送到物理层,以一次一位的方式发送到本地网络;

34 、 pc0 将接收这个帧,运行 CRC 算法,检查目的方的 mac 地址,并查看以太网类型字段中的内容,以判断谁来处理这个帧;

35 、由于 IP 是被指定的接收者,随后这个数据包被传递给网络层的IP协议,它将检查包的协议字段,以确定进一步的操作,IP发现要将此有此有限负荷交给ICMP的指示,接着ICMP将确定此数据包是一个ICMP的应答回复包;

36 、 ICMP 通过发送一个感叹号(!)到用户接口来表明它已经接收到一个回复,在命令提示行下表现为收到报文,这之后, ICMP 会尝试继续发送 4 个应答请求到 pc1 。

3、一台路由器如何为不同网段设置网关

1、如果你是一个路由器的两个口去分别接两个交换机,一个交换机对应一个网段,那就是给接这个网段的路由器口设置一个IP地址,这个IP就是你那个网段的网关,一般会设这个网段开头或结尾IP,如192.168.0.1或192.168.0.254.。

2、路由器直连网络的数目和端口bai数目是一样du的,假设你要连A(zhi192.168.1.0/24)和B(192.168.2.0/24)2个不同的网络,路由器有以太口eth01和eth02;方法如下
一、在eth01口上配置A网络地址192.168.1.1,并启用端口,在eth02口上配置B网络地址192.168.2.1,并启用端口。
二、用网线连接到A网和B网的接入交换机上,A网中的终端设置网关为192.168.1.1,B网中的终端设置网关为192.168.2.1。2个网络中的终端就靠以互联了!

同网段及跨网段主机间通信原理相关推荐

  1. 同网段不同网段主机间通信原理

       在当今的以太网络通信中,在IP数据包中有两个必不可少的地址,那就是IP地址和网卡地址(即MAC地址),在数据包中,无论是IP地址还是MAC地址,都有源地址和目标地址,因为通信是双方的,所以就必须 ...

  2. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...

    前言:ARP协议是在链路层通讯中,已知目标IP地址,但是,仅有IP 地址是不够的,因为IP数据报必须封装成帧才能通过数据链路进行发送,而数据帧必须要有目的MAC地址,每一个网络设备在数据封装前都需要获 ...

  3. Vlan间通信原理(HCIA)

    学习目标: 一.了解Vlan间通信原理 1.二层vlan间通信: 2.三层Vlan间通信: 二.二层间vlan同网段通信 1.利用Access接口特性: 2.利用Trunk本征Vlan特性: 3.利用 ...

  4. ZooKeeper实战(一):ZooKeeper原理,详细安装步骤,基本命令,节点间通信原理

    回顾Redis 用redis实现分布式锁比较复杂,使用zookeeper会比较简单. 一.ZooKeeper介绍 官网 https://zookeeper.apache.org/ 概览文档 https ...

  5. 同一交换机不同网段的主机间通信问题

    出处:http://bbs.51cto.com/thread-467176-1.html 同一交换机不同网段的主机为什么不能通信?想不通!!大伙发表下意见. 没有创建VLAN,把PC的IP分别设置成不 ...

  6. ARP协议在同网段及跨网段下的工作原理

    一.ARP在同个网段下的工作原理 首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系.当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP ...

  7. ARP 协议工作原理(同网段及跨网段)

    目录 一.ARP简介 二.ARP的工作原理 三.ARP协议在同网段工作原理 四.ARP协议在不同网段工作原理 一.ARP简介 ARP全称是"Address Resolution Protoc ...

  8. 同一交换机不同网段的主机间通信

    没有创建VLAN,把PC的IP分别设置成不同网段的IP, 例如PC 1:192.168.1.1 ,PC 2:192.168.2.1 ,PC 3:192.168.3.1 他们之间为什么在同一网段下可以通 ...

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

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

最新文章

  1. 尚硅谷图解Java数据结构和算法一
  2. Redis:redis cluster的实现细节
  3. 如何禁用 Azure 虚拟机的日期时间同步
  4. lasso回归和岭回归_如何计划新产品和服务机会的回归
  5. mybatis 查询之神坑
  6. JAVA API----Date类
  7. 浙大三维视觉团队提出Animatable NeRF,从RGB视频中重建可驱动人体模型 (ICCV'21)
  8. 迁移性好、多用途,港中文提出特征分离的无监督人类三维姿态表征
  9. SLAM Cartographer(17)分支定界闭环检测
  10. 天下无难试之Redis面试刁难大全「原创」
  11. 大数据之-Hadoop_1.x和2.x区别---大数据之hadoop工作笔记0012
  12. AndroidStdio换源
  13. echarts地图插入图片
  14. 在计算机潮流计算的三类节点中,电力系统稳态分析复习(电管11) - 图文
  15. windows10视频缩略图不显示怎么办?
  16. 计算机里的硬盘分区,Disk Genius对电脑硬盘分区的详细步骤
  17. ROOT工具为漏洞利用大开“方便之门”
  18. python爬网络图片脚步_关于python:如何从本地计算机或网络资源将图像或图片嵌入jupyter笔记本中?...
  19. 详细阅读Spark论文
  20. ChatGPT百科全书(全网最全面)

热门文章

  1. CLRS 16.1活动选择问题
  2. #Oracle基础-常规操作上
  3. 安卓rom开发教程!安卓工程师跳槽经验分享,吐血整理
  4. 编辑已有excel文件
  5. eclipse2021版配置maven全过程(详细!!)
  6. Java 第 21 课 1200. 最小绝对差 539. 最小时间差
  7. 炬力2819蓝牙芯片不能回连oppo Reno2 Z问题分析
  8. AD7799称重系统
  9. 计算机 网络属性打不开,右击我的电脑属性打不开解决方法
  10. Linux中Shell脚本编程