网络层协议:IP
目录
1、概念
2、关键组成部分
2.1 IP地址
2.1.1 概念
2.1.2 主要版本
2.1.3 IP地址分类
2.2 IP数据报(IP协议传输的基本数据单元)
3、工作原理
3.1 路由
3.2 分片与重组
4、相关协议
1、概念
目的:负责在复杂的网络环境中将数据包从源主机路由和传递到目标主机。
定位:位于TCP/IP模型的网络层(或OSI模型的第3层),在传输层(如TCP, UDP)之下,数据链路层(如以太网, Wi-Fi)之上。
概念:提供跨越不同物理网络的逻辑寻址和路由功能,屏蔽底层网络技术的差异(如以太网、Wi-Fi、PPP、光纤等),使上层协议(TCP, UDP, ICMP等)无需关心数据包如何穿越各种物理网络。
特性:无连接、不可靠服务
-
无连接: 发送数据包前不需要预先建立连接。每个数据包(IP数据报)都是独立寻路,路径可能不同
-
不可靠: 不保证数据包一定能送达目的地,也不保证按顺序送达,不保证数据完整性(不提供确认、重传、流量控制机制)。这些可靠性保障由上层协议(如TCP)或应用程序自身负责。
-
尽力而为: 不提供带宽或延迟保证(QoS需额外机制)。
-
安全性: 原生IP不提供加密和强认证(依赖IPsec或上层协议如TLS)。
作用:
①、寻址:每个连接到网络的设备都有一个唯一的 IP 地址。IP 协议使用这些地址来标识数据包的源地址和目的地址,确保数据包能够准确地传输到目标设备。
②、路由:IP 协议负责决定数据包在网络传输中的路径。比如说路由器使用路由表和 IP 地址信息来确定数据包的最佳传输路径。
③、分片和重组:当数据包过大无法在某个网络上传输时,IP 协议会将数据包分成更小的片段进行传输。接收端会根据头部信息将这些片段重新组装成完整的数据包。
2、关键组成部分
2.1 IP地址
2.1.1 概念
唯一标识: 每个连接到IP网络的设备(主机、路由器)都必须有一个唯一的IP地址,用于在网络中标识自己。
逻辑地址: 与物理地址(如MAC地址)不同,IP地址是软件配置的,可以变化,用于在更大范围的网络中寻址。
2.1.2 主要版本
IPv4:32位二进制数(通常表示为点分十进制,如 192.168.1.1
)。
-
包含 网络部分 (标识设备所在的网络) 和 主机部分 (标识网络内的特定设备)。
-
通过 子网掩码 来区分网络部分和主机部分。
操作 | 二进制示例 | 结果(十进制) |
---|---|---|
IP地址 | 11000000.10101000.00000001.01100100 | 192.168.1.100 |
子网掩码 | 11111111.11111111.11111111.00000000 | 255.255.255.0 |
网络号(IP AND 掩码) | 11000000.10101000.00000001.00000000 | 192.168.1.0 |
主机号(IP AND 掩码取反) | 00000000.00000000.00000000.01100100 | 0.0.0.100 |
主要问题:
-
地址枯竭: 32位地址空间(约42.9亿)已基本耗尽(通过NAT技术缓解)。
-
配置复杂: 经常需要DHCP或手动配置。
-
安全性: 设计之初未充分考虑安全性(依赖IPsec扩展)。
-
QoS支持有限: 依赖ToS字段,支持不够完善。
-
报头设计: 包含选项字段,处理效率较低。
NAT:网络地址转换协议,我们知道属于不同局域网的主机可以使用相同的 IP 地址,从而一定程度上缓解了 IP 资源枯竭的问题,然而主机在局域网中使用的 IP 地址是不能在公网中使用的,当局域网主机想要与公网主机进行通信时,NAT 方法可以将该主机 IP 地址转换为全球 IP 地址。该协议能够有效解决 IP 地址不足的问题。
IPv6: 解决IPv4地址枯竭问题,使用128位地址(通常表示为8组4位十六进制数,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334
),地址空间极其巨大,并简化了报头设计,增强了安全性和移动性。
关键改进:
-
巨大的地址空间: 128位地址(约3.4×10³⁸个地址),彻底解决地址枯竭问题,支持端到端通信(减少NAT依赖)。
-
简化的报头: 固定40字节基本报头,格式更简单高效,路由器处理更快。选项功能通过扩展报头实现。
-
更好的QoS支持: 流标签字段便于识别和处理特定数据流。
-
内建安全: IPsec支持成为协议标准组成部分(非强制)。
-
改进的扩展性: 扩展报头机制更灵活。
-
自动配置: SLAAC(无状态地址自动配置)简化了主机配置。
-
更好的移动性支持: 移动IPv6设计更优。
2.1.3 IP地址分类
IP 地址 = {<网络号>,<主机号>}。
- 网络号:它标志主机所连接的网络地址表示属于互联网的哪一个网络。
- 主机号:它标志主机地址表示其属于该网络中的哪一台主机。
IP 地址分为 A,B,C,D,E 五大类:
- A 类地址 (1~126):以 0 开头,网络号占前 8 位,主机号占后面 24 位。
- B 类地址 (128~191):以 10 开头,网络号占前 16 位,主机号占后面 16 位。
- C 类地址 (192~223):以 110 开头,网络号占前 24 位,主机号占后面 8 位。
- D 类地址 (224~239):以 1110 开头,保留为多播地址。
- E 类地址 (240~255):以 1111 开头,保留位为将来使用
2.2 IP数据报(IP协议传输的基本数据单元)
结构: 由 报头 和 数据载荷 组成。
报头关键字段:
-
版本 (Version): 4位,标识IP版本(4或6)。
-
首部长度 (IHL): 4位,指示IP报头长度(以32位字为单位)。
-
服务类型 (ToS / DSCP/ECN): 8位,用于QoS(服务质量),指示数据包的优先级或服务要求(如延迟、吞吐量、可靠性)。
-
总长度 (Total Length): 16位,整个IP数据报(报头+数据)的长度(字节)。
-
标识 (Identification): 16位,用于唯一标识一个数据报或其分片。同一个数据报的所有分片共享相同的标识。
-
标志 (Flags): 3位:
-
Reserved
:保留位。 -
DF (Don't Fragment)
:为1时表示禁止路由器对此数据报分片。如果数据报太大无法通过下一跳网络,路由器会丢弃它并发送ICMP错误消息。 -
MF (More Fragments)
:为1时表示这不是最后一个分片(后面还有分片);为0时表示这是最后一个分片或是未分片的数据报。
-
-
片偏移 (Fragment Offset): 13位,指示该分片在原数据报数据部分中的相对位置(以8字节为单位)。用于接收方重组分片。
-
生存时间 (TTL - Time To Live): 8位,数据报在网络中允许经过的最大路由器跳数。每经过一个路由器,该值减1。当TTL减到0时,数据报被丢弃,并发送ICMP超时消息。主要作用是防止数据报在网络中无限循环。
-
协议 (Protocol): 8位,指示数据报载荷中封装的是哪个上层协议的数据(如TCP=6, UDP=17, ICMP=1)。
-
首部校验和 (Header Checksum): 16位,用于检测IP报头在传输过程中是否发生错误。只校验报头,不校验数据部分。每经过一个路由器都需要重新计算。
-
源IP地址 (Source Address): 32位(IPv4)或128位(IPv6),发送主机的IP地址。
-
目的IP地址 (Destination Address): 32位(IPv4)或128位(IPv6),接收主机的IP地址。
-
选项 (Options): 可变长(IPv4),很少使用。在IPv6中被移至扩展报头。
-
填充 (Padding): 确保IP报头长度是32位的整数倍。
数据载荷: 承载的上层协议数据(如TCP段、UDP数据报、ICMP消息)。
3、工作原理
3.1 路由
核心概念:
-
路由表: 每个主机和路由器都维护一个 路由表,其中包含如何到达不同目标网络或主机的信息。
-
路由条目: 通常包含目标网络地址、子网掩码、下一跳路由器地址(网关)或出口接口、度量值(优先级)等。
-
路由协议: 路由器之间运行 路由协议(如RIP, OSPF, BGP)来动态交换网络可达性信息,自动更新和维护路由表。
转发过程:
主机或路由器检查目标IP地址。
查找路由表,找到最长前缀匹配的路由条目(即与目标地址网络部分匹配最长的条目)。
根据匹配的路由条目:
如果下一跳是直接相连的网络,则通过ARP(IPv4)或邻居发现(IPv6)获取目标主机的物理地址(MAC地址),将数据报封装在数据链路层帧中直接发送。
如果下一跳是路由器(网关),则通过ARP/邻居发现获取该网关的物理地址,将数据报封装在帧中发送给网关。
网关路由器收到后,重复上述查找路由表和转发的步骤,直到数据报到达目标网络或TTL耗尽。
3.2 分片与重组
原因: 数据链路层(如以太网)有 最大传输单元 (MTU) 限制。当IP数据报长度大于路径中某个网络的MTU时,就需要分片。
过程:
路由器(或源主机)将原始数据报分割成多个较小的 分片 (Fragments)。
每个分片都有自己的IP报头(大部分字段复制自原始报头,但
总长度
、标识
、标志
、片偏移
会修改)。
MF
标志位:除了最后一个分片设为0,其他分片都设为1。
片偏移
表示该分片数据在原始数据报数据部分中的起始位置(以8字节块为单位)。分片独立路由到目的地。
重组: 只有目的主机负责将所有具有相同标识
的分片,按照片偏移
顺序重新组装成原始数据报。如果缺少任何分片,整个原始数据报会被丢弃,重组失败。
4、相关协议
-
ICMP (Internet Control Message Protocol): 用于在IP主机和路由器之间传递控制消息(如网络可达性测试
ping
、目标不可达、超时traceroute
、重定向等)。是IP协议的重要辅助协议。
ICMP 协议是一种面向无连接的协议,用于传输出错报告控制信息。它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到 IP 数据无法访问目标、IP 路由器无法按当前的传输速率转发数据包等情况时,会自动发送 ICMP 消息。
ping的基本过程:
①、当执行 Ping 命令,Ping 首先解析域名获取 IP 地址,然后向目标 IP 发送一个 ICMP Echo Request 消息。
②、当目标 IP 收到 ICMP Echo Request 消息后,它会生成一个 ICMP Echo Reply 消息并返回,即 Ping 响应消息。
③、发起 Ping 命令的设备接收到 ICMP Echo Reply 消息后,计算并显示从发送 Echo Request 到接收到 Echo Reply 的时间(通常称为往返时间 RTT,Round-Trip Time),以及可能的丢包情况。
Ping 通常会发送多个请求,以便提供平均响应时间和丢包率等信息,以便我们了解网络连接的质量。
-
ARP (Address Resolution Protocol): 用于在IPv4网络中根据IP地址查询对应的物理地址(MAC地址)。
- MAC 地址是数据链路层和物理层使用的地址,是写在网卡上的物理地址,用来定义网络设备的位置,不可变更。
- IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。IP 地址用来区别网络上的计算机。
ARP协议的工作过程:
①、ARP 请求
当主机 A 要发送数据给主机 B 时,首先会在自己的 ARP 缓存中查找主机 B 的 MAC 地址。
如果没有找到,主机 A 会向网络中广播一个 ARP 请求数据包,请求网络中的所有主机告诉它们的 MAC 地址;这个请求包含了请求设备和目标设备的 IP 和 MAC 地址。
②、ARP 应答
网络中的所有主机都会收到这个 ARP 请求,但只有主机 B 会回复 ARP 应答,告诉主机 A 自己的 MAC 地址。并且主机 B 会将主机 A 的 IP 和 MAC 地址映射关系缓存到自己的 ARP 缓存中,以便下次通信时直接使用。
③、更新 ARP 缓存
主机 A 收到主机 B 的 ARP 应答后,也会将主机 B 的 IP 和 MAC 地址映射关系缓存到自己的 ARP 缓存中。
-
RARP (Reverse ARP): 根据MAC地址查询IP地址(基本被DHCP取代)。
-
DHCP (Dynamic Host Configuration Protocol): 为主机自动分配IP地址、子网掩码、网关、DNS服务器等配置信息。只给接入网络的设备分配 IP 地址,因此同一个 MAC 地址的设备,每次接入互联网时,得到的 IP 地址不一定是相同的,该协议使得空闲的 IP 地址可以得到充分利用。