6000字加图文 | 抓包带你深入了解网关到底起什么样的作用?不同网段通信的过程详解

不同网段通信的过程

不同网段就分两种了,同一个局域网下面,不同网段之间的通信,或者是从局域网去往互联网的通信,那么这个过程又是怎么样的呢?

图片

还记得第二篇这个内容吗,访问者把数据交给网关,当时候是没有讲解这个里面的细节部分,这里就来填坑,之前介绍的时候省略掉了ARP的过程,那这里就用模拟器来还原下,由于现在还没学习过路由交换的知识点,这里简化下环境。

「模拟器、工具合集」复制整段内容
链接:https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab=7ulgil

图片

看到这个图是不是比较迷糊,由于我们还没学习路由的知识点,这次【出口路由器】与【互联网】这2个设备,我会提前打通,然后这个拓扑我也会发出来,先不用管中间怎么实现的,这个在后续是我们学习的重点,这里呢,我们把重点放在访问者在访问WEB服务器的时候,整个过程,这个对于后续学习路由技术很有帮助的。

(1)准备工作

检查下访问者以及WEB服务器的地址是否已经完成。

图片

这里说明下,我们关注的主要是访问者与服务器,但是服务器的提供的服务,每次重新打开模拟器是需要重新选择启动的,这个要注意下,然后检查下IP地址是否正确,出口路由器与互联网,暂时不去关心,并且在实际企业网部署中,运营商的网络由运营商自己维护,我们也管不着,运营商那边接通互联网,给予对应的对接信息,他们也不管你内网怎么去搭建跟规划的。(有的朋友可能在某些书籍或者实验里面发现运营商的网络也在其中,可能就迷糊了,但是实际中,运营商那边是不需要去管的,实验环境只是去模拟出来这样的效果,所以必须配置)

图片

(2)访问者访问WEB服务器,来看看IP规则规则

访问者(192.168.255.1/24)访问1.1.1.1的WEB服务,这个时候访问者通过掩码来计算两边是否同一个网络号,在同一个网段还是不同网段。

图片

(3)不在一个网段,怎么办呢?

访问者通过计算发现网络号不相同,不再一个网段,这个时候它就不知道该怎么把这个数据包发出去了,所以这里就需要介绍另外一个功能:默认网关 

图片

可能聪明的你发现了,当终端设备发现目标不再同一个网段的时候,它就把数据包交给网关进行处理,让网关把这个数据包发往目的地。想想平时上网,不管是电脑还是手机,在网卡属性里面都有IP、掩码、网关的参数,只要获取的正常就能够访问互联网,访问互联网的关键就是这个网关,终端设备把去往互联网的流量交给网关进行处理。可能有的朋友还不太理解,这个不要紧,随着学习的深入,这个会经常接触到,并且越发的理解网关的作用,这里记住,不同网段互通,必须依靠网关进行处理。

(4)网关在哪呢?

又回到了这一个问题,网关的IP知道了,通过读取网卡参数,那网关具体是链路中的哪台设备呢?

图片

上面这个环境只是简化的,可能192.168.255.0/24网段里面有许多的终端存在,访问者就无法确定哪台是网关设备了,所以回到分层的概念,在链路层以太网中,就用MAC地址来定位到具体的设备上,访问者只要知道了出口设备(192.168.255.254的MAC地址是多少,那自然就可以找到它了),可是访问者并不知道出口网关的MAC是多少,这就用刚讲的ARP协议,通过ARP广播请求,在该链路中发出去,出口路由器自然会收到然后通过ARP响应回复,这里我们来抓包看下。

图片

抓取路由器的G0/0/0

图片

打开访问者,客户端信息里面有一个HTTP Client的选型,输入服务器的地址1.1.1.1,点击获取

图片

网页已经打开成功了,这里我们不关心结果,来看看通信的过程。

图片

通过抓包可以发现,访问者(192.168.255.1)发送了ARP的请求包,询问192.168.255.254的MAC是多少,然后网关设备(192.168.255.254)回应了自己的MAC地址。访问者就把这个MAC地址存放在自己的ARP缓存里面(由于模拟器的问题,这个客户端是看不到ARP表项的)

图片

 (5)出口设备的处理方式

访问者在知道了网关的MAC地址以后,就可以定位到具体的设备,开始进行数据封装,然后发送给出口路由器。(从数据包封装的角度来看,如果二层的目的MAC不知道,是不是也无法完成封装)

