您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

想出网关?你需要懂得这些

时间:2020-01-05 10:51:21  来源:  作者:

最近没事在看极客时间上刘超老师的《趣谈网络协议》那门课程,其中有一篇讲得非常有意思,也有些难以理解,我以我的角度来谈谈。

mac 头和 IP 头细节

想要跨网段访问的话,有一关是必须要过的:网关( Gateway )

配置好 IP 地址和网关之后,就能够自由访问上网了,想访问哪儿网站就访问哪儿个网站,各种浪。但是在进行跨网访问的时候,会牵扯到 MAC 地址和 IP 地址的变化,所以咱们先来知道一下 MAC 头和 IP 头的细节。

MAC 头和 IP 头的细节(画的不是太好哈):

 

想出网关?你需要懂得这些

 

 

简单来说一下内容:

目标 MAC 地址和源 MAC 地址应该不需要说明什么了,协议类型是为了说明里面是 IP 协议

版本( Version ):占 4 位,用来表明 IP 协议实现的版本号,目前来说主流还是 IPV4

服务类型 TOS ( Type of Service ):占 8 位,其中前 3 位比特为优先权字段,第 8 位保留未用,第 4 至 7 位分别代表延迟,吞吐量,可靠性和花费。

总长度:占 16 位,说明整个数据报的长度(以字节为单位),最大长度为 65535 字节

标识:占 16 位,用来唯一标识主机发送的每一份数据报,通常每发一份报文,它的值会加 1

标志:占 3 位,标志一份数据报是否要求分段

片偏移:占 13 位,如果一份数据报要求分段的话,该字段指明该段偏移距原始数据报开始的位置

生存期 TTL ( Time to Live ):占 8 位,用来设置数据报最多可以经过的路由器数,由发送数据的源主机设置,通常为 32,64,128 等。没经过一个路由器,它的值减 1,直到 0 时该数据报被丢弃。

协议:占 8 位,用来说明 IP 层所封装的上层协议类型,如 ICMP( 1 ), IGMP( 2 ), TCP( 6 ), UDP( 17 )等。 首部校验和:占 16 位,根据 IP 头部计算得到的校验和码。

源 IP 地址,目标 IP 地址:各占 32 位,用来标明发送 IP 数据报文的源主机地址和接收 IP 报文的目标主机地址。

在任何一台机器上,如果想要访问另一个 IP 地址时,都会先判断,要访问的目标 IP 地址,与当前机器 IP 地址是否在同一个网段内。

如果是同一个网段,这就好说了,直接将源地址和目标地址放入到 IP 头中,然后通过 ARP 得到 MAC 地址,将源 MAC 和目标 MAC 放入 MAC 头中,发出去就 OK 了。

但是如果不是同一个网段呢,这就需要发往默认网关 Gateway 了。Gateway 的地址一定是和源 IP 地址是同一个网段的,如果不是第一个,就是第二个。比如, 192.168.1.0/24 这个网段,Gateway 一般就是 192.168.1.1/24 或者 192.168.1.2/24 。因为网关和源 IP 地址在同一个网段内,所以发给 Gateway 的过程和上面同一个网段的过程是一样的。网关接收到之后,接下来怎么处理就是它自己的事情了。

做了上面那么多的铺垫,终于来到了今天想要说的主要内容:网关是怎么将数据跨网段发送出去的。因为在这里面涉及到了 IP 地址和 MAC 地址的变化。

MAC 地址是在一个局域网内才有效的地址,所以 MAC 地址只要经过网关,就一定会改变,因为经过网关就意味着换了局域网。主要在于 IP 地址是否改变。如果 IP 地址不改变,那我们就将网关称为转发网关;如果 IP 地址改变,则将网关称为 NAT 网关。

转发网关

先来说一下转发网关:

 

想出网关?你需要懂得这些

 

 

