【Java EE】IP协议

IP协议详解

IP协议基础

IP协议工作在OSI模型的网络层(或TCP/IP模型的网际层),其主要特点是无连接、不可靠和尽力而为的数据传输服务。

  • 无连接:通信前无需建立连接,每个数据包(IP数据报)独立路由。
  • 不可靠:不保证数据包一定能送达目的地,也不保证按序到达,不提供确认和重传机制。可靠性由上层协议(如TCP)保障。
  • 尽力而为:尽最大努力交付数据包。

下面是 TCP/IP 协议栈的层次结构示意图,IP 协议位于网际层:
网络接口层
Ethernet
WiFi
PPP
网际层
IP
ICMP
ARP
传输层
TCP
UDP
应用层
HTTP
FTP
SMTP
DNS

IP数据报格式

一个IP数据报由首部数据两部分组成。首部包含了路由和交付所需的所有控制信息。

关键字段说明:

字段 位数 说明
版本 4位 标识IP协议版本(对于IPv4数据包,该字段的值固定为 4;对于IPv6数据包,其版本字段的值则为 6)
首部长度 4位 以4字节为单位,指示首部长度(可能包含可变长的选项字段(如时间戳、源路由等),因此首部长度是可变的)
服务类型 8位 用于指示数据报的优先级、延迟、吞吐量等要求
总长度 16位 定义整个IP数据报(首部+数据)的长度,最大65535字节
标识、标志、片偏移 --- 用于IP数据报分片与重组
生存时间 8位 数据报在网络中可经过的最大路由器跳数,每经过一个路由器减1,为0时被丢弃,防止数据报无限循环
协议 8位 指示上层协议(如下面的常见上层协议的标识号补充列表所示)
首部检验和 16位 用于校验首部在传输过程中是否出错
源IP地址和目的IP地址 各32位 数据报的发送方和接收方的逻辑地址

常见上层协议的标识号补充列表:

协议号 协议名称 说明
1 ICMP 互联网控制消息协议
2 IGMP 互联网组管理协议
6 TCP 传输控制协议
17 UDP 用户数据报协议
47 GRE 通用路由封装协议
50 ESP 封装安全载荷协议
51 AH 认证头协议
88 EIGRP 增强型内部网关路由协议
89 OSPF 开放最短路径优先协议
115 L2TP 第二层隧道协议

这些标识号在IP报文头部的「协议」字段中使用,用于指示IP数据包承载的上层协议类型。

IP数据报分片机制

由于不同物理网络的最大传输单元(MTU)各不相同(如以太网MTU为1500字节,而某些广域网链路MTU可能更小),当IP数据报的总长度超过下一跳链路的MTU时,IP协议会自动将数据报拆分成多个较小的数据报 ,这个过程称为分片。分片后的每个数据报都拥有与原数据报相同的标识字段,以便接收端识别它们属于同一个原始数据报。