图片

出口路由器收到以后,会进行解封装,读取以太网头部,通过目标MAC发现找的是自己,找自己的那就继续解封装,并且通过Type中包含的字段知道上层是IP,读取IP头部后,发现目的IP找的不是自己,那这个时候就分设备了,如果处理的设备是普通的PC、手机,这种是没有路由功能的,则会丢弃,但是如果是三层的网络设备,具有路由功能的,它会执行操作,查询

路由表,找到去往这个目的IP的应该交给谁处理。比如这里目的地址是1.1.1.1,路由器会查询自己路由表中是否有关于去往1.1.1.1的信息,知道则转发,不知道则丢弃。

图片

出口路由器查找路由表,发现有1.1.1.1的路由,交给2.2.2.2处理,也就是互联网。

(6)怎么找到互联网的设备呢?

出口路由器通过查询路由表导致交给互联网处理,但是并不知道2.2.2.2的设备是哪台,通常运营商的线路牵到企业走的是光纤线路,二层也是用的以太网协议,在以太网中,不用说大家都知道了,知道对方的MAC地址就能找到对方了,所以出口路由器也会发送ARP请求报询问2.2.2.2的MAC是多少,互联网路由器收到以后进行单播回应。

图片

出口路由器知道了2.2.2.2的MAC地址,通过封装把数据包重新打包(封装的二层源MAC是出口路由器G0/0/1接口的MAC,目标MAC是互联网G0/0/0接口的MAC)通过路由表条目信息发送给2.2.2.2(互联网设备)

(7)怎么找到互联网的设备呢?

互联网设备收到以后同样进行解封装,首先看MAC地址是找的自己,上层协议是IP,读取IP头部后,发现IP找到不是自己,同样的自己拥有路由功能,查询路由表,看这个数据包自己能否进行转发出去。

图片

互联网设备通过查询路由表发现1.1.1.1就在它的身后直连网络,于是互联网设备也会发送ARP报文请求来询问1.1.1.1的MAC是多少,然后WEB服务器收到后进行回应。 

图片

(8)WEB服务器收到数据后的处理

互联网设备处理完成后,开始进行封重新把数据打包发送给WEB服务器,WEB服务器收到以后,同样先查看以太网头部发现是自己,通过type知道上层协议是IP,读取IP头部后发现目的IP也是自己,继续上层解封装,直到读取到对应的数据。

(9)WEB服务器回包过程精简(跟来的时候相同)

  • WEB收到请求后,开始回应,这个时候IP头部的变化:源为自己(1.1.1.1),目的为访问者(192.168.255.1),以太网头部:源为自己,目的为互联网接口的MAC,因为WEB服务器也是通过子网掩码计算,发现192.168.255.1与自己不在同一个网段,交给1.1.1.2网关处理。

  • 互联网收到以后查询路由表,交给出口路由器处理

  • 出口路由器收到以后,继续查询路由表,发现192.168.255.1是身后直连网络,直接封装好数据包从这个口发送出去

图片

  • 访问者收到以后,通过层层的解封装,得到了服务器的响应,最终把这个内容呈现在了浏览器里面,变成我们能看懂的形式展现出来。

不同网段通信过程重点回顾

(1)当发起者通过自己的掩码计算出目的IP与自己不再同一个网段的时候,这个数据包会交给默认网关地址处理,如果没有默认网关地址则这个数据包会发送不出去,被丢弃。

(2)找到默认网关的目的MAC地址需要通过ARP协议来完成,否则不知道对方的MAC是多少,无法找到对方,也完成不了以太网头部的封装。(这个一定要切记,可能后续遇到故障,就是因为不知道对方的MAC地址是多少,通信不正常)

(3)网关路由器收到这个数据包的时候,它会看以太网的目的MAC是不是找的自己,如果是继续读取上层,IP目的地址找到不是自己,就通过查询路由表,查看是否有对应的信息条目,有的话则转发,没有则丢弃(路由表转发功能只有三层的网络设备才具有这样的处理功能,普通的PC、手机是不具备的,这个也是我们后面学习的重点)

(4)网关设备通过路由表找到下一台转发设备的信息,如果二层跑的是以太网,同样需要知道对方的MAC地址信息进行封装与链路定位,使用的方法也是ARP协议进行查找,然后把数据包重新封装三层、二层转发给下一台设备--互联网。

