首页 > 其他分享 >同网段及跨网段主机间通信原理

同网段及跨网段主机间通信原理

时间:2023-11-19 23:12:53浏览次数:32  
标签:网段 主机 地址 目标 间通信 MAC IP 数据包

在以太网络通信中,在 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 地址、目标 MAC 地址改为下一跳路由器的 MAC 地址再发出去!

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

标签:网段,主机,地址,目标,间通信,MAC,IP,数据包
From: https://www.cnblogs.com/jobyan/p/17842936.html

相关文章

  • 一次在某宝购买便宜虚拟主机的经历
    半年前花了10元在某宝买了个一年的虚拟主机。因为很便宜,所以一开始就抱着一种提防、随时准备丢弃的心理在用。平时只是用来中转一下零碎的小文件,记录一些碎片文字。 因为是香港的机子,刚开始用起来还是挺快的,总体上来说大部分时间都可以打开,中间只被攻击过几次。大概用了半年......
  • C/C++ 获取主机网卡MAC地址
    MAC地址(MediaAccessControladdress),又称为物理地址或硬件地址,是网络适配器(网卡)在制造时被分配的全球唯一的48位地址。这个地址是数据链路层(OSI模型的第二层)的一部分,用于在局域网(LAN)中唯一标识网络设备。获取网卡地址主要用于网络标识和身份验证的目的。MAC地址是一个唯一的硬件......
  • nginx的443端口+虚拟主机
    https配置端口:443生成证书文件;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@虚拟主机的配置内容server块虚拟主机:(一)虚拟主机概念虚拟主机指的是一台运行在因特网上的服务器主机分成了多台虚拟的主机,每台虚拟主机是一个独立的站点,虚拟主机可以具有独立的IP,独立的域名,独立的服务端口,......
  • 主机托管中的BGP是什么意思?BGP双线、多线、核心BGP和优质BGP
    BGP线路代表机房组Q运营商向各个ISP购买的是BGP链路。是需要996和ISP之间启用BGP协议的。一方面是39多线路资源。一方面是多429线路单一的IP地址。BGP双线一般是联通、电信。多线就是在联通电信基础上还有移动、科技、铁通、教育等等。核心BGP和优质BGP就是概念型的了。。没啥实际......
  • 云主机CPU和内存配比:优化资源分配的关键
    本文分享自天翼云开发者社区《云主机CPU和内存配比:优化资源分配的关键》,作者:每日知识小分享随着云计算技术的快速发展,云主机已经成为了许多企业和个人用户首-选的计算解决方案。在部署和配置云主机时,CPU和内存的配比是一个非常重要的考虑因素。本文将深入探讨云主机CPU和内存配比......
  • Linux进程间通信模式
    管道是一种单向传输数据的机制,它其实是一段缓存,里面的数据只能从一端写入,从另一端读出。如果想互相通信,我们需要创建两个管道才行。管道分为两种类型,“|”表示的管道称为匿名管道,意思就是这个类型的管道没有名字,用完了就销毁了。就像上面那个命令里面的一样,竖线代表的管道随着命令......
  • 阿贝云,免费虚拟主机,免费云服务器
    在做科研学习项目,学生党又没啥钱,租一个服务器又太贵了,就看看免费云服务器,刚好看到很多人在推荐阿贝云,就抱着尝试的心态试试,需要实名认证0.3毛,我就充了1元,本来想安装虚拟机,然后我就想安装windows的系统,我太天真了,免费云服务的配置还是别搞跑3台机子的事,然后还是安装了ubuntu16.04,......
  • 一台组态上位机如何访问两个不同网段IP的PLC设备
    一家小型污水处理厂现场有一座污水处理设备,通过PLC进行控制,IP地址是192.168.1.200;现在厂区扩建,新增一座PLC控制的污水处理设备,IP地址是192.168.0.10。企业希望通过一台组态上位机电脑实现对新旧两座污水处理设备的通信与监控,同时实现外网的快速访问与控制。对此,物通博联提供网段隔......
  • 弹性云主机支持多种规格
    本文分享自天翼云开发者社区《弹性云主机支持多种规格》,作者:每日知识小分享随着云计算技术的快速发展,弹性云主机已经成为了一种广泛使用的云计算服务。弹性云主机是一种可动态调整的计算资源,可以根据用户的需求进行灵活配置。其中,支持多种规格是弹性云主机的一项重要特性,它可以让......
  • 一个虚拟主机上放多个网站(asp.net)
    Asp.net不像Asp一样,建个文件夹就能放一个程序,互不干扰,为了让一个虚拟主机能放多个Asp.net,查找了不少资料,没有一个答案是完美的,不过有些资料倒给了我一些启发,通过思考,加上实践,终于探索出一个新路子,实现了能简单提出为一个网站,也能合并的方案。同时感谢菜菜灰的帮助,请看实现的效果首......