小白网-奉贤部落-奉贤免费信息发布平台

查看: 13|回复: 0
打印 上一主题 下一主题

6000字加图文|抓包带你深入了解网关到底起什么样的作用?

[复制链接]

2万

主题

2万

帖子

7万

积分

论坛元老

Rank: 8Rank: 8

积分
78182
跳转到指定楼层
楼主
发表于 2025-7-26 12:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:一日推出微信官方账号:网络路博(ID: Network Blog)不同网段的交流过程
不同网段有两种,同一局域网下不同网段之间的通信,或者局域网到互联网的通信。这个过程呢?
还记得第二篇里的这个内容吗,访问者把数据交给网关的时候,没有说明里面的细节,就把这里的洞填上了。前面的介绍中省略了ARP过程,这里我们就用模拟器来还原一下。由于我们还没有学习路由交换的知识,这里就简化一下环境。
看到这个图是不是很困惑?因为我们还没有学过路由的知识,所以这次我会提前把【出口路由器】和【互联网】这两个设备打通,然后我会把这个拓扑发出去,不管中间是怎么实现的。这是我们后续研究的重点。在这里,我们重点介绍了访问者访问WEB服务器的全过程,这对后续学习路由技术很有帮助。
(1)准备工作
检查访问者和WEB服务器的地址是否已经完成。
在这里,我们主要关注的是访问者和服务器,但是每次模拟器重新打开时,服务器提供的服务都需要重新启动。注意这个,然后检查IP地址是否正确,导出路由器和互联网,暂时不用在意。在实际的企业网络部署中,运营商的网络是运营商自己维护的,我们控制不了。运营商连上互联网,给出相应的对接信息,他们才不管你的内网是怎么建的,怎么规划的。(有些朋友可能会在一些书上或者实验中找到运营商的网络,可能会很困惑,但实际上运营商是不需要管的,实验环境只是模拟这样的效果,所以必须配置。)
(2)访问者访问WEB服务器以查看IP规则。
访问者(192.168.255.1/24)访问1.1.1.1的WEB服务。此时,访问者使用掩码计算双方的网络号是否相同,是在同一网段还是不同网段。
(3)不在一个网段,怎么办?
通过计算,访问者发现网络号不同,不再有网段。这个时候他不知道这个数据包是怎么发送的,那么这里就需要引入另一个功能:默认网关。
你可能会聪明的发现,当终端设备发现目的地已经不在同一个网段时,会把包交给网关处理,让网关把包发给目的地。想想平时上网。不管是电脑还是手机,网卡的属性里都有IP,掩码,网关参数。只要正常收购,就可以上网。接入互联网的关键就是这个网关,终端设备把上互联网的流量交给网关处理。可能有些朋友不太理解,但是没关系。随着学习的深入,这个会经常接触,越来越了解gateway的作用。这里,记住,不同的网段必须依赖网关进行处理。
(4)关口在哪里?
回到这个问题,网关的IP是已知的。通过读取网卡参数,链路中的哪个设备是网关?
以上环境只是简化。192.168.255.0/24网段内可能有很多终端,访问者无法确定哪一个是网关设备。回到分层的概念,在链路层以太网中,MAC地址用于定位特定设备。只要访问者知道出口设备的MAC地址(192.168.255.254)然而,访问者不知道出口网关的MAC,所以他们使用刚才提到的ARP协议,通过ARP广播请求,并在这个链接中发送出去。出口路由器自然会收到,通过ARP响应回复。来,我们把包拿过来看看。
抓取路由器的G0/0/0
打开访客。在客户端信息中有一个HTTP客户端的选择。输入服务器在1.1.1.1的地址,然后单击获取。
网页已成功打开。我们不在乎结果。我们来看看沟通过程。
通过抓包可以发现,访问者(192.168.255.1)发送了一个ARP的请求包,询问192.168.255.254的MAC是什么,然后网关设备(192.168.255.254)回复了自己的MAC地址。访问者将MAC地址存储在自己的ARP缓存中(由于模拟器的问题,客户端看不到ARP条目)。
(5)出口设备的加工方法
访问者知道网关的MAC地址后,就可以定位特定的设备,开始数据封装,然后发送到出口路由器。(从包封装的角度来说,如果2层的目的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请求,询问MAC在2.2.2.2是什么,上网路由器收到后会给出单播响应。
出口路由器知道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和自己不在同一个网段。
  • 互联网收到后查询路由表,交给出口路由器处理。
  • 路由器收到后,继续查询路由表,发现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是出口路由器,为了找到出口路由器在这个链路中的链路位置。这个信息在这个链接范围之外是没有用的。当你到达出口路由器和互联网的链接时,你会发现出口路由器会把源MAC改成自己的(接口1的MAC),目的MAC是互联网(2.2.2.2)。如果你还留着之前的访客到出口路由器,从数据包解封和读取的过程中,互联网会发现这个MAC不是给自己的,所以会丢失。同样,WEB服务器在收到IP头信息后也不会直接丢弃,所以在整个通信过程中,源IP地址保持不变。源MAC每经过一个三层设备,就会变成链路上对应设备的MAC地址信息。只有这些信息才能在这条链路上找到正确的目标设备,对方收到后才能正常解包处理上层内容进行下一步操作。
    上面这一段可能有点难以理解。我举个生活中的例子吧。
    博主准备8月份去四川凉山旅游(媳妇的闺蜜在,给她打了好几次电话,这次女儿放假,我们一起去)。通过APP查询,没有直通车,都需要换乘。需要坐高铁到始发站,火车,班车,才能到达目的地。这些需要的票已经通过APP预定好了,行程也已经规划好了。
    高铁票、火车票、火车票只能在限定区域内移动。这个区域是不是就像数据链路层一样,起点相当于源MAC,目的地址相当于MAC地址?
    整个旅游的行程是不是相当于网络层,起定位作用,起点相当于源IP,终点相当于目的地IP地址?如果整个行程中只有行程单而没有相应的车票,那么这些交通工具是无法到达目的地的。同样,如果只有车票而没有行程单,你是无法到达目的地的,因为你不知道怎么去目的地,不知道需要坐什么车,不知道中间怎么转车。
    所以最后在两者的配合下,只有拥有了某个区域的机票和整个游览的行程,才能到达最终的目的地。在计算机网络通信中也是如此。通过数据链路层和网络层相应的分层协作,实现最终目的地的通信互访。
    交通工具在整个旅程中不断变化,但整个旅程的起点和终点保持不变,与上面提到的相对应。在传输过程中,源IP地址和目的IP地址不会改变,只有源MAC和目的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,看看有没有。
    作者:一天,公众号:网络之路博客(ID:NetworkBlog)。让你的网络之路不在孤单,一起学习,一起成长。
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-8-22 00:24 , Processed in 0.059891 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表