网际协议
网际协议:因特网中的转发和编址
目录
IPv4数据报格式#
字段 | 长度 | 描述 | |||
---|---|---|---|---|---|
版本 | 4 | 数据报的版本,通过版本号,路由器能够确定如何解释IP数据报的剩余部分 | |||
首部长度 | 4 | 确定IP数据报的数据部分实际从哪里开始 | |||
服务类型 | 8 | 用来区分不同类型的IP数据报 | |||
数据报长度 | 16 | 表示IP数据报的总长度(首部加数据),以字节计,理论最大长度为65535字节 | |||
标识、标志、片偏移 | 16、3、13 | 与IP分片相关,但在IPv6中不允许路由器对分组分片 | |||
寿命(Time-To-Live, TTL) | 8 | 用来确保数据报永远(如由于长时间的路由选择环路)在网络中循环。 | |||
上层协议 | 8 | 指示IP数据包的数据部分应交给哪个特定的运输层协议 | |||
首部检验和 | 16 | 首部检验和用于帮助路由器检测收到的IP数据报中的比特错误 | |||
源和目的IP地址 | 32、32 | 当某源生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址中插入其最终目的地的地址,通常源主机通过 DNS 查找来决定目的地址。 | |||
选项 | 32 | 选项字段允许IP首部被扩展,但在IPv6中被去掉 | |||
数据(有效荷载) | 变长 | IP数据报中的数据字段通常包含要交付给目的地的运输层报文段,也可用承载其他类型的数据 |
每当数据报由一台路由器处理时,TTL的值减1。如TTL字段减为0,则该数据报必须丢弃。
最大传送单元(Maximum Transmission Unit, MTU):一个链路层帧能承载的最大数据量。
IPv4编址#
编址规则#
- 接口(interface):主机与物理链路之间的边界;
- 子网(subnet):分开主机与路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络端点,这些隔离的网络中的每一个都叫做一个子网。
- 子网掩码(network mask):用于指示32位比特中最左侧X比特定义了子网地址,记为/x,例如192.168.2.16/24,标识192.168.2为子网地址,16为主机地址;
- 分类编址(classful addressing):将具有8、16、24比特子网地址的子网分别称为A、B、C类网络;
- 地址聚合(address aggregation):使用单个网络前缀通告多个网络的能力;
无类别域间路由选择(classless Interdomain Routing, CIDR)#
CIDR将子网寻址的概念一般化,32比特的IP地址被分为两部分,并且也具有点分十进制数形式a.b.c.d/x
:
- 其中$x$指示了地址的第一部分的比特数,这部分构成了IP地址的网络部分,并且经常被称为该地址的前缀(prefix);
- 剩余$32-x$比特可认为是用于区分组织内部设备的,其中所有设备具有相同的网络前缀;
设备地址分配#
1、获取一块地址
ICANN-->ISP-->组织
2、获取主机地址
组织-->主机
动态主机配置协议(Dynamic Host Configuration, DHCP)#
DHCP允许主机自动获取(被分配)一个IP地址,该协议具有能将主机连接进一个网络相关方面的自动能力(即插即用);
- DHCP服务器发现:一台新到的主机的首要任务是发现一个与其交换的DHCP服务器,使用
DHCP发现报文
(DHCP discover message)并通过广播来完成; - DHCP服务器提供:DHCP服务器收到一个DHCP发现报文时,用一个
DHCP提供报文
(DHCP offer message)通过广播向客户作出回应,报文中包括收到的发现报文事务ID、向客户推荐的IP地址、网络掩码、IP地址租用期(address lease time); - DHCP请求:新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供一个
DHCP请求报文
(DHCP request message)进行响应,回显配置参数; - DHCP ACK:服务器用
DHCP ACK报文
(DHCP ACK message)对DHCP请求报文进行响应,证实所要求的参数;
一旦客户收到DHCP ACK后,交换便完成了,并且该客户能够在租用期内使用DHCP分配的IP地址;同时DHCP还提供一种机制允许客户更新它对一个IP地址的租用;
3、网络地址转换
网络地址转换(Network Address Translation, NAT)#
NAT路由器对外界的行为反过来就如同一个具有单一IP地址的单一设备,也就是说NAT路由器对外界隐藏了家庭网络的细节;
- 具有专用地址的
地域
(realm):指其地址仅对该网络中的设备有意义的网络; - NAT转换表(NAT translation table):表项中包含了端口号及NAT路由器IP地址,通过该表,路由器能够知道它应将某个分组转发到对应的内部主机;
- UPnP:一种允许主机发现并配置邻近NAT的协议,用来提供NAT穿越(NAT traversal);
因特网控制报文协议#
因特网控制报文协议(Internet Control Message Protocol, ICMP):被主机和路由器用来彼此沟通网络层的信息,典型用途是差错报告;
- ICMP报文是作为IP有效荷载承载的,从体系结构上讲它是位于IP之上的,因为ICMP报文是承载在IP分组中的;
- ICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节内容,用于发送方确认引发该差错的数据报;
IPv6#
- 扩大的地址容量:IP地址长度增加到128比特。
- 简化高效的40字节首部:舍弃可选项,首部长度固定;
- 流标签与优先级:给属于特殊流的分组加上标签,这些特殊流是发送方要求进行特殊处理的流,如一种非默认服务质量或需要实时服务的流(如音频与视频传输);
字段 | 长度 | 说明 |
---|---|---|
版本 | 4 | 标识IP版本号 |
流量类型 | 8 | 区分流量类型 |
流标签 | 20 | 标识一条数据报的流 |
有效载荷长度 | 16 | 标识首部后面的字节数量 |
下一个首部 | 8 | 指定内容需要交付的协议 |
跳限制 | 8 | 转发路由器对该字段内容减1,若为0,数据报丢弃 |
源地址和目的地址 | 128,128 | 加长的IP地址长度 |
数据 | 变长 | 有效载荷 |
从IPv4到IPv6的迁移#
- 双栈(dual-stack):使节点具有发送和接收IPv4与IPv6两种数据报的能力;
- 建隧道(tunneling):将整个IPv6数据报放入一个IPv4的有效载荷中;
安全性与IPsec#
由IPsec会话提供的服务包括:
- 密码技术约定;
- IP数据报有效载荷的加密;
- 数据完整性;
- 初始鉴别
作者:issenxiao
出处:https://www.cnblogs.com/issenxiao/articles/18273629
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】