【网络】IP协议的地址管理
- 一. IP协议格式
- 二. 地址管理
- 1.动态分配IP地址
- 2.NAT机制
- 2.1 NAT机制下网络的请求/响应
- 3. 网段划分
- 3.1 特殊的IP地址
- 4.路由选择
- 5.DNS域名解析系统
一. IP协议格式
- 4位版本号(version): 指定IP协议的版本(IPv4/IPv6), 对于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位标志字段: 第⼀位保留(保留的意思是现在不⽤, 但是还没想好说不定以后要⽤到). 第⼆位置为1表⽰禁⽌分⽚, 这时候如果报⽂⻓度超过MTU, IP模块就会丢弃报⽂. 第三位表⽰"更多分⽚", 如果分⽚了的话, 最后⼀个分⽚置为1, 其他是0. 类似于⼀个结束标记.
- 13位分⽚偏移(framegament offset): 是分⽚相对于原始IP报⽂开始处的偏移. 其实就是在表⽰当前分⽚在原报⽂中处在哪个位置.
- 8位⽣存时间(Time To Live, TTL): 数据报到达⽬的地的最⼤报⽂跳数. ⼀般是64. 每次经过⼀个路由, TTL -= 1, ⼀直减到0还没到达, 那么就丢弃了. 这个字段主要是⽤来防⽌出现路由循环 .
- 8位协议: 表⽰上层协议的类型 .
- 16位头部校验和: 使⽤CRC进⾏校验, 来鉴别头部是否损坏.
- 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。
- 私网IP/局域网IP:10.、172.16-172.31.、192.168.这三类地址;
- 公网IP/广域网IP:剩下的IP。
要求公网上的设备,对应公网的IP,都必须是唯一的。但私网上的设备,使用私网IP,只需要保证私网内部的IP不重复即可,不同的局域网之内的IP允许重复,这样就大大提高了IP的复用率。
由于上述规定,就有一个重要的限制:
- 公网设备访问公网设备,没有任何问题,直接访问即可;
- 局域网设备访问局域网设备(同一个局域网内),允许访问;
- 局域网设备访问局域网设备(不同局域网内),不允许访问;
- 局域网设备访问公网设备,需要对局域网设备的IP地址进行转换;
- 公网设备访问局域网设备,不允许主动访问;
就比如说,某些校内资源,不使用校园网,就无法访问:此时你如果用的是家里的wifi,那就是不同局域网内,局域网设备不允许访问局域网设备;你如果使用流量,那就是公网设备不允许主动访问局域网设备。
2.1 NAT机制下网络的请求/响应
发送请求的过程其实很简单,只是需要在路由器处转换IP地址为公网地址。但是如何返回响应呢?返回的响应如何找到替换前的IP地址呢?
这就要求路由器在转换IP地址时要进行记录:
替换前的IP | 替换后的IP | 目的IP | 源端口 | 目的端口 |
---|---|---|---|---|
192.168.1.10 | 5.6.7.8 | 1.2.3.4 | 10000 | 9090 |
如果有多条记录,又该怎么样进行区分呢:
- 如果局域网内的各个设备访问的是不同的服务器,路由器就可以通过服务器的IP地址来进行区分;
- 如果局域网的各个设备访问的是同一个服务器,路由器可以通过源端口进行区分;
- 如果局域网的各个设备访问的是同一个服务器,而且系统分配的端口又恰好一样,此时就要对端口进行映射,通过映射后的端口来进行区分。
替换前的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地址也能访问对应的服务器。