IP协议
1.IP协议格式
- 4位版本:用来表示IP协议的版本,目前有两个版本,IPv4和IPv6
- 4位首部长度IP头部的长度是多少个32bit,也就是 length * 4 的字节数.4bit表示最大的数字是15,因此IP头部最大长度是60节
- 8位服务类型:其实只有四位是有效果的.
最小延时:传输一个数据报的时间尽量短.
最大吞吐量:一定时间内传输的数据尽量多.
最高可靠性:在传输过程中最不容易丢包.
最小成本:在传输过程中消耗的硬件资源最低.
这四种形态是互斥的,只能切换到其中一种形态. - 16位总长度:指定整个IP数据包的长度,如果需要携带比较长的数据,IP协议会自动的把一个数据报拆分成多个数据报,接收方在进行分用的时候,也会把多个数据报合并成一个数据报
- 16位标识:表示属于同一个数据包的各个分片,在进行分片的时候,标识原始数据的部分,每一片的标识位是相同的
- 3位标志位:
bit1:保留位为0(不用)
bit2:是否允许拆包
bit3:标识"结束标记",标识当前的包是否是最后一个,为0则表示是最后一个包 - 13位片偏移:表示当前分片在原报文中处在哪个位置,通过片偏移,就可以区分包的先后顺序.
- 8位生存时间:数据报到达目的的最大报文跳数,单位是次,初始情况下会有个数值(32/64/128),通常是64为,每次经过一个路由器转发,TTL就会-1,减到0了就会被丢弃,
- 8位协议:描述上层的协议类型
- 16位首部校验和:鉴别头部是否错误
- 32位源IP地址和32位源IP目的地址:表示发送端和接收端
2.IP地址
IP地址:标识每个主机的具体位置,它为互联网上的每一个网络和每一台主机分配一个逻辑地址.来屏蔽物理地址上的差异.
IP地址,其实是一个32位的整数(4个字节),按照32位的表示方式,使整个数字会变得很大,于是就采用点分十进制的方式表示,使用三个". ",把32位分成4个部分,每个部分就是8位,1个字节,每个字节的范围就是0-255.
IP地址分为两个部分:网络号和主机号
1.网络号:表示网段,保证相互连接的两个网段有不同的标识
2.主机号:标识主机,同一个网段内,主机之间具有相同的网络号,但必须有不同的主机号
如何区分主机号和网络号?
将IP地址和子网掩码进"按位与"操作(二进制相同位,与操作,两个都是1结果为1,否则就为0)就得到的就是网络号
将子网掩码二进制按位取反,再与IP地址按位与,得到的就是主机号
特殊的IP地址:
- 将IP中的主机地址全都设为0,就成了网络号,代表这个局域网
- 将IP地址中的主机地址全设为1,就成了广播地址,用于给同一个链路中互相连接的所有主机发送数据包,例如手机投屏到电视,处于同一个局域网中.
127.0.0.1本机环回测试
2.1 解决IP地址不够用的方案
其实32位表示的数据量非常有限,也就是42亿9千万,并且IP不能够重复.这就会导致IP地址不够用的问题.针对这样的问题有多种解决方案,这里采用两点:1.动态分配IP地址(DHCP),2.NAT机制(网络地址转换)
1.动态分配IP地址:采用的按需分配,当一个设备不需要上网时,就不会分配IP地址,只有需要的时候,才会分配.通过优化DHCP配置,确保IP地址的有效和及时回收
2.NAT机制(网络地址转换):
把IP地址分为两类:
1.内网IP:不同的局域网内的设备,内网IP可以重复,同一个局域网内的设备,IP不能重复.比如以:10.,172.16. -172.31.*,192.168.开头的都属于是内网IP.
2.外网IP:外网IP不能重复.
1)局域网内之间的设备进行通信,是可以通信的,局域网内部IP地址都是唯一的.
2)A局域网中的设备,想和B局域网中的设备通信,这个时候就需要带有一个外网IP的设备进行中转
3)局域网内部的设备访问带有外网IP的设备.
我们平时使用到的手机等电子设备,他们都会有一个内网IP,还有一类设备就是"服务器",服务器可以有外网IP,
客户端请求:
1)客户端向服务器发送一个请求,其中包含源IP(例如10.0.0.10)和目标IP(例如202.244.174.37)。此请求包括IP头和有效载荷。
NAT转换(出站):
2)当请求通过带有NAT的路由器时,路由器会将IP头中的源IP(10.0.0.10)替换为自己的外部IP地址(例如163.221.120.9)。这是为了确保服务器的响应可以正确路由回内部网络中的正确设备。
服务器响应:
3)服务器接收到具有翻译后源IP(163.221.120.9)的请求并发送响应。响应包括源IP(例如202.244.174.37)和目标IP(例如163.221.120.9),以及源端口和目标端口。
NAT转换(入站):
4)当响应通过路由器时,NAT机制使用其映射表将IP头中的目标IP(163.221.120.9)替换为原始的内部IP地址(例如10.0.0.10)。这确保了响应被正确定向到内部网络上的正确客户端。
客户端接收响应:
5)客户端接收响应,通信成功完成。
其实当触发NAT的时候,就会维护一个映射表,其中记录了替换前的IP和替换后的IP.
3.IPv6
IPv6是16个字节,128位,表示IP地址,相比IPv4的32位地址提供了更多的地址组合,解决了IPv4地址空间有限的问题。