关于java:IP-基础知识全家桶45-张图一套带走

25次阅读

共计 12662 个字符,预计需要花费 32 分钟才能阅读完成。


前言

前段时间,有读者心愿我写一篇对于 IP 分类地址、子网划分等的文章,他反馈经常混同,摸不着头脑。

那么,说来就来!而且要盘就盘全一点,顺便挑战下小林的图解功力,所以就来个 IP 基础知识全家桶

吃完这个 IP 基础知识全家桶全家桶,包你撑着肚子喊出:“真香!

不多说,间接上菜,共分为 三道菜

  • 首先是前菜「IP 根本意识」
  • 其次是主菜「IP 地址的基础知识」
  • 最初是点心「IP 协定相干技术」

注释

前菜 —— IP 根本意识

IP 在 TCP/IP 参考模型中处于第三层,也就是 网络层

网络层的次要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。

网络层与数据链路层有什么关系呢?

有的小伙伴分不清 IP(网络层)和 MAC(数据链路层)之间的区别和关系。

其实很容易辨别,在下面咱们晓得 IP 的作用是主机之间通信中的,而 MAC 的作用则是实现「直连」的两个设施之间通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输。

举个生存的栗子,小林要去一个很远的中央旅行,制订了一个行程表,其间需先后乘坐飞机、地铁、公交车能力到达目的地,为此小林须要买飞机票,地铁票等。

飞机票和地铁票都是去往特定的地点的,每张票只可能在某一限定区间内挪动,此处的「区间内」就如同通信网络中数据链路。

在区间内挪动相当于数据链路层,充当区间内两个节点传输的性能,区间内的出发点好比源 MAC 地址,指标地点好比目标 MAC 地址。

整个游览行程表就相当于网络层,充当近程定位的性能,行程的开始好比源 IP,行程的起点好比目标 IP 地址。

如果小林只有行程表而没有车票,就无奈搭乘交通工具达到目的地。相同,如果除了车票而没有行程表,恐怕也很难达到目的地。因为小林不晓得该坐什么车,也不晓得该在哪里换乘。

因而,只有两者兼备,既有某个区间的车票又有整个旅行的行程表,能力保障达到目的地。与此相似,计算机网络中也须要「数据链路层」和「网络层」这个分层能力实现向最终目标地址的通信。

还有重要一点,旅行途中咱们尽管一直变动了交通工具,然而旅行行程的起始地址和目标地址始终都没变。其实,在网络中数据包传输中也是如此,* 源 IP 地址和指标 IP 地址在传输过程中是不会变动的,只有源 MAC 地址和指标 MAC 始终在变动 *

主菜 —— IP 地址的基础知识

在 TCP/IP 网络通信时,为了保障能失常通信,每个设施都须要配置正确的 IP 地址,否则无奈实现失常的通信。

IP 地址(IPv4 地址)由 32 位正整数来示意,IP 地址在计算机是以二进制的形式解决的。

而人类为了不便记忆采纳了 点分十进制 的标记形式,也就是将 32 位 IP 地址以每 8 位为组,共分为 4 组,每组以「.」隔开,再将每组转换成十进制。

那么,IP 地址最大值也就是

也就说,最大容许 43 亿台计算机连贯到网络。

实际上,IP 地址并不是依据主机台数来配置的,而是以网卡。像服务器、路由器等设施都是有 2 个以上的网卡,也就是它们会有 2 个以上的 IP 地址。

因而,让 43 亿台计算机全副连网其实是不可能的,更何况 IP 地址是由「网络标识」和「主机标识」这两个局部组成的,所以理论可能连贯到网络的计算机个数更是少了很多。

可能有的小伙伴提出了疑难,当初不仅电脑配了 IP,手机、IPad 等电子设备都配了 IP 呀,照理来说必定会超过 43 亿啦,那是怎么可能反对这么多 IP 的呢?

因为会依据一种能够更换 IP 地址的技术 NAT,使得可连贯计算机数超过 43 亿台。NAT 技术后续会进一步探讨和阐明。

IP 地址的分类

互联网诞生之初,IP 地址显得很富余,于是计算机科学家们设计了 分类地址

IP 地址分类成了 5 种类型,别离是 A 类、B 类、C 类、D 类、E 类。

上图中黄色部是分类号,用以辨别 IP 地址类别。

什么是 A、B、C 类地址?