(5)互联网设备收到以后执行跟网关设备同样的操作,通过查询路由表知道目的地址在哪,这里目的地址为身后直连网络,所以互联网设备直接通过ARP协议查询到目的的MAC地址多少,然后重新封装数据包,交给服务器。

(6)服务器以后,通过层层解封装,最终读取到了应用层的数据。(解封装的过程要注意,读取到目的MAC为自己,就继续读取上一层,读取到IP目的地址为自己,继续读取上层,所以一个设备收到数据包是否继续解封装读取上层内容,取决于对应层里面的标识是否是自己)

(7)回包的过程跟来的过程一样,同样是服务器层层封装数据包后交给默认网关----中间三层设备解封装到IP头部信息查找路由表查找目的地,然后重新封装,继续转发,这样到达目的地,访问者收到后层层解封装,最终把读取的网页数据,呈现在浏览器里面。

图片

(8)有一个很关键的细节地方,不知道大家有没有发现,IP头部虽然在中间路由器解封装进行读取对应的目的IP参数来查询路由表,但是在重新封装的时候源目IP信息是保持不变的,因为这个目的IP是到达对方的关键,不能被修改。同样以太网头部也被解封装进行读取了,读取的原因是通过目的MAC来判断是否找的是自己,但是你会发现,在重新封装的时候,源目MAC地址是发生了变化的,因为不同链路之间的信息是不一样的,访问者到出口路由器,以太网头部的源是访问者,目标MAC是出口路由器,是为了在这个链路中找到出口路由器的链路位置,出了这个链路范围这个信息就没用了,到了出口路由器到互联网这段链路上,会发现出口路由器会把源MAC变成自己(1号接口的MAC),目的MAC为互联网(2.2.2.2)的,如果还保持着之前的访问者到出口路由器的话,从数据包解封装读取的过程,互联网发现这个MAC不是找自己的,那不就给丢掉了,同样WEB服务器收到了也不直接丢弃,更不会去看IP头部信息了,所以整体的通信过程中,源目IP地址保持不变,源目MAC每经过一个三层设备,是会变成该链路上对应设备的MAC地址信息,只有这个信息才能够在这个链路上找到正确的目标设备,以及对方收到后才能能够正常解封装处理上层的内容进行下一步的操作。

上面那段话可能有点难理解,来举一个生活中的例子

博主8月份准备去四川凉山旅游(媳妇的闺蜜在那,喊了她几次了,这次正好闺女也放假,一起去),通过APP查询,没有直通的车,都需要中转,需要先做高铁到始发站、火车、班车才能抵达目的地,这些需要的车票都通过APP已经订好,做好了行程表规划。

把高铁票、火车票、班车票,每张票只能够在限定的区域内移动,这个区域是不是就跟数据链路层一样,区域内的出发点相当于源MAC,目标地址相当于MAC地址。

图片

整个旅游的行程表是不是就相当于网络层一样,充当定位的功能,起始点相当于源IP,终端相当于目的IP地址。如果整个行程中,只有行程表而没有对应的车票,无法通过这些交通工具抵达目的地,同样,如果只有车票没有行程表,那也抵达不了目的地,因为不知道目标怎么走,需要做什么车,中间怎么换乘。

所以,最终两者配合,既有某个区域的车票又有整个旅游的行程表,才能抵达最终目的地,同样在计算机网络通信中也是一样,通过数据链路层与网络层的对应分层配合实现了最终目的地的通信互访。

整个旅途中不断变化的是交通工具,但是整个旅途的出发点与目标终点保持不变,这就对应了上面提到的,源目IP地址在传输过程中不会变化,只有源目MAC每经过一个链路区域就发生变化。另外同一个链路区域内的转发就依靠的是二层设备(通过MAC地址表进行查询,然后交给对应接口下的终端),不同区域内的数据转发依靠三层设备(通过路由表查询,交给下一个转发设备或者最终目的地处理)。

结合抓包验证理论 

图片

分别抓取这三个接口的包,来看看以太网的包,是不是如上面说的发生了变化。(服务器的没法抓)

图片

这里简单点,就Ping一下好了,次数1,如果觉得开三个抓包,分不清楚哪个是哪个的话,可以分别抓,开一个窗口ping 一次。

图片