分片相关的三个关键字段:

  • 标识:源主机为每个原始数据报分配的唯一编号,所有分片共享该标识,用于重组时归并。
  • 标志 :3位标志位,其中:
    • DF(Don't Fragment):置1表示不允许分片,若数据报超过MTU则直接丢弃并返回ICMP错误。
    • MF(More Fragments):置1表示后面还有更多分片,置0表示这是最后一个分片。
  • 片偏移:以8字节为单位,指示当前分片在原始数据报中的偏移位置,用于重组时按顺序拼接。

分片只在路由器上进行,重组则在目的主机完成。IP协议本身不提供重传机制,如果某个分片丢失,整个数据报都会被丢弃,可靠性由上层协议(如TCP)保障。

地址管理

IP地址是IP协议中用于唯一标识网络中设备的逻辑地址。

IP地址的表示与分类

IPv4地址是一个32位的二进制数,通常用点分十进制表示(如 192.168.1.1)。


图:传统的IP地址分类(A、B、C、D、E类)

类别 前缀二进制位 网络号位数 主机号位数 用途
A类 0 8位 24位 用于大型网络
B类 10 16位 16位 用于中型网络
C类 110 24位 8位 用于小型网络
D类 1110 - - 用于多播
E类 1111 - - 保留

子网划分与子网掩码

分类地址浪费严重,子网划分允许将一个大的网络号(A、B、C类)划分成多个更小的子网。

子网掩码是一个32位的数字,它由一串连续的1后跟一串连续的0组成。1对应网络号和子网号部分,0对应主机号部分。通过与IP地址进行"按位与"操作,可以提取出网络地址。

图:子网掩码用于区分IP地址中的网络部分和主机部分

例如,一个C类地址 192.168.1.0/24,使用子网掩码 255.255.255.224(或 /27)可以将其划分为多个子网。

图:将一个C类网络划分为多个子网的计算过程

特殊IP地址

类型 示例或格式 用途
网络地址 192.168.1.0(主机位全0) 标识网络本身,不分配给具体主机。
直接广播地址 192.168.1.255(主机位全1) 向该网络内所有主机发送数据包。
受限广播地址 255.255.255.255 仅在本地网络内广播,路由器不转发。
本机环回地址 127.0.0.1 测试本机网络协议栈,数据不离开主机。
链路本地地址 169.254.0.0/16 DHCP失败时自动分配,用于本地通信(如Windows的APIPA地址)。

补充说明

  • 网络地址直接广播地址的主机位规则适用于所有IPv4地址(如A/B/C类网络)。
  • 链路本地地址范围是169.254.0.1至169.254.255.254(RFC 3927)。

私有IP地址与NAT

为了缓解IPv4地址枯竭问题,RFC 1918规定了三类私有IP地址范围,这些地址不能在公网上路由,主要用于内部网络。

网络地址转换是使私有网络能够访问公网的关键技术。NAT路由器将内部私有IP地址和端口号,映射为公网IP地址和端口号。

NAT地址转换可视化网站

图:NAT(网络地址转换)工作流程示意图


IPV6

为了解决地址枯竭问题~
IPv6

路由选择

IP协议的核心功能之一是通过路由选择将数据包从源主机传递到目的主机。

路由表与转发

每个路由器或主机都维护一张路由表,表项通常包含:目的网络地址、子网掩码、下一跳地址、出接口等。

图:一个典型的路由表结构,包含网络地址、掩码、网关和接口

补充:转发过程+路由协议

域名系统

域名系统将人类可读的域名(如 www.example.com)转换为机器可读的IP地址。

DNS层次结构与解析过程

DNS是一个分布式的、层次化的数据库系统。
根域名服务器

.
顶级域名服务器

.com
顶级域名服务器

.org
顶级域名服务器

.net
顶级域名服务器

.edu
顶级域名服务器

.cn
权威域名服务器

example.com
权威域名服务器

google.com
权威域名服务器

wikipedia.org
权威域名服务器

baidu.com.cn
子域名服务器

www.example.com
子域名服务器

mail.example.com
子域名服务器

www.google.com
子域名服务器

maps.google.com
子域名服务器

en.wikipedia.org
子域名服务器

www.baidu.com

递归/迭代查询过程

  1. 主机向本地DNS服务器发起递归查询。
  2. 本地DNS服务器代表主机向根域名服务器、顶级域名服务器、权威域名服务器进行迭代查询,最终获得IP地址。
  3. 本地DNS服务器将结果返回给主机,并可能缓存起来。

DNS记录类型

记录类型 说明 例子
A记录 将域名映射到 IPv4 地址 example.com93.184.216.34
AAAA记录 将域名映射到 IPv6 地址 example.com2606:2800:220:1:248:1893:25c8:1946
CNAME记录 域名别名,将一个域名指向另一个域名 www.example.comexample.com
MX记录 邮件交换记录,指定负责接收邮件的服务器,并带有优先级 example.commail.example.com (优先级 10)
NS记录 指定该域名的权威域名服务器 example.comns1.example.com
TXT记录 存放任意文本信息,常用于 SPF、DKIM、DMARC 及域名验证 example.com"v=spf1 include:_spf.google.com ~all"
SOA记录 授权起始记录,包含管理信息(主DNS、管理员邮箱、序列号等) example.comns1.example.com admin@example.com 2024052401 3600 ...
PTR记录 指针记录,用于反向解析:IP 地址 → 域名 34.216.184.93.in-addr.arpaexample.com
SRV记录 服务定位记录,指定特定服务的主机名和端口 _sip._tcp.example.comsip.example.com:5060
CAA记录 证书颁发机构授权,限制谁能签发证书 example.com0 issue "letsencrypt.org"
相关推荐
tom02189 小时前
2026年5月23日软考中级网络工程师考题答案整理
网络·网络工程师·软考·答案·试题·2026年
韦胖漫谈IT9 小时前
提示词注入- 大语言模型 OWASP TOP 10系列
网络·人工智能·语言模型·大模型安全·owasp
顾凌陵10 小时前
SQL注入漏洞进阶篇
网络·sql
godspeed_lucip10 小时前
LLM和Agent——专题3: Agentic Workflow 入门(2)
网络·人工智能·python
网络与设备以及操作系统学习使用者10 小时前
vi与vim在openEuler中的差异及应用
linux·运维·网络·学习·vim
2401_8685347810 小时前
30个网络工程师面试题
网络·智能路由器
相思难忘成疾10 小时前
Ubuntu 入门:安装、网络、软件一站式教程
linux·网络·ubuntu
凯瑟琳.奥古斯特10 小时前
常见加密算法及应用
java·开发语言·网络·网络协议·职场和发展
hello world 99910 小时前
【网络问题】网卡发送数据包错误
网络·tcp/ip·计算机网络