其中对于 A、B、C 类次要分为两个局部,别离是 网络号和主机号。这很好了解,好比小林是 A 小区 1 栋 101 号,你是 B 小区 1 栋 101 号。

咱们能够用上面这个表格,就能很分明的晓得 A、B、C 分类对应的地址范畴、最大主机个数。

A、B、C 分类地址最大主机个数是如何计算的呢?

最大主机个数,就是要看主机号的位数,如 C 类地址的主机号占 8 位,那么 C 类地址的最大主机个数

为什么要减 2 呢?

因为在 IP 地址中,有两个 IP 是非凡的,别离是主机号全为 1 和 全为 0 地址。

  • 主机号全为 1 指定某个网络下的所有主机,用于播送
  • 主机号全为 0 指定某个网络

因而,在调配过程中,应该去掉这两种状况。

播送地址用于什么?

播送地址用于在 同一个链路中相互连接的主机之间发送数据包

学校班级中就有播送的例子,在筹备上课的时候,通常班长会喊:“上课,整体起立!”,班里的同学听到这句话是不是全副都站起来了?这个句话就有播送的含意。

当主机号全为 1 时,就示意该网络的播送地址。例如把 172.20.0.0/16 用二进制示意如下:

10101100.00010100.00000000.00000000

将这个地址的 主机局部全副改为 1,则造成播送地址:

10101100.00010100.11111111.11111111

再将这个地址用十进制示意,则为 172.20.255.255

播送地址能够分为本地播送和间接播送两种。

  • 在本网络内播送的叫做本地播送。例如网络地址为 192.168.0.0/24 的状况下,播送地址是 192.168.0.255。因为这个播送地址的 IP 包会被路由器屏蔽,所以不会达到 192.168.0.0/24 以外的其余链路上。
  • 在不同网络之间的播送叫做间接播送。例如网络地址为 192.168.0.0/24 的主机向 192.168.1.255/24 的指标地址发送 IP 包。收到这个包的路由器,将数据转发给 192.168.1.0/24,从而使得所有 192.168.1.1~192.168.1.254 的主机都能收到这个包(因为间接播送有肯定的平安问题,少数状况下会在路由器上设置为不转发)。

什么是 D、E 类地址?

而 D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于 多播,E 类是预留的分类,临时未应用。

多播地址用于什么?

多播用于* 将包发送给特定组内的所有主机 *

还是举班级的栗子,老师说:“最初一排的同学,上来做这道数学题。”,老师是指定的是最初一排的同学,也就是多播的含意了。

因为播送无奈穿透路由,若想给其余网段发送同样的包,就能够应用能够穿透路由的多播(组播)。

多播应用的 D 类地址,其前四位是 1110 就示意是多播地址,而剩下的 28 位是多播的组编号。

从 224.0.0.0 ~ 239.255.255.255 都是多播的可用范畴,其划分为以下三类:

  • 224.0.0.0 ~ 224.0.0.255 为预留的组播地址,只能局域网中,路由器是不会进行转发的
  • 224.0.1.0 ~ 238.255.255.255 为用户可用的组播地址,能够用于 Internet 上
  • 239.0.0.0 ~ 239.255.255.255 为本地治理组播地址,可供内部网在外部应用,仅在特定的本地范畴内无效

IP 分类的长处

不论是路由器还是主机解析到一个 IP 地址时候,咱们判断其 IP 地址的首位是否为 0,为 0 则为 A 类地址,那么就能很快的找出网络地址和主机地址。

其余分类判断形式参考如下图:

所以,这种分类地址的长处就是 简单明了、选路(基于网络地址)简略

IP 分类的毛病

毛病一

同一网络下没有地址档次 ,比方一个公司里用了 B 类地址,然而可能须要依据生产环境、测试环境、开发环境来划分地址档次,而这种 IP 分类是没有地址档次划分的性能,所以这就 短少地址的灵活性

毛病二

A、B、C 类有个难堪处境,就是 不能很好的与事实网络匹配

  • C 类地址能蕴含的最大主机数量切实太少了,只有 254 个,预计一个网吧都不够用。
  • 而 B 类地址能蕴含的最大主机数量又太多了,6 万多台机器放在一个网络上面,个别的企业根本达不到这个规模,闲着的地址就是节约。

这两个毛病,都能够在 CIDR 无分类地址解决。

无分类地址 CIDR

正因为 IP 分类存在许多毛病,所有前面提出了无分类地址的计划,即 CIDR

这种形式不再有分类地址的概念,32 比特的 IP 地址被划分为两局部,后面是 网络号 ,前面是 主机号