三个链路区域的源目MAC都是变化的,源目IP一直没变。

Windows命令行学习

在实际中不能只会配置网络设备,对于常见的Windows命令使用也得掌握,这样对于我们排错或者查看来说是方便很多的。

(1)进入CMD,通过win键+R组合调用出来运行,然后输入cmd回车

图片

(2)查看IP、子网掩码、网关等信息

图片

通过输入ipconfig可以查看对应网卡上面的IP地址、掩码、网关等信息,但是看不到MAC地址

图片

 输入ipconfig /all可以看到Windows上所有主机的更加详细的信息,包括网关等参数。

(3)查看ARP缓存表

图片

可以通过arp -a来查看当前主机的ARP缓存,验证是否正确,通常排错的时候会使用,如果发现错误,可以通过arp -d来清空ARP缓存,也可以使用arp -s来静态绑定(通常会绑定网关),删除某个静态绑定也是通过arp -d后面跟明细。

(4)其他小经验分享 

图片

有一个小经验,像Windows系统都带有帮助介绍的,通过ipconfig / 直接回车,Windows识别不出来完整的命令,会把所有的格式跟命令都介绍出来。

小提问

假设一个网络中,本身已经有一台电脑或者设备使用了192.168.1.1的地址,但是由于使用人员不懂计算机网络知识,他也把自己的电脑设置成了192.168.1.1,会惊奇的发现,Windows系统会出现IP地址冲突提示,那么这台主机它是怎么知道地址冲突了的呢?

“承上启下”

至此IP地址、子网掩码、网关、同网段以及不同网段的通信的作用与过程,也把第二篇的链路层与网络层的细节都填补上了,这些内容一次肯定是不能全部吸收的,建议学完后面的知识点后在把前面这些知识点过一次,会有更深入的理解(也可以配合视频一起看,效果更佳),下一篇我们来填补下这次用到一个协议,ICMP,看看它有什么的作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/467375.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gpt4.0最新保姆级教程开通升级

如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布,最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型:Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus,每个模型都展现了卓越的性能与特色。其中&a…

Python毕业设计选题:基于django+vue的网上购物系统的设计与实现

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 商品类型管理 商品信息管理 系统管理 订单管理…

uniapp组件实现省市区三级联动选择

1.导入插件 先将uni-data-picker组件导入我们的HBuilder项目中&#xff0c;在DCloud插件市场搜索uni-data-picker 点击下载插件并导入到我们的项目中 2.组件调用 curLocation &#xff1a;获取到的当前位置&#xff08;省市区&#xff09; <uni-data-picker v-slot:defa…

关于Flutter空安全升级方案整理

前言 Flutter 从 2.0 版本开始支持空安全&#xff08;Null Safety&#xff09;。dart 版本为&#xff1a; environment:sdk: ">2.12.0 < 3.0.0"升级到空安全后&#xff0c;由于语法的变动&#xff0c;基本上整个工程&#xff0c;代码都爆红&#xff0c;这对项…

免费送源码:Java+ssm+MySQL ssm家电售后服务 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对家电售后服务等问题&#xff0c;对家电售后…

共享汽车管理新纪元:SpringBoot框架应用

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

yaml文件编写

Kubernetes 支持YAML和JSON格式管理资源 JSON 格式:主要用于 api 接口之间消息的传递 YAML 格式;用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化容易读懂 一&#xff0c;yaml语法格式 1.1 基本语法规则 使用空格进行缩进&#xff08;不使用制表符&#xff0…

ssm071北京集联软件科技有限公司信息管理系统+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;北京集联软件科技有限公司信息管理系统 \ 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本信息…

满足大众需求的理想选择:1000平米气膜羽毛球馆—轻空间

随着全民健身热潮的兴起和羽毛球运动的广泛普及&#xff0c;越来越多的企事业单位、学校以及社区开始寻求适合的大型羽毛球场地。对于大众需求者而言&#xff0c;如何在有限的预算和时间内建设一个高效且灵活的羽毛球馆&#xff1f;1000平米气膜羽毛球馆正是应运而生的理想解决…

原生鸿蒙应用市场:赋能开发者全生命周期服务体验

文章目录 背景自动化检测前移&#xff1a;早发现&#xff0c;早解决技术细节&#xff1a;静态代码分析与兼容性测试应用场景 按需加载&#xff1a;优化性能&#xff0c;提升用户体验技术细节&#xff1a;模块化与懒加载实现应用场景 应用加密&#xff1a;保护应用代码安全&…