如图,我们能够看到,服务器 A 的 IP 地址为 192.168.1.101/24 ,服务器 B 的 IP 地址为 192.168.4.101/24 ,现在服务器 A 想要访问服务器 B,不在同一个网段内,怎么办呢?肯定要经过网关的,对吧(因为 IP 头和 MAC 头里面的内容太多了,在这里主要写出 MAC 和 IP 内容)

此时,服务器 A 会给路由器 A 发送这样的内容:

源 MAC :服务器 A 的 MAC
目标 MAC : 路由器 A 的 MAC
源 IP : 192.168.1.101 (即服务器 A 的 IP )
目标 IP : 192.168.4.101 (即服务器 B 的 IP )

路由器 A 接收到内容之后,发现是想访问 192.168.4.0/24 的,根据配置的路由规则,将要发送的内容通过 192.168.2.1 这个口发送出去,发送给路由器 B 的内容是这样的:

 

源 MAC :路由器 A 的 MAC
目标 MAC : 路由器 B 的 MAC
源 IP : 192.168.1.101 (即服务器 A 的 IP )
目标 IP : 192.168.4.101 (即服务器 B 的 IP )

路由器 B 接收到了来自路由器 A 的内容,它发现是想访问 192.168.4.0 这个地址,根据配置的路由规则,需要从 192.168.4.1 这个口出去,这样就能发给服务器 B,此时路由器 B 发送的包是这样的:

 

源 MAC :路由器 B 的 MAC
目标 MAC : 服务器 B 的 MAC
源 IP : 192.168.1.101 (即服务器 A 的 IP )
目标 IP : 192.168.4.101 (即服务器 B 的 IP )

至此,服务器 A 发送的内容就到达了服务器 B 。

咱们来总结一下以上内容:在转发网关下,我不 care 其他的,我只知道我要发给哪儿个 IP ,所以在整个过程中,源 IP 和目标 IP 都没有发生改变。

NAT 网关

接下来咱们来说说 NAT 网关。照例,上个图:

 

想出网关?你需要懂得这些

 

 

有没有发现一个问题,服务器 A 的 IP 地址是 192.168.1.101 ,要访问的服务器 B 的地址也是 192.168.1.101 ,如果只是看 IP 地址的话,是不是饶了一圈发现,这不就是自己访问自己嘛?惊不惊喜。

但是实际上服务器 A 在北京,服务器 B 在上海,两个地方有一个相同的 IP 地址罢了。问题就来了,服务器 A 怎么就可以访问到服务器 B 了呢?

就像上海人说上海话,北京人说北京话,一个区域内大家都听得懂,但是如果北京人跑到上海去,想要交流怎么办呢?说普通话呗,对不对。在网络中也可以这样做。既然这两个局域网之间没有商量过,各自使用各自的,内部使用的话这都没事儿,但是如果想要在外面也走的开,就需要制定规则。也就是说,路由器 A 和 B 在外网上需要有一个大家都公认的身份。

在图中我们能够看到路由器 A 在公网上的身份是 192.168.2.1/24 ,路由器 B 在公网上的身份是 192.168.2.2/24 。有了公认的身份之后,来看看接下来发送的内容:

服务器 A 发送给路由器 A 的内容:

源 MAC :服务器 A 的 MAC
目标 MAC : 路由器 A 的 MAC
源 IP : 192.168.1.101 (即服务器 A 的 IP )
目标 IP : 192.168.2.2 (即路由器 B 的公网 IP )

路由器 A 接收到内容之后,根据配置的路由规则,通过 192.168.2.1/24 发送给路由器 B ,此时发送的内容为:

 

源 MAC :路由器 A 的 MAC
目标 MAC : 路由器 B 的 MAC
源 IP : 192.168.2.1 (即路由器 A 的公网 IP )
目标 IP : 192.168.2.2 (即路由器 B 的公网 IP )

内容到达路由器 B 之后,根据它的配置规则,发现是想要发送给服务器 B 的,此时:

 