怎么划分网络号和主机号的呢?

示意模式 a.b.c.d/x,其中 /x 示意前 x 位属于 网络号,x 的范畴是 0 ~ 32,这就使得 IP 地址更加具备灵活性。

比方 10.100.122.2/24,这种地址示意模式就是 CIDR,/24 示意前 24 位是网络号,残余的 8 位是主机号。

还有另一种划分网络号与主机号模式,那就是 子网掩码,掩码的意思就是覆盖掉主机号,残余的就是网络号。

将子网掩码和 IP 地址按位计算 AND,就可失去网络号。

为什么要拆散网络号和主机号?

因为两台计算机要通信,首先要判断是否处于同一个播送域内,即网络地址是否雷同。如果网络地址雷同,表明接受方在本网络上,那么能够把数据包间接发送到指标主机,

路由器寻址工作中,也就是通过这样的形式来找到对应的网络号的,进而把数据包转发给对应的网络内。

怎么进行子网划分?

在下面咱们晓得能够通过子网掩码划分出网络号和主机号,那实际上子网掩码还有一个作用,那就是 划分子网

子网划分实际上是将主机地址分为两个局部:子网网络地址和子网主机地址。模式如下:

  • 未做子网划分的 ip 地址:网络地址+主机地址
  • 做子网划分后的 ip 地址:网络地址+(子网网络地址+子网主机地址)

假如对 C 类地址进行子网划分,网络地址 192.168.1.0,应用子网掩码 255.255.255.192 对其进行子网划分。

C 类地址中前 24 位 是网络号,最初 8 位是主机号,依据子网掩码可知 从 8 位主机号中借用 2 位作为子网号

因为子网网络地址被划分成 2 位,那么子网地址就有 4 个,别离是 00、01、10、11,具体划分如下图:

划分后的 4 个子网如下表格:

私有 IP 地址与公有 IP 地址

在 A、B、C 分类地址,实际上有分私有 IP 地址和 公有 IP 地址。

平时咱们办公室、家里、学校用的 IP 地址,个别都是公有 IP 地址。因为这些地址容许组织外部的 IT 人员本人治理、本人调配,而且能够反复。因而,你学校的某个公有 IP 地址和我学校的能够是一样的。

就像每个小区都有本人的楼编号和门牌号,你小区家能够叫 1 栋 101 号,我小区家也能够叫 1 栋 101,没有任何问题。但一旦出了小区,就须要带上中山路 666 号(公网 IP 地址),是国家统一分配的,不能两个小区都叫中山路 666。

所以,私有 IP 地址是有个组织统一分配的,假如你要开一个博客网站,那么你就须要去申请购买一个私有 IP,这样全世界的人才能拜访。并且私有 IP 地址基本上要在整个互联网范畴内放弃惟一。

私有 IP 地址由谁治理呢?

公有 IP 地址通常是外部的 IT 人员值治理,私有 IP 地址是由 ICANN 组织治理,中文叫「互联网名称与数字地址调配机构」。

IANA 是 ICANN 的其中一个机构,它负责调配互联网 IP 地址,是按州的形式层层调配。

  • ARIN 北美地区
  • LACNIC 拉丁美洲和一些加勒比群岛
  • RIPE NCC 欧洲、中东和中亚
  • AfriNIC 非洲地区
  • APNIC 亚太地区

其中,在中国是由 CNNIC 的机构进行治理,它是中国国内惟一指定的全局 IP 地址治理的组织。

IP 地址与路由管制

IP 地址的 网络地址 这一部分是用于进行路由管制。

路由管制表中记录着网络地址与下一步应该发送至路由器的地址,在主机和路由器上都会有各自的路由器管制表。

在发送 IP 包时,首先要确定 IP 包首部中的指标地址,再从路由管制表中找到与该地址具备 雷同网络地址 的记录,依据该记录将 IP 包转发给相应的下一个路由器。如果路由管制表中存在多条雷同网络地址的记录,就抉择雷同位数最多的网络地址,也就是最长匹配。

