IP协议报文格式
- 一: 报头格式
- 1.1 : 4位版本
- 1.2 : 4位首部长度
- 1.3 : 8位服务类型 :
- 1.4 : 16位总长度(字节数)
- 1.5 : 8位生存时间(TTL)
- 1.6 : 8 位协议
- 1.7 : 32 位源IP / 32 位目的IP
一: 报头格式
1.1 : 4位版本
现在使用的也就只有IPv4,IPv6
1.2 : 4位首部长度
以 4字节为单位,所以IP报头最长就是64字节,最短就是20字节
1.3 : 8位服务类型 :
实际上只有4位有效, 而且这4位是互斥的,只有一位为1
- 最小延时 : 传输过程中.消耗的时间最短
- 最大吞吐量: 单位时间内,传输的数据尽可能多.
- 最高可靠性: 降低丢包的概率.
- 最小成本: 比较节省系统开销.
1.4 : 16位总长度(字节数)
指的是整个IP 数据包的长度: 报头+ 载荷
总长度,去掉IP报头长度,就是IP载荷长度,而IP载荷是由TCP/UDP报头+ TCP/UDP载荷组成,所以去掉TCP/UDP报头长度,剩下的就是载荷长度了.
16bit ,表示IP数据包最大64KB,如果超过64KB,怎么办?
IP协自身实现了拆包,组包这样的功能,如果数据包的长度超过上限,IP数据包就会自动拆分成多个数据包,每个数据包携带一部分,发送到对方后,再拼接好.
1.5 : 8位生存时间(TTL)
IP 数据包在网络上转发,是由次数限制的,当转发的次数过多,接收方还未收到,这个数据包就要被丢弃.
8位生存时间,就是限制一个数据包在网络上转发的最大次数.
一个IP数据包,初始情况下,有一个TTL的值(32/64这样的整数),也是可以配置的.
这个次数每经过一个路由器的转发,就要-1,减到0了,就要把这个数据包丢弃掉.
1.6 : 8 位协议
描述了载荷部分是哪种协议的数据包.
一个数据包在分用的时候,要交给上层的哪个协议,都是有明确的声明的,
传输层 ==> 应用层 : 通过端口号来区分
网络层 ==> 传输层 : 报头中有这个8位协议字段,不同的取值就对应不同的传输层协议
数据链路层 ==>网络层 : 报文中,类型字段,区分是IP数据包,还是其他的数据包
1.7 : 32 位源IP / 32 位目的IP
32位范围: 0 - 42亿9千万,原则上.IP地址应该是唯一的,不重复的,但32位仍然不够用,尤其是现在处于移动互联网的今天.
32位IP地址不够用,如何解决?
-
动态分配 IP地址.
某个设备,上网就分配 IP地址,不上网,就不分配,
这样的机制,只能缓解,没办法从根本上解决问题,IP地址没有变多,只是跳过了IP地址的利用率. -
NAT机制 : 网络地址映射
首先,把IP地址分为两类,
1: 私网IP (局域网内部使用)
10.x.x.x
172.16 .x.x - 172.31.x.x
192.168.x.x
2: 公网IP(广域网使用): 私网IP以外的IP
公网IP是唯一的,私网IP可以在不同的局域网中重复.
== 引入私网IP,如何进行通信呢?==
- 同一个局域网内部, 设备之间的通信
由于一个局域网内部的设备之间的IP是不能重复的,所以这些设备可以正常通信 - 广域网和广域网设备之间的通信
广域网中的设备IP本身就是唯一的,所以也能正常交互. - 局域网1 中的设备A尝试访问局域网2 中的设备B
这种情况下是不允许进行访问的 - 局域网中的设备主动访问广域网设备,
这个过程中,NAT机制就发挥作用了. - 广域网主动访问局域网设备
不允许进行访问
因此, 如果需要进行上述的局域网和局域网设备之间的通信,往往需要广域网中的服务器进行数据转发.