ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

第十六节 IP协议格式

第十六节 IP协议格式

一、IP协议

1.1、协议格式:

4位版本:描述当前协议版本ipv4,ipv6……

4位头长:描述IP报的头部长度,最小20字节,最大60字节

8位服务类型;1位保留0;3位优先权;4位服务类型:最小成本,最低延迟,最高可靠性,最 大吞吐量

16位报文长度:描述ip报文最大64k;IP报文中的数据最大64k-20

16位分片标识:IP报文长度超过了MTU则会进行分片,在对端进行分片重组;

3位分片标志:1位禁止分片,1位分片末尾标志,1位保留

13位分片偏移:以8字节位单位,描述该分片在原始报文中相对起始位置的偏移量

8位TTL:报文生命周期,描述报文所能经过的最大路由器跳数;每经过一跳就会-1 ,为0时 丢弃

8位数据协议类型:描述IP报文中的数据所采用的协议,以便于数据解析

16位校验和:检验数据一致性

32位源端IP地址+对端IP地址:描述通信两端主机

0……40字节选项数据。

1.2、IP地址组成

为了简化IP地址分配,因此决定划分网络进行分配,每个网络分配的IP地址应该拥有唯一的网络标识,以及网络中的主机唯一标识

网络号:网络的唯一标识

主机号:是主机在自己所属子网中的唯一标识

网络的划分:早期划分位五类网络

A:高位0固定,7位网络号(0~127),24位主机号

B:高位固定10,14位网络号(128.0~191.255),16位主机号

C:高位固定110,21位网络号(192.0.0~233.255.255),8位主机号

D:高位固定1110,用途:多播组网;范围

E:高位固定1111,用途:保留实验,范围

当引入CIDR方案:一种向前兼容的新方案,在原来的基础上做更加细致的网络划分

子网掩码::连续的二进制1组成的;与IP地址相与得到网络号,取反得到网络中得主机号个数

特殊IP地址:

0.0.0.0:表示当前主机上,所有的网卡地址,常用于网络服务端绑定监听地址,绑定了该地地址的指定端口,则意味着该主机上所有网卡收到的指定端口的数据,都会给这个socket。

127.0.0.1:127网络中的地址都是用于网络测试的地址(虚拟回环网卡的地址)

主机号全为0的地址:网络号(不分配给主机的,是一个网络的标识)

主机号全为1的地址:局域网广播地址

私网和公网:

(内网和外网)有一些特定的网络专门用于组建私网(基于NAPT技术节省IP地址使用) 组建私网:10. 172.16~172.31;192.168.0

二、路由选择

1、每个路由器中都有一个路由表:记录所连接的网络网络号+子网掩码+连接该网络的网卡……

使用数据中的目的IP地址,与路由表中每一项路由数据的子网掩码相与后与该网络比较,如果一致,则表示该主机,就是属于该网络的,这时候选择合适的路径转换技术

2、转发的时候,当前我们大多数网络都使用了NAPT网络地址端口转换技术

NAPT技术:组建一个小型私网,让私网中的主机使用同一个对外的IP地址进行通信。

3、转发的时候会将数据中源端地址进行转换,转换为自己对外的地址端口。

三、链路层

功能:负责相邻设备之间的数据传输

MAC地址:物理网卡的硬件地址(出厂设置) 48位数字,网卡(通信设备)的唯一标识,如图:

3.1、以太网协议

6B源端MAC地址+对端MAC地址:用于相邻设备之间的定位描述

2B数据协议:描述内部数据的协议类型,以便于进行数据解析

4B检验和:检验数据一致性

产生问题:对端的MAC地址如何获取?

3.2、ARP协议:

介于网络层与链路层之间的协议

功能:通过IP地址,获取指定相邻设备的MAC地址

①组织ARP请求数据包

填充自己的IP地址+自己的MAC地址+其他各项要素+目标IP地址

发送给所有与自己连接的设备

②相邻设备收到ARP请求后,对比目标IP是否与自己一致,若一致,则组织ARP应答,将自己的MAC 地址填充进去,进行回复

③收到ARP回复后,会在本地建立IP地址与MAC地址映射缓存数据(维持30秒)---因为DHCP动态地址分配技术,导致一台设备IP地址是不固定的

3.3、DHCP动态地址分配:

①一台主机连接网线,就会全网广播,就会全网广播DHCP请求给自己连接的设备

②若连接的设备是一个路由器,收到请求,就会进行DHCP回复,分配IP地址,,子网掩码,网关地址(路由器的IP地址)

因此每台主机连接到一个网络后,都能知道自己所连接的路由器的IP地址。

3.4、ARP局域网欺骗攻击:

①一台设备,连接到网络后,伪造IP地址不断的向路由器发送ARP回复

目的:为俩让路由器认为自己就是网络中的所有设备(路由器就会将发往局域网内所有设备的数据,发给该主机)

②一台设备,连接到网络后,伪造IP地(路由器),不断的广播ARP回复

目的:让所有设备都认为自己就是路由器,所有设备的数据都会发往该设备

解决方案:在路由器中设置MAC地址白名单

MTU:最大传输单元,链路层限制的最大数据大小(不包含链路层报头在内)

根据不同的组网技术,大小不一样

MTU对编程的影响:影响数据在网络中是否需要进行数据分片

①一个完整是的报文(UDP),若过大(64k),受限于MTU大小(以太网1500B),在网络层就会进行数据分片,包含IP报头,UDP报头在内+数据不能超过1500B,分片后进行发送

②这些分片到达对端主机之后,会进行分片重组

重组的时候,任意一个分片出问题,整个报文都会被丢弃

分片越多,报文传输问题的概率就越大

因此程序员就选需要控制,应用层提前分包,尽量避免网络层的数据分片(UDP, 1472)

但是TCP不需要考虑分片的问题:因为TCP在传输层会根据MTU计算MSS然后进行数据 分段传输

3.5、网络代理:VPN----翻墙

代理技术与NAT技术区别是什么?

代理技术:工作的应用层,目标通信主机就是代理服务器IP,类似于代购

NAT/NAPT技术:工作在网络层,目标设备就是通信目标设备,代卖商家

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进