上面以下图的网络链路作为例子阐明:

  1. 主机 A 要发送一个 IP 包,其源地址是 10.1.1.30 和指标地址是 10.1.2.10,因为没有在主机 A 的路由表找到与指标地址 10.1.2.10 的网络地址,于是把包被转发到默认路由(路由器 1
  2. 路由器 1 收到 IP 包后,也在路由器 1 的路由表匹配与指标地址雷同的网络地址记录,发现匹配到了,于是就把 IP 数据包转发到了 10.1.0.2 这台路由器 2
  3. 路由器 2 收到后,同样比照本身的路由表,发现匹配到了,于是把 IP 包从路由器 210.1.2.1 这个接口进来,最终通过交换机把 IP 数据包转发到了指标主机

环回地址是不会流向网络

环回地址是在同一台计算机上的程序之间进行网络通信时所应用的一个默认地址。

计算机应用一个非凡的 IP 地址 *127.0.0.1 作为环回地址 *与该地址具备雷同意义的是一个叫做 localhost 的主机名。

应用这个 IP 或主机名时,数据包不会流向网络。

IP 分片与重组

每种数据链路的最大传输单元 MTU 都是不雷同的,如 FDDI 数据链路 MTU 4352、以太网的 MTU 是 1500 字节等。

每种数据链路的 MTU 之所以不同,是因为每个不同类型的数据链路的应用目标不同。应用目标不同,可承载的 MTU 也就不同。

其中,咱们最常见数据链路是以太网,它的 MTU 是 1500 字节。

那么当 IP 数据包大小大于 MTU 时,IP 数据包就会被分片。

通过分片之后的 IP 数据报在被重组的时候,只能由指标主机进行,路由器是不会进行重组的。

假如发送方发送一个 4000 字节的大数据报,若要传输在以太网链路,则须要把数据报分片成 3 个小数据报进行传输,再交由接管方重组成大数据报。

在分片传输中,一旦某个分片失落,则会造成整个 IP 数据报作废,所以 TCP 引入了 MSS 也就是在 TCP 层进行分片不禁 IP 层分片,那么对于 UDP 咱们尽量不要发送一个大于 MTU 的数据报文。

IPv6 根本意识

IPv4 的地址是 32 位的,大概能够提供 42 亿个地址,然而早在 2011 年 IPv4 地址就曾经被调配完了。

然而 IPv6 的地址是 128 位的,这可调配的地址数量是大的惊人,说个段子 *IPv6 能够保障地球上的每粒沙子都能被调配到一个 IP 地址 *

但 IPv6 除了有更多的地址之外,还有更好的安全性和扩展性,说简略点就是 IPv6 相比于 IPv4 能带来更好的网络体验。

然而因为 IPv4 和 IPv6 不能互相兼容,所以岂但要咱们电脑、手机之类的设施反对,还须要网络运营商对现有的设施进行降级,所以这可能是 IPv6 普及率比较慢的一个起因。

IPv6 的亮点

IPv6 不仅仅只是可调配的地址变多了,他还有十分多的亮点。

  • IPv6 可主动配置,即便没有 DHCP 服务器也能够实现主动调配 IP 地址,真是 便捷到即插即用 啊。
  • IPv6 包头包首部长度采纳固定的值 40 字节,去掉了包头校验和,简化了首部构造,加重了路由器负荷,大大 进步了传输的性能
  • IPv6 有应答伪造 IP 地址的网络安全性能以及避免线路窃听的性能,大大 晋升了安全性
  • (由你发现更多的亮点)

IPv6 地址的标识办法

IPv4 地址长度共 32 位,是以每 8 位作为一组,并用点分十进制的示意形式。

IPv6 地址长度是 128 位,是以每 16 位作为一组,每组用冒号「:」隔开。

如果呈现间断的 0 时还能够将这些 0 省略,并用两个冒号「::」隔开。然而,一个 IP 地址中只容许呈现一次两个间断的冒号。

IPv6 地址的构造

IPv6 相似 IPv4,也是通过 IP 地址的前几位标识 IP 地址的品种。

IPv6 的地址次要有一下类型地址:

  • 单播地址,用于一对一的通信
  • 组播地址,用于一对多的通信
  • 任播地址,用于通信最近的节点,最近的节点是由路由协定决定
  • 没有播送地址

IPv6 单播地址类型

对于一对一通信的 IPv6 地址,次要划分了三类单播地址,每类地址的无效范畴都不同。

  • 在同一链路单播通信,不通过路由器,能够应用 链路本地单播地址,IPv4 没有此类型
  • 在内网里单播通信,能够应用 惟一本地地址,相当于 IPv4 的公有 IP
  • 在互联网通信,能够应用 全局单播地址,相当于 IPv4 的私有 IP

IPv4 首部与 IPv6 首部

IPv4 首部与 IPv6 首部的差别如下图:

IPv6 相比 IPv4 的首部改良:

  • 勾销了首部校验和字段。 因为在数据链路层和传输层都会校验,因而 IPv6 间接勾销了 IP 的校验。
  • 勾销了分片 / 从新组装相干字段。 分片与重组是耗时的过程,IPv6 不容许在两头路由器进行分片与重组,这种操作只能在源与指标主机,这将大大提高了路由器转发的速度。
  • 勾销选项字段。 选项字段不再是规范 IP 首部的一部分了,但它并没有隐没,而是可能呈现在 IPv6 首部中的「下一个首部」指出的地位上。删除该选项字段是的 IPv6 的首部成为固定长度的 40 字节。

点心 —— IP 协定相干技术

跟 IP 协定相干的技术也不少,接下来说说与 IP 协定相干的重要且常见的技术。

  • DNS 域名解析
  • ARP 与 RARP 协定
  • DHCP 动静获取 IP 地址
  • NAT 网络地址转换
  • ICMP 互联网管制报文协定
  • IGMP 因特网组治理协

DNS

咱们在上网的时候,通常应用的形式域名,而不是 IP 地址,因为域名不便人类记忆。

那么实现这一技术的就是 DNS 域名解析,DNS 能够将域名网址主动转换为具体的 IP 地址。

域名的层级关系

DNS 中的域名都是用 句点 来分隔的,比方 www.server.com,这里的句点代表了不同档次之间的 界线

在域名中,越靠右 的地位示意其层级 越高

毕竟域名是外国人创造,所以思维和中国人相同,比如说一个城市地点的时候,外国喜爱从小到大的形式程序说起(如 XX 街道 XX 区 XX 市 XX 省),而中国则喜爱从大到小的程序(如 XX 省 XX 市 XX 区 XX 街道)。

根域是在最顶层,它的下一层就是 com 顶级域,再上面是 server.com。

所以域名的层级关系相似一个树状构造:

  • 根 DNS 服务器
  • 顶级域 DNS 服务器(com)
  • 权威 DNS 服务器(server.com)

根域的 DNS 服务器信息保留在互联网中所有的 DNS 服务器中。这样一来,任何 DNS 服务器就都能够找到并拜访根域 DNS 服务器了。

因而,客户端只有可能找到任意一台 DNS 服务器,就能够通过它找到根域 DNS 服务器,而后再一路顺藤摸瓜找到位于上层的某台指标 DNS 服务器。

域名解析的工作流程

浏览器首先看一下本人的缓存里有没有,如果没有就向操作系统的缓存要,还没有就查看本机域名解析文件 hosts,如果还是没有,就会 DNS 服务器进行查问,查问的过程如下:

  1. 客户端首先会收回一个 DNS 申请,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。
  2. 本地域名服务器收到客户端的申请后,如果缓存里的表格能找到 www.server.com,则它间接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大,能通知我 www.server.com 的 IP 地址吗?”根域名服务器是最高档次的,它不间接用于域名解析,但能指明一条路线。
  3. 根 DNS 收到来自本地 DNS 的申请后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域治理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”
  4. 本地 DNS 收到顶级域名服务器的地址后,发动申请问“老二,你能通知我 www.server.com 的 IP 地址吗?”
  5. 顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。
  6. 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com 对应的 IP 是啥呀?”server.com 的权威 DNS 服务器,它是域名解析后果的原出处。为啥叫权威呢?就是我的域名我做主。
  7. 权威 DNS 服务器查问后将对应的 IP 地址 X.X.X.X 通知本地 DNS。
  8. 本地 DNS 再将 IP 地址返回客户端,客户端和指标建设连贯。

至此,咱们实现了 DNS 的解析过程。当初总结一下,整个过程我画成了一个图。

DNS 域名解析的过程蛮有意思的,整个过程就和咱们日常生活中找人问路的过程相似,只指路不领路

ARP

在传输一个 IP 数据报的时候,确定了源 IP 地址和指标 IP 地址后,就会通过主机「路由表」确定 IP 数据包下一跳。然而,网络层的下一层是数据链路层,所以咱们还要晓得「下一跳」的 MAC 地址。

因为主机的路由表中能够找到下一条的 IP 地址,所以能够通过 ARP 协定,求得下一跳的 MAC 地址。

那么 ARP 又是如何晓得对方 MAC 地址的呢?

简略地说,ARP 是借助 ARP 申请与 ARP 响应 两种类型的包确定 MAC 地址的。

  • 主机会通过 播送发送 ARP 申请,这个包中蕴含了想要晓得的 MAC 地址的主机 IP 地址。
  • 当同个链路中的所有设施收到 ARP 申请时,会去拆开 ARP 申请包里的内容,如果 ARP 申请包中的指标 IP 地址与本人的 IP 地址统一,那么这个设施就将本人的 MAC 地址塞入 ARP 响应包 返回给主机。

操作系统通常会把第一次通过 ARP 获取的 MAC 地址缓存起来,以便下次间接从缓存中找到对应 IP 地址的 MAC 地址。

不过,MAC 地址的缓存是有肯定期限的,超过这个期限,缓存的内容将被革除。

RARP 协定你晓得是什么吗?

ARP 协定是已知 IP 地址 求 MAC 地址,那 RARP 协定正好相同。

它是 已知 MAC 地址求 IP 地址。例如将打印机服务器等小型嵌入式设施接入到网络时就常常会用失去。

通常这须要架设一台 RARP 服务器,在这个服务器上注册设施的 MAC 地址及其 IP 地址。而后再将这个设施接入到网络,接着:

  • 该设施会发送一条「我的 MAC 地址是 XXXX,请通知我,我的 IP 地址应该是什么」的申请信息。
  • RARP 服务器接到这个音讯后返回「MAC 地址为 XXXX 的设施,IP 地址为 XXXX」的信息给这个设施。

最初,设施就依据从 RARP 服务器所收到的应答信息设置本人的 IP 地址。

DHCP

DHCP 在生活中咱们是很常见的了,咱们的电脑通常都是通过 DHCP 动静获取 IP 地址,大大省去了配 IP 信息繁琐的过程。

接下来,咱们来看看咱们的电脑是如何通过 4 个步骤的过程,获取到 IP 的。

先阐明一点,DHCP 客户端过程监听的是 68 端口号,DHCP 服务端过程监听的是 67 端口号。

DHCP 交互的 4 个步骤:

  • 客户端首先发动 DHCP 发现报文(DHCP DISCOVER) 的 IP 数据报,因为客户端没有 IP 地址,也不晓得 DHCP 服务器的地址,所以应用的是 UDP 播送 通信,其应用的播送目标地址是 255.255.255.255(端口 67)并且应用 0.0.0.0(端口 68)作为源 IP 地址。DHCP 客户端将该 IP 数据报传递给链路层,链路层而后将帧播送到所有的网络中设施。
  • DHCP 服务器收到 DHCP 发现报文时,用 DHCP 提供报文(DHCP OFFER) 向客户端做出响应。该报文依然应用 IP 播送地址 255.255.255.255,该报文信息携带服务器提供可租约的 IP 地址、子网掩码、默认网关、DNS 服务器以及 IP 地址租用期
  • 客户端收到一个或多个服务器的 DHCP 提供报文后,从中抉择一个服务器,并向选中的服务器发送 DHCP 申请报文(DHCP REQUEST进行响应,回显配置的参数。
  • 最初,服务端用 DHCP ACK 报文 对 DHCP 申请报文进行响应,应答所要求的参数。

一旦客户端收到 DHCP ACK 后,交互便实现了,并且客户端可能在租用期内应用 DHCP 服务器调配的 IP 地址。

如果租约的 DHCP IP 地址快期后,客户端会向服务器发送 DHCP 申请报文:

  • 服务器如果批准持续租用,则用 DHCP ACK 报文进行应答,客户端就会缩短租期。
  • 服务器如果不批准持续租用,则用 DHCP NACK 报文,客户端就要停止使用租约的 IP 地址。

能够发现,DHCP 交互中,全程都是应用 UDP 播送通信

咦,用的是播送,那如果 DHCP 服务器和客户端不是在同一个局域网内,路由器又不会转发播送包,那不是每个网络都要配一个 DHCP 服务器?

所以,为了解决这一问题,就呈现了 DHCP 中继代理

有了 DHCP 中继代理当前,对不同网段的 IP 地址调配也能够由一个 DHCP 服务器对立进行治理。

  • DHCP 客户端会向 DHCP 中继代理发送 DHCP 申请包,而 DHCP 中继代理在收到这个播送包当前,再以 单播 的模式发给 DHCP 服务器。
  • 服务器端收到该包当前再向 DHCP 中继代理返回应答,并由 DHCP 中继代理将此包转发给 DHCP 客户端。

因而,DHCP 服务器即便不在同一个链路上也能够实现统一分配和治理 IP 地址。

NAT

IPv4 的地址是十分紧缺的,在后面咱们也提到能够通过无分类地址来减缓 IPv4 地址耗尽的速度,然而互联网的用户增速是十分惊人的,所以 IPv4 地址仍然有被耗尽的危险。

于是,提出了一个种 网络地址转换 NAT 的办法,再次缓解了 IPv4 地址耗尽的问题。

简略的来说 NAT 就是在同个公司、家庭、教室内的主机对外部通信时,把公有 IP 地址转换成私有 IP 地址。

那不是 N 个 公有 IP 地址,你就要 N 个私有 IP 地址?这怎么就缓解了 IPv4 地址耗尽的问题?这不瞎扯吗?

的确是,一般的 NAT 转换没什么意义。

因为绝大多数的网络应用都是应用传输层协定 TCP 或 UDP 来传输数据的。

因而,能够把 IP 地址 + 端口号一起进行转换。

这样,就用一个寰球 IP 地址就能够了,这种转换技术就叫 网络地址与端口转换 NAPT。

很形象?来,看上面的图解就能霎时明确了。

图中有两个客户端 192.168.1.10 和 192.168.1.11 同时与服务器 183.232.231.172 进行通信,并且这两个客户端的本地端口都是 1025。

此时,* 两个公有 IP 地址都转换 IP 地址为私有地址 120.229.175.121,然而以不同的端口号作为辨别 *

于是,生成一个 NAPT 路由器的转换表,就能够正确地转换地址跟端口的组合,令客户端 A、B 能同时与服务器之间进行通信。

这种转换表在 NAT 路由器上主动生成。例如,在 TCP 的状况下,建设 TCP 连贯首次握手时的 SYN 包一经收回,就会生成这个表。而后又随着收到敞开连贯时收回 FIN 包的确认应答从表中被删除。

NAT 那么牛逼,难道就没毛病了吗?

当然有缺点,必定没有美中不足的计划。

因为 NAT/NAPT 都依赖于本人的转换表,因而会有以下的问题:

  • 内部无奈被动与 NAT 外部服务器建设连贯,因为 NAPT 转换表没有转换记录。
  • 转换表的生产与转换操作都会产生性能开销。
  • 通信过程中,如果 NAT 路由器重启了,所有的 TCP 连贯都将被重置。

如何解决 NAT 潜在的问题呢?

解决的办法次要两种办法。

第一种就是改用 IPv6

IPv6 可用范畴十分大,以至于每台设施都能够配置一个私有 IP 地址,就不搞那么多花里胡哨的地址转换了,然而 IPv6 遍及速度还须要一些工夫。

第二种 NAT 穿透技术

NAT 穿梭技术领有这样的性能,它可能让网络应用程序被动发现自己位于 NAT 设施之后,并且会被动取得 NAT 设施的私有 IP,并为本人建设端口映射条目,留神这些都是 NAT 设施后的应用程序主动实现的。

也就是说,在 NAT 穿梭技术中,NAT 设施后的应用程序处于被动位置,它曾经明确地晓得 NAT 设施要批改它外发的数据包,于是它被动配合 NAT 设施的操作,被动地建设好映射,这样就不像以前由 NAT 设施来建设映射了。

说人话,就是客户端被动从 NAT 设施获取私有 IP 地址,而后本人建设端口映射条目,而后用这个条目对外通信,就不须要 NAT 设施来进行转换了。

ICMP

ICMP 全称是 Internet Control Message Protocol,也就是 互联网管制报文协定

外面有个关键词 —— 管制,如何管制的呢?

网络包在简单的网络传输环境里,经常会遇到各种问题。

当遇到问题的时候,总不能死个不明不白,没头没脑的风格不是计算机网络的格调。所以须要传出音讯,报告遇到了什么问题,这样才能够调整传输策略,以此来管制整个场面。

ICMP 性能都有啥?

ICMP 次要的性能包含:* 确认 IP 包是否胜利送达指标地址、报告发送过程中 IP 包被废除的起因和改善网络设置等 *

IP 通信中如果某个 IP 包因为某种原因未能达到目标地址,那么这个具体的起因将 由 ICMP 负责告诉

如上图例子,主机 A 向主机 B 发送了数据包,因为某种原因,途中的路由器 2 未能发现主机 B 的存在,这时,路由器 2 就会向主机 A 发送一个 ICMP 指标不可达数据包,阐明发往主机 B 的包未能胜利。

ICMP 的这种告诉音讯会应用 IP 进行发送。

因而,从路由器 2 返回的 ICMP 包会依照平常的路由管制先通过路由器 1 再转发给主机 A。收到该 ICMP 包的主机 A 则合成 ICMP 的首部和数据域当前得悉具体产生问题的起因。

ICMP 类型

ICMP 大抵能够分为两大类:

  • 一类是用于诊断的查问音讯,也就是「查问报文类型
  • 另一类是告诉出错起因的谬误音讯,也就是「过错报文类型

IGMP

ICMP 跟 IGMP 是一点关系都没有的,就如同周杰与周杰伦的区别,大家不要混同了。

在后面咱们晓得了组播地址,也就是 D 类地址,既然是组播,那就阐明是只有一组的主机能收到数据包,不在一组的主机不能收到数组包,怎么治理是否是在一组呢?那么,就须要 IGMP 协定了。

IGMP 是因特网组治理协定,工作在主机(组播成员)和最初一跳路由之间,如上图中的蓝色局部。

  • IGMP 报文向路由器申请加入和退出组播组,默认状况下路由器是不会转发组播包到连贯中的主机,除非主机通过 IGMP 退出到组播组,主机申请加入到组播组时,路由器就会记录 IGMP 路由器表,路由器后续就会转发该组播地址的数据包了。
  • IGMP 报文采纳 IP 封装,IP 头部的协定号为 2,而且 TTL 字段值通常 为 1,因为 IGMP 是工作在主机与连贯的路由器之间。

IGMP 工作机制

IGMP 分为了三个版本别离是,IGMPv1、IGMPv2、IGMPv3。

接下来,以 IGMPv2 作为例子,说说 惯例查问与响应和来到组播组 这两个工作机制。

惯例查问与响应工作机制

  1. 路由器会周期性发送目标地址为 224.0.0.1(示意同一网段内所有主机和路由器)*IGMP 惯例查问报文 *
  2. 主机 1 和 主机 3 收到这个查问,随后会启动「报告提早计时器」,计时器的工夫是随机的,通常是 0~10 秒,计时器超时后主机就会发送 IGMP 成员关系报告报文(源 IP 地址为本人主机的 IP 地址,目标 IP 地址为组播地址)。如果在定时器超时之前,收到同一个组内的其余主机发送的成员关系报告报文,则本人不再发送,这样能够缩小网络中多余的 IGMP 报文数量;
  3. 路由器收到主机的成员关系报告报文后,就会在 IGMP 路由表中退出该组播组,后续网络中一旦该组播地址的数据达到路由器,它会把数据包转发进来;

来到组播组工作机制

来到组播组的状况一,网段中仍有该组播组:

  1. 主机 1 要来到组 224.1.1.1,发送 IGMPv2 离组报文,报文的目标地址是 224.0.0.2(示意发向网段内的所有路由器);
  2. 路由器收到该报文后,以 1 秒为距离间断发送 IGMP 特定组查问报文(共计发送 2 个),以便确认该网络是否还有 224.1.1.1 组的其余成员;
  3. 主机 3 依然是组 224.1.1.1 的成员,因而它立刻响应这个特定组查问。路由器晓得该网络中依然存在该组播组的成员,于是持续向该网络转发 224.1.1.1 的组播数据包;

来到组播组的状况二,网段中没有该组播组:

  • 主机 1 要来到组播组 224.1.1.1,发送 IGMP 离组报文;
  • 路由器收到该报文后,以 1 秒为距离间断发送 IGMP 特定组查问报文(共计发送 2 个)。此时在该网段内,组 224.1.1.1 曾经没有其余成员了,因而没有主机响应这个查问;
  • 肯定工夫后,路由器认为该网段中曾经没有 224.1.1.1 组播组成员了,将不会再向这个网段转发该组播地址的数据包;

参考文献

[1] 计算机网络 - 自顶向下办法. 陈鸣 译. 机械工业出版社

[2] TCP/IP 详解 卷 1:协定. 范建华 译. 机械工业出版社

[3] 图解 TCP/IP. 竹下隆史. 人民邮电出版社

欢送关注公众号【码农开花】一起学习成长
我会始终分享 Java 干货,也会分享收费的学习材料课程和面试宝典
回复:【计算机】【设计模式】【面试】有惊喜哦

正文完
 0