网络层协议:IP

目录

1、概念

2、关键组成部分

[2.1 IP地址](#2.1 IP地址)

[2.1.1 概念](#2.1.1 概念)

[2.1.2 主要版本](#2.1.2 主要版本)

[2.1.3 IP地址分类](#2.1.3 IP地址分类)

[2.2 IP数据报(IP协议传输的基本数据单元)](#2.2 IP数据报(IP协议传输的基本数据单元))

3、工作原理

[3.1 路由](#3.1 路由)

[3.2 分片与重组](#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 地址 = {<网络号>,<主机号>}。

  1. 网络号:它标志主机所连接的网络地址表示属于互联网的哪一个网络。
  2. 主机号:它标志主机地址表示其属于该网络中的哪一台主机。

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)来动态交换网络可达性信息,自动更新和维护路由表。

转发过程:

  1. 主机或路由器检查目标IP地址。

  2. 查找路由表,找到最长前缀匹配的路由条目(即与目标地址网络部分匹配最长的条目)。

  3. 根据匹配的路由条目:

    • 如果下一跳是直接相连的网络,则通过ARP(IPv4)或邻居发现(IPv6)获取目标主机的物理地址(MAC地址),将数据报封装在数据链路层帧中直接发送。

    • 如果下一跳是路由器(网关),则通过ARP/邻居发现获取该网关的物理地址,将数据报封装在帧中发送给网关。

  4. 网关路由器收到后,重复上述查找路由表和转发的步骤,直到数据报到达目标网络或TTL耗尽。

3.2 分片与重组

原因: 数据链路层(如以太网)有 最大传输单元 (MTU) 限制。当IP数据报长度大于路径中某个网络的MTU时,就需要分片。

过程:

  1. 路由器(或源主机)将原始数据报分割成多个较小的 分片 (Fragments)。

  2. 每个分片都有自己的IP报头(大部分字段复制自原始报头,但总长度、标识、标志、片偏移会修改)。

  3. MF标志位:除了最后一个分片设为0,其他分片都设为1。

  4. 片偏移表示该分片数据在原始数据报数据部分中的起始位置(以8字节块为单位)。

  5. 分片独立路由到目的地。

重组: 只有目的主机 负责将所有具有相同标识的分片,按照片偏移顺序重新组装成原始数据报。如果缺少任何分片,整个原始数据报会被丢弃,重组失败。

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 地址可以得到充分利用。

相关推荐
贞明电子8 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
明天也要努力学习9 小时前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
HideF9 小时前
Linux
linux·服务器·网络
万联WANFLOW9 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
sbjdhjd9 小时前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
taktok_ai11 小时前
用 cc-switch 连接 Taktok
网络
小嘉丶学长13 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
LCG米14 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
pt104315 小时前
Cisco设备网络安全系列-18:SIEM与SOAR安全解决方案
网络·安全
Tel1992530800415 小时前
温度湿度信号转WiFi/MQTT/Modbus TCP采集模块 无线传输
网络·网络协议·tcp/ip·工业自动化·工控设备