【TCP/IP】IP地址与数据报
IP地址与数据报
在TCP/IP通信中,互相连接的网络使用IP地址对主机和路由器
进行标识
数据报记录了传输过程
的相关信息,包含IP地址、大小以及分片信息等
- IPv4
- IPv6
- 定义
- 分类
- 广播地址
- 子网掩码
- 首部
地址形式
4个字节共
32位
,每8位
1组中间以".
"隔开,常以十进制
表示10101100.00010100.00000001.00000001
172.20.1.1
这样计算最多允许43亿台计算机连接到网络组成:网络标识(网络地址) + 主机标识(主机地址)
每一台主机上的每一块NIC
都得设置IP地址,路由器往往会有多个网卡
- 网络地址:对
网络
的标识,在互相连接的每个网段的地址不重复 - 主机地址:对
主机
的标识,在相同网段内相连的主机必须有相同的网络地址与不同的主机地址 - 在地址后加一个
数字
来标识网络地址占多少位
,用"/
"分隔,前面的0可以省略
//同一网段主机标识为10和1的两台主机 192.168.128.10/24 , 192.168.128.1/24
现在基本使用
子网掩码
(网络前缀)来区分网络地址和主机地址,上述方法在特定场景依然存在
共四个级别:A类、B类、C类、D类
文章图片
根据
第1位到第4位
的比特对
网络地址和
主机地址进行区分
A类地址:0 + 7位网络地址 + 24位主机地址- 0.0.0.0~127.0.0.0:一个网段内可以容纳16,777,214个主机地址
- 128.0.0.0~191.255.0.0:一个网段内可以容纳65,534个主机地址
- 192.0.0.0~223.255.255.0:一个网段可以容纳254个主机地址
- 224.0.0.0~239.255.255.255:常用于多播
广播地址:在
同一个链路
中互相连接的主机之间发送数据包(主机地址全为1)- 本地广播:在本网段内的广播
- 直接广播:在不同网络之间的广播
192.168.0.0/24向192.168.1.255/24发生数据,路由器会根据路由表会将数据包发给192.168.1.0/24
从而所有192.168.1.1~192.168.1.254的主机都可以收到这个包
特定组
内的所有主机(D类地址)前4位1100,后28位为多播的组编号
私有地址
随着互联网的迅速普及,
IP地址不足
的问题日趋显著,就出现了一种技术,不要求为每一台主机或路由器分配一个固定的IP地址,而是在必要的时候
只为相应数量的设备分配
一个唯一IP地址在
独立的网络
中各自随意地设置
IP地址,可能会在需要连接互联网
的时候发生地址冲突
,这就出现了私有网络
的IP地址- 分类:A类、B类、C类
A类:10.0.0.0~10.255.255.255 (10/8)
B类:172.16.0.0~172.31.255.255 (172.16/12)
C类:192.168.0.0~192.168.255.255 (192.168/16) - 在这些范围内的网络为
私有网络
,在此之外的为全局网络
- 初始的设计并不考虑让私有网络连接互联网,只在独自的网络中进行数据交互
NAT技术
能够互换
私有IP与全局IP,在IPv6尚未普及,IPv4地址逐渐耗尽,使用NAT技术解决问题是当前互联网的现状
私有IP在自己的域中唯一,全局IP在整个互联网中唯一
使用IP地址的分类时会造成浪费
一个IP地址只要确定了分类也就确定了它的网络标识和主机标识子网掩码的识别码通过子网网络地址细分出比A类、B类更小粒度的网络
网络标识相同
的计算机必须同属于同一个链路
,例如在架构B类IP网络时,理论上在一个链路内允许6万5千多台计算机连接
在实际的架构中这是不存在的,直接使用A类、B类...地址就显得浪费资源
实际是哪个就是将原来分类中的主机地址用作子网地址,将原网络分为多个物理网络的一种机制
子网
:从分类网络中的划分出的一部分- 为了确定网络区域,分开主机和路由器的每个接口,从而产生了若干个
分离的网络岛
,接口端连接了这些独立网络的端点。这些独立的网络岛叫做子网 - 传统的分类中,不同的网段之间需要网关连接,子网则是更细微的网络
- 引入子网后,IP地址就有个
两种识别码
,一个IP地址本身,另一个是表示网络部的子网掩码
子网掩码
:32位,IP地址网络部分全为1,IP地址主机部分全为0//以172.20.100.52的前26位网络地址的地址为例
IP地址:172. 20. 100. 52
子网掩码: 255.255. 255.192
文章图片
不拘泥于是哪种网络类型,可以1.5 首部自由的表示网络标识
就如上面的示例,在普通分类中并没有26位的网络地址类型
通过IP进行通信时,需要在数据前面加入
IP首部信息
,IP首部中包含着用于IP协议进行发包控制
时所有的必要信息文章图片
数据部分前是IP首部
- 版本4~6:IPv4、ST、IPv6、TP/IX、PIP、TUBA
- 首部长度:单位为
4字节
,无可选项时为5
,也就是20个字节 - 区分服务:前三位-优先级、4-最低延迟、5-最大吞吐、6-最大可靠、7-最小代价
上述是TOS表示法,现在还有将其分为两段DSCP(前6位)、ECN(后2位)
- 总长度:IP首部与数据部分
总字节数
,216-1个字节 - 标识ID:标识分片ID,一个包拆分的分片有相同的标识ID
- 标志:1 - 必须是0,2-
是否分片
、3-0表示该包是分片结束
的包 - 片位移:每个
分段
相对于原始数据的位置
- 生存时间:记录当前包在网络上应该生存的期限,经过一个路由则减1
- 协议:IP包传输层的
上层协议编号
,ICMP-1、IP-4、TCP-6、UDP-17、IPv6-41 - 首部校验和:用于确保IP数据报不被破坏
初始全为0,以16位划分IP首部,用
1补数
计算所有16位字的和,将所得和的1补数赋给首部校验和字段 - 可选项:
长度可变
,用于实验与诊断,包括安全级别、原路径、路径记录、时间戳 - 填充物:填充
0
,由于可选项的存在,需要填充物将首部位数设置为32的整数倍
- 数据:包括
上层协议的首部
信息以及具体的数据内容
- 定义
- 特点
- 应用
- 首部
地址形式:
128位
,16位一组
使用":
"进行分隔,用16进制
表示地址结构
类型 | 网络地址 | 缩写 |
---|---|---|
未定义 | 0000...0000 | :: /128 |
环路地址 | 0000... 0001 | :: 1/128 |
唯一本地地址 | 1111 110 | FC00 :: /7 |
链路本地单播地址 | 1111 1110 10 | FE80 :: /10 |
多播地址 | 1111 1111 | FF00 :: /8 |
全局单播地址 | 其他 |
- 【【TCP/IP】IP地址与数据报】全局单播地址:世界
唯一
的一个地址,互联网通信中和各个域内部所使用的IPv6地址
网络地址:n位
全局路由前缀
(广域网络) + m位子网ID
(站点内部)
主机地址:128-n-m位接口ID(可以是MAC地址
,通常会使用一个随机产生的临时地址
保证安全) - 链路本地单播地址:同一数据链路内的唯一地址,不经过路由器在同一个链路内通信
1111 1110 10 + 54位0 + 64位MAC地址
- 唯一本地地址:不进行互联网通信时所用的地址,通过NAT技术与代理联网的环境下使用
1111 110 + L(通常为1) + 40位全局ID + 16位子网ID + 64位MAC地址
互联网通信使用2.2 特点全局单播地址
不使用路由器或者在同一个以太网网段使用链路本地单播地址
同一链路也可以使用唯一本地地址
进行通信
可以同时将这些IP地址全都配置在同1个NIC上,按需灵活使用
分片处理
在发送端的主机
上进行,减少路由器负荷,提高网速,需要路径MTU发现
技术提供路径中的最小传输单元的最小值
,防止在路由器转发时包过大还需要分片处理
- IP地址的扩大与路由控制表的聚合
IP地址依然适应互联网分层结构,分配与其地址结构相适应的IP地址,尽可能避免路由表膨大 - 性能提升
包首部长度采用固定值,不用首部校验和
,路由器不再做分片处理
结构简化、降低路由器负荷 - 即插即用
即使没有DHCP服务器也可以实现自动分配IP地址
- 认证与加密
应对伪造的IP地址的网络安全功能,防止线路窃听的功能 - 多播、Mobile IP成为扩展功能
- 不仅仅解决了IPv4地址耗尽的问题,甚至视图弥补IPv4中绝大多数缺陷
文章图片
- 通信量类:类似于IPv4中的IOS,表示
服务质量
(速率、吞吐量、优先级等) - 流标号:
服务质量控制
,与源地址+目标地址共同标识一个流 - 有效载荷长度:类似于IPv4的
总长度
,首部+数据,包含可选项 - 下一个首部:类似于IPv4的
协议
字段,标识上一层协议的编号 - 跳数限制:类似于IPv4的
生存时间
,标识可通过路由器个数
- 扩展首部:IPv6的首部是
固定长度
,使用扩展首部作为其扩展项
当在路由中
必须分片
时,在扩展首部中添加标识
以及标志
字段
推荐阅读
- 宽容谁
- 我要做大厨
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