vue3组合式API下封装hooks使用生命周期,在await之后调用hooks会有警告

起因&#xff1a;想封装一个hooks实现echarts图表随屏幕大小resize并且组件销毁时移除监听。结果在组件里面调用这个hooks&#xff0c;有个告警提示 [Vue warn]: onBeforeUnmount is called when there is no active component instance to be associated with. Lifecycle inje…

wget命令之Tomcat(三)

引言 Tomcat是一个开源的Java Web应用服务器&#xff0c;实现了多个关键的Java EE规范&#xff0c;包括Servlet、JSP&#xff08;JavaServer Pages&#xff09;、JavaWebSocket等。由于Tomcat技术先进、性能稳定且免费&#xff0c;它成为了许多企业和开发者的首选Web应用服务器…

【机器学习】决定系数(R²:Coefficient of Determination)

决定系数&#xff0c;也称为 R 平方&#xff0c;是一种用于衡量回归模型预测效果的统计指标。它表示了模型解释目标变量总变异的程度&#xff0c;数值介于 0 和 1 之间&#xff0c;数值越接近 1 表明模型的解释力越强。 1. 的定义和公式 的公式如下&#xff1a; 其中&#xf…

Cross Modal Transformer: Towards Fast and Robust 3D Object Detection

代码地址 https://github.com/junjie18/CMT 1. 引言 在本文中&#xff0c;我们提出了Cross-Modal Transformer&#xff08;CMT&#xff09;&#xff0c;这是一种简单而有效的端到端管道&#xff0c;用于鲁棒的3D对象检测&#xff08;见图1&#xff08;c&#xff09;&#xf…

十四、Linux线程(一)

1.守护进程 1.守护进程的特点 是后台服务进程 独立于控制终端 周期性执行某任务 不受用户登录注销影响 一般采用以d结尾的名字&#xff08;服务&#xff09; 2.进程组 进程的组长&#xff1a; 组里边的第一进程 进程组的ID进程中的组长的ID 进程中组长的选择&#xff1…

多模态数字人AI产品正在革新金融业,解密头部银行、证券公司都在用的AI工具

在人工智能迅猛发展的时代背景下&#xff0c;金融业正迎来一场深刻的变革。 多模态的人工智能&#xff0c;以其独特的魅力&#xff0c;正在重塑金融行业的格局&#xff0c;为金融服务带来前所未有的新想象。从今年以来行业对AI技术的探索与实践中&#xff0c;AIGC 3D数字人多模…

多态性核SSR的鉴定

多态性核SSR的鉴定 文章目录 多态性核SSR的鉴定前言一、使用bwa对测序数据进行mapping二、使用SOAPdenovo2对核序列进行从头组装成scaffolds三、使用CandiSSR寻找多态性核SSR3.1. 安装CandiSSR软件的准备3.2. 运行CandiSSR时的准备3.3. 整理得到的结果文件 四、统计Contig的数量…

【AIGC探索】AI实现PPT生产全流程

AI实现PPT生产流程 简单概括流程就是&#xff1a; 选择用百度文库AI生成PPT&#xff0c;使用WPS和islide辅助美化&#xff0c;使用文字大模型生成大纲&#xff0c;使用宏指令快速规范细节。 理由如下&#xff1a; 大多数PPT工具生成大纲会有文字篇幅限制&#xff0c;通过大模型…

鸿蒙ArkTS中的获取网络数据

一、通过web组件加载网页 在C/S应用程序中&#xff0c;都有网络组件用于加载网页&#xff0c;鸿蒙ArkTS中也有类似的组件。   web组件&#xff0c;用于加载指定的网页&#xff0c;里面有很多的方法可以调用&#xff0c;虽然现在用得比较少&#xff0c;了解还是必须的。   演…

数学建模(基于Python实现)--灰色关联分析法讲解,含案例

前言 这是去年底学数学建模老哥的建模课程笔记&#xff1b; 未来本人将陆陆续续的更新数学建模相关的一些基础算法&#xff0c;大家可以持续关注一下&#xff0c;主要在于运用&#xff1b; 提示&#xff1a;数学建模只有实战才能提升&#x1f525;​&#x1f525;​&#x1f…