源 MAC :路由器 B 的 MAC
目标 MAC : 服务器 B 的 MAC
源 IP : 192.168.2.1 (即路由器 A 的公网 IP )
目标 IP : 192.168.1.101 (即服务器 B 的公网 IP )

至此,服务器 A 发送的内容就到达了服务器 B 。

咱们来总结一下以上内容:在 NAT 网关下, MAC 地址和 IP 地址都是会改变的。 MAC 地址还好理解一些,要发送给谁,那么目标 MAC 地址就是要发送的机器 MAC 地址即可。但是 IP 地址如果是跨网段访问,则都需要通过公网 IP 来进行才可以。

以上就是想要分享的内容,感谢您的阅读~

参考:

极客时间:《趣谈网络协议》



Tags:网关   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
写一个shell获取本机ip地址、网关地址以及dns信息。经常会遇到取本机ip、网关、dns地址,windows一个命令ipconfig /all全部获取到,但linux系统却并非如此。linux系统都自带ifc...【详细内容】
2021-12-27  Tags: 网关  点击:(2)  评论:(0)  加入收藏
按照现在主流使用微服务架构的特点,假设现在有A、B、C三个服务,假如这三个服务都需要做一些请求过滤和权限校验,请问怎么实现?...【详细内容】
2021-11-01  Tags: 网关  点击:(33)  评论:(0)  加入收藏
有好多人问过我:网关是不是就是路由器!?虽然在许多网络中,路由器充当了网关的角色,但这两个概念并不等同。路由器:将数据包从一个网络转发到另一个网络的网络设备。基于内部路由表...【详细内容】
2021-10-22  Tags: 网关  点击:(27)  评论:(0)  加入收藏
一、组网需求外网接口使用专线,由运营商分配指定的静态地址,内网为192.168.1.0/24网段,实现基本上网功能。 二、网络拓扑 假设运营商分配的地址如下:网段: 202.1.1.8/29分配ip地...【详细内容】
2021-06-24  Tags: 网关  点击:(502)  评论:(0)  加入收藏
一、Zuul简介Zuul相当于是第三方调用和服务提供方之间的防护门,其中最大的亮点就是可动态发布过滤器二、Zuul可以为我们提供什么1、权限控制2、预警和监控3、红绿部署、(粘...【详细内容】
2021-04-21  Tags: 网关  点击:(230)  评论:(0)  加入收藏
随着互联网技术的飞速发展,各类线上业务蓬勃发展,软件系统如雨后春笋般呈现在我们面前。 图片来自 Pexels为了提高系统的性能和可靠性,将应用服务进行拆分微服务化。作为系统入...【详细内容】
2021-04-07  Tags: 网关  点击:(174)  评论:(0)  加入收藏
在微服务架构中,不同的微服务可以有不同的网络地址,各个微服务之间通过互相调用完成用户请求,客户端可能通过调用N个微服务的接口完成一个用户请求。因此,在客户端和服务端之间...【详细内容】
2021-04-02  Tags: 网关  点击:(249)  评论:(0)  加入收藏
物联网的许多应用实现不完全依赖于云平台,边缘计算技术可以实现物联网应用产生更快速的网络响应,满足行业应用在实时业务、应用智能、安全与隐私保护等方面的需求。2020 年全...【详细内容】
2021-01-18  Tags: 网关  点击:(91)  评论:(0)  加入收藏
何为云原生随着云计算的应用普及,最近几年,云原生技术(Cloud Native)的概念很火。Pivotal公司的Matt Stine于2013年首次提出云原生的概念;云原生的具体含义在过去的几年中也在不...【详细内容】
2021-01-11  Tags: 网关  点击:(107)  评论:(0)  加入收藏
今天谈下对API网关接入的接口服务进行安全管理方面的内容。在原来谈Kong网关的时候,曾经谈到Kong网关和安全相关的插件能力,其中包括了身份认证插件:Kong提供了Basic Authenti...【详细内容】
2020-12-30  Tags: 网关  点击:(108)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(5)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条