想出网关?你需要明白这些

想出网关?你需要明白这些

HTTP是如何使用TCP连接

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

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 网关。

转发网关

先来说一下转发网关:

 

想出网关?你需要明白这些

 

100个网络基础知识普及,涉及到网络80%基础知识点

 

如图,我们能够看到,服务器 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 来举行才可以。

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

参考:

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

开启IPv6,让你的局域网可以使用IPV6进行共享文件夹的访问

分享到 :
相关推荐

发表评论

登录... 后才能评论