第四章.IP协议
IP(Internet Protocol,网际协议),作为整个TCP/IP中至关重要的协议,主要负责将数据包发送给最终的目标计算机。因此,IP能够让世界上任何两台计算机之间进行通信。
一、IP基础知识
IP三大块:IP寻址、路由、IP分包和组包。
1.路由控制(Routing)
路由控制是指将分组数据发送到最终目标地址的功能。
三个重点:
①跳(Hop):一跳是指利用数据链路层以下分层的功能传输数据帧的一个区间,它是主机或路由器网卡不经其他路由器而能直接到达的相邻主机或路由器网卡之间的一个区间。
②多跳路由:每一个区间(跳)在转发IP数据包时会分别制定下一跳的操作,直至包达到最终的目标地址,而不是一次性给出所有通路。
③路由控制表:记录IP数据在下一步应该发给哪个路由器,从路由控制表可以了解目标地址的方向。
2.数据链路的抽象化
问题:不同的数据链路最大的区别就是它们各自的最大传输单位(MTU:Maxinum Transmission Unit)不同。IP的上一层可能会要求传送比这些MTU更多字节的数据,因此必须在线路上传送比包长还要小的MTU。
解决方法:IP进行分片处理(IP Fragmentation)。将较大的IP包分成多个较小的IP包,到达对端目标地址后再组合起来。对于IP的上层来说,完全忽略了数据包在各个数据链路层中的MTU,实现了数据链路层的抽象。
3.IP协议相关
①IP地址属于网络层地址,在TCP/IP中通信的所有主机或路由器必须设定自己的IP地址。
②IP面向无连接。(因此TCP采用面向有连接型,提高了可靠性)
二、IP地址
1.IP地址的定义
①IP地址(IPv4)长度为32位,8位一组,分成4组。
10101100 00010100 0000001 00000001 —> 172.20.1.1
②一台主机至少可以设置一个以上的IP地址,一台路由器可以设置两个以上的IP地址,一块网卡也可以设置两个以上的IP地址。
2.网络标识和主机标识
①网络地址在数据链路的每个段配置不同的值
②相同段内相连的主机必须有相同的网络地址,主机标识不允许在同一网段内重复出现
③IP包的路由过程中利用的是目标IP地址的网络标识,而不需要使用主机标识。
3.IP地址分类
级别 | 范围 | 网络标识长度 | 主机标识长度 | 一个网段内可容纳的主机地址上限 |
---|---|---|---|---|
A类地址 | 0.0.0.0~127.0.0.0 | 1~8位 | 9~32位 | 16,777,214个(2^24-2) |
B类地址 | 128.0.0.0~191.255.0.0 | 1~16位 | 17~32位 | 65,534个(2^16-2) |
C类地址 | 192.0.0.0~223.255.255.0 | 1~24位 | 25~32位 | 254个(2^8-2) |
D类地址 | 224.0.0.0~239.255.255.255 | 1~32位 | 没有主机标识 | 无 |
4.广播与多播
广播地址用于在同一个链路中相互连接的主机之间发送数据包。
将IP地址中的主机地址部分全部设置为1就成了广播地址。
两种广播方式:1.本地广播,本网络内,不会传播到其他链路上;2.直接广播,可以发送到其他的数据链路上(因为安全问题,多数情况下路由器会被设置为不转发)。
单播、广播、多播通信:
多播使用D类地址,因此开头是“1110”的IP地址就可以认为是多播地址。
5.子网掩码
子网掩码出现的目的:节省网络资源,通过子网网络地址细分出比A类、B类等更小粒度的网络。
表示方式:
IP地址:172.20.100.52(前26位为网络地址)
子网掩码:255.255.255.192 或 172.20.100.52/26
CIDR(无类型域间选路):可以将连续多个地址划分到一个较大的网络内,通过路由器几种降低了路由器的负担。
VLSM(可变长子网掩码):可以随机修改组织内各个部门的子网掩码长度的机制,提高IP地址的利用率。
6.全局地址与私有地址
私有地址的范围:
①10.0.0.0 ~ 10.255.255.255 (10/8) A类
②172.16.0.0 ~ 172.31.255.255 (172.16/12) B类
③192.168.0.0 ~ 192.168.255.255 (192.168/16) C类
NAT技术:实现私有IP和全局IP的互相转换,实现了配有私有地址的主机与配有全局地址的互联网主机之间的通信。
三、路由控制
书中的两幅图已经非常好的概括了路由控制的过程和路由控制表的聚合过程了。
路由控制过程:
路由控制表的聚合:
四、IPv4首部
结构(从前往后排列) | 长度(比特) | 概述 |
---|---|---|
版本 | 4 | IPv4的版本号为4 |
首部长度(IHL) | 4 | 表明IP首部大小,单位为4字节,默认为20字节 |
区分服务 | 8 | 表明服务质量,每一位都有具体含义,比如0、1、2三位表示优先度 |
总长度 | 16 | IP包最大长度为2^16-1=65535字节 |
标识(ID) | 16 | 用于分片重组 |
标志(Flags) | 3 | 表示包被分片的相关信息,每一位都有具体含义 |
片偏移 | 13 | 标识被分片的每一个分段相对与原始数据的位置 |
生存时间(TTL) | 8 | 指包可以中转多少个路由器,每经过一个路由器, |
协议 | 8 | IP传输层的上层协议编号,比如1代表ICMP |
首部校验和 | 16 | 校验数据报的首部,不校验数据部分 |
源地址 | 32 | 表示发送端IP地址 |
目标地址 | 32 | 表示接收端IP地址 |
可选项 | 长度可变 | 实验或诊断时使用,包含安全级别、时间戳等信息 |
填充 | 长度可变 | 用于填充首部到32比特的整数倍(字段填充0) |
数据 | -- | 存入数据,将IP上层协议的首部也作为数据进行处理 |