问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

IP协议的地址管理详解

创作时间:
作者:
@小白创作中心

IP协议的地址管理详解

引用
CSDN
1.
https://blog.csdn.net/telasi2004/article/details/142996509

IP协议是互联网通信的基础,它定义了数据在网络中传输的规则和格式。本文将详细介绍IP协议的地址管理机制,包括IP协议格式、动态IP分配、NAT机制、网段划分、特殊IP地址以及DNS域名解析系统等内容。

一. IP协议格式

IP协议的格式定义了数据包在网络中传输时的结构。具体来说:

  • 4位版本号(version):指定IP协议的版本(IPv4),对于IPv4来说,就是4。
  • 4位头部长度(header length):IP头部的长度,单位是4字节,IP头部最大长度是60字节。
  • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。
  • 16位总长度(total length):IP数据报整体占多少个字节。(最大64KB,虽然长度小,但是IP地址提供了拆包组包的机制)
  • 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面这个id都是相同的。
  • 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置(DF,Don't Fragment)为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片"(MF,More Fragments),如果分片了的话,最后一个分片置为0,其他是1。
  • 13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。单位为8个字节。其实就是在表示当前分片在原报文中处在哪个位置。(相对于IP数据报的载荷计算,不包括IP头)
  • 8位生存时间(Time To Live, TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。
  • 8位协议:表示上层协议的类型。
  • 16位头部校验和:使用 Internet Checksum 进行校验,来鉴别头部是否损坏。
  • 32位源地址和32位目标地址:表示发送端和接收端。

二. 地址管理

IP地址是一个32位的整数,为了方便,将其表示成点分十进制的形式,通过3个点分成4个部分,每个部分1个字节,每个部分取值0-255。32位的整数所能表示的数据范围为大约为42亿9千万。那我们就会发现,全球70亿人,每人分配一个地址都不够用,况且我们很多人不止一台设备。因此地址管理应运而生。

1.动态分配IP地址

考虑到全世界的设备不是在同一时刻上网,采用用时分配、不用时回收的方式更充分地利用现有的IP地址。(权宜之计,并没有解决根本问题)。

2.NAT机制

一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP)。

子网内的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换(替换成WAN口IP),这样逐级替换,最终数据包中的IP地址成为一个公网IP。这种技术称为NAT(Network Address Translation,网络地址转换)。

先把IP地址分成两个大类,即私网IP和公网IP。

  1. 私网IP/局域网IP:10.、172.16-172.31.、192.168.这三类地址;
  2. 公网IP/广域网IP:剩下的IP。

要求公网上的设备,对应公网的IP,都必须是唯一的。但私网上的设备,使用私网IP,只需要保证私网内部的IP不重复即可,不同的局域网之内的IP允许重复,这样就大大提高了IP的复用率。

由于上述规定,就有一个重要的限制:

  1. 公网设备访问公网设备,没有任何问题,直接访问即可;
  2. 局域网设备访问局域网设备(同一个局域网内),允许访问;
  3. 局域网设备访问局域网设备(不同局域网内),不允许访问;
  4. 局域网设备访问公网设备,需要对局域网设备的IP地址进行转换;
  5. 公网设备访问局域网设备,不允许主动访问;

就比如说,某些校内资源,不使用校园网,就无法访问:此时你如果用的是家里的wifi,那就是不同局域网内,局域网设备不允许访问局域网设备;你如果使用流量,那就是公网设备不允许主动访问局域网设备。

2.1 NAT机制下网络的请求/响应

发送请求的过程其实很简单,只是需要在路由器处转换IP地址为公网地址。但是如何返回响应呢?返回的响应如何找到替换前的IP地址呢?

这就要求路由器在转换IP地址时要进行记录:

替换前的IP 替换后的IP 目的IP 源端口 目的端口
192.168.1.10 5.6.7.8 1.2.3.4 10000 9090

如果有多条记录,又该怎么样进行区分呢:

  1. 如果局域网内的各个设备访问的是不同的服务器,路由器就可以通过服务器的IP地址来进行区分;
  2. 如果局域网的各个设备访问的是同一个服务器,路由器可以通过源端口进行区分;
  3. 如果局域网的各个设备访问的是同一个服务器,而且系统分配的端口又恰好一样,此时就要对端口进行映射,通过映射后的端口来进行区分。

替换前的IP 替换后的IP 目的IP 源端口 替换后的端口 目的端口
192.168.1.10 5.6.7.8 1.2.3.4 10000 10001 9090
192.168.1.20 5.6.7.8 1.2.3.4 10000 10002 9090

3. 网段划分

把一个IP地址,分成两个部分。即网络号+主机号。

网络号:保证相互连接的两个网段具有不同的标识;
主机号:同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;
注意:

一个局域网中,网络号和主机号都相同,这个时候是无法上网的;
一个局域网中,网络号和主机号都不相同,也是无法上网的(无法与局域网内的设备通信,也无法通过连接的路由器与公网的设备通信);
两个相邻的局域网,网络号不能相同。
那在32位IP地址中,网络号和主机号是如何划分的呢?通过子网掩码(subnet mask)来区分:

  • 子网掩码也是一个32位的正整数,通常用一串”0“来结尾;
  • 将IP地址和子网掩码进行按位与操作, 得到的结果就是网络号;

比如这里,就是前24位(点分十进制的前三位)位网络号,最后8位位主机号。

再比如这个,255.255.255.240的二进制就是(11111111 11111111 11111111 1111 0000)就是前28位为网络号,最后4位为主机号。

3.1 特殊的IP地址

  • 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
  • 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1 ;

4.路由选择

此处的原则就是近处由MAC地址决定,总体由IP地址决定。

5.DNS域名解析系统

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序。但是IP地址不方便记忆。DNS域名解析就是用一个容易理解的字符串来代替IP地址,这样就不需要记忆IP地址也能访问对应的服务器。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号