网络层IP

公网IP全球具有唯一性

ip用点分十进制标识(IPV6)

eg.

121.41.6.245,范围为0,255.0,255.0,255.0,255

目的ip地址 = 目标网络 + 目标主机

主机:配有ip,但是不进行路由控制

路由器:配有ip,且进行路由控制

IP的核心作用:把数据包跨网络转发到目标主机

但是转发到目标主机不一定成功(可能丢包),如果丢包了,就需要TCP协议处理(重传)

上图所示,左边是传输层报头的结构,右边是网络层报头的结构

网络层传输的路径就是由源IP地址和目的IP地址决定的

IP报头的解包:

IP报头报头包括前面20个字节和选项,后面的数据则是报文的有效载荷

IP的报头有里包含四位首部长度,IP报文在计算长度时存在四字节的基本单位

所以实际上报头的取值范围为 20, 60,有四十个字节的选项

去掉前20个字节,剩余的就是选项

16位总长度则是包括了有效载荷的整个报文大小

IP报文通过4位首部长度和16位总长度来进行解包和封包

8位协议字段用来处理分用问题

在tcp/udp封装时,会将自己的协议号填上

根据8位协议,报文技能够继续向上选择tcp或udp继续解包

8位服务类型包括3位优先权字段(已弃用),4位TOS字段和1位保留字段

可以选择要用什么样的方法来转发报文(最小延时,最大吞吐量,最高可靠性,最小成本)

**8位生存时间(TTL)**是报文的生存时间

TTL是一个计数器,每经过一个路由器,计数器--,如果减到0,还没有到达,就就丢弃报文

这是为了防止出现路由循环

子网划分

IP地址 = 网络地址 + 主机地址

同一个子网的IP地址的网络号(网络标识)是一致的(前三位是网络号,一个子网中的网络号都一致)

路由器存在两个IP地址,因为路由器同时属于两个子网

家里第一个入网的设备是路由器,路由器具有构建子网的能力

子网划分可以更快的找到目标IP,根据网络号找到对应的IP地址,查找效率更高

不用再一个一个ip遍历

报文再进行转发的过程中,在到达目标网络之前,只关注IP中的目标网络部分

不同的子网就是把网络号相同的主机放到一起

过去的划分网络号和主机号的方案:

IP地址总共32位

IP地址可以分为ABCDE五类

其特点和范围如下

子网掩码

但是由于大部分组织都申请B类网络地址,导致B类地址很快就分配完了,而A类浪费了大量地址

为此引入了新的划分方案:子网掩码

子网掩码也是32位的正整数,通常用一串0结尾

将IP地址和子网掩码进行按位与,得到的结果是网络号

网络号和主机号的划分与这个地址是A类,B类还是C类无关

全0和全1分别位网络号和广播地址,是特使ip,不能分配给主机,因此实际上的子网地址范围为

256 - 2 = 254

IP地址的数量限制

IP地址总共有2^32个,而每一个主机都需要一个IP地址

同时由于特殊IP地址的存在,数量原不足2^32个

因此会采用:

1.动态分配IP地址

2.NAT技术

3.IPv6(用16个字节,总共128位)

来解决IP地址不足的问题

私有IP地址和共有IP地址

局域网中使用的私有IP地址,理论上可以随便使用

但是规定了私有IP地址:

私有IP,只能用来组建局域网,不能出现在公网中

私有IP由于只在内网中使用,所以不同的子网,IP地址可以重复

但是公网IP不能重复

我们的报文必须经过运营商的转发,才能到达公网

内网到公网的过程:

报文从主机转发到家用路由器,然后将src(源IP地址)替换成所经过路由器的WAN口IP

然后该报文会被转发到运营商的出入口路由器

然后继续修改src,替换成所经过路由器的WAN口IP

至此,源IP和目标IP都变成了公网IP

然后通过公网转发,随后目标IP地址的主机进行应答

根据dst发送回公网的原本的位置

这就是NAT技术

NAT技术缓解了IP地址不足的问题

因为他单独切分了一部分IP,只用他来做内网

这样IP地址就可以被重复利用了

全球网络就是对全球公网IP地址进行划分的过程

划分公网IP由各国家,公司,学校等进行申请的

有路由表存储目标网络的IP地址与其对应的地区

eg.

在查路由表时,如果找不到,就会找缺省路由,缺省路由通常是上一级路由,省级路由器的缺省路由是国际路由

路由

路由的过程就是子网间跳跃的过程

路由器要配置默认路由(缺省路由)

路由器的路由表找不到目标IP,就会找缺省路由,升到上一级路由,再进行寻找

目标IP = 目标网络 + 目标主机

在网络里通过目标网络寻找,到达目标网络后,通过目标主机寻找

主机 + 路由器是自己的网络层,记录配置了自己的路由表信息

可以使用route来查询路由表

转发过程:

IP报文转发的过程,本质就是在各个子网间进行转发

IP主要解决的核心问题就是路径选择(淘汰其他子网)

IP转发过程:

1.寻找目标网络

2.内网进行转发

数据链路层规定,单次发送的数据帧的有效载荷的长度不能超过MTU(一般为1500)

IP报文太长了,会进行分片,分片工作通常由网络层进行

分片后也由网络层进行组装

分片和组装的详细信息被包括在报头中

分片的报文,如果有任意一个丢失,就会判定丢包

分片之后,丢包率增加了

分片不能作为网络发送的主流

所以要尽量减少分片,就要传输层不要发送太大的报文段

如果分片,则16位标识必须全为1

三位标志位,第一位保留,第二位表示禁止分片,如果该位置为1,且报文长度超过MTU,则丢弃该报文,第三位表示更多分片,如果分片了,最后一个分片位置为0,其他为1

13位片偏移是分片相对于原始IP报文开始处的偏移

接收方可以根据16位标识位,片偏移和三位标识来判断是否分片

接收方根据16位标识,确认分片是否放在一起

然后根据片偏移进行升序排序

如果报文开头+偏移量=下一个报文的地址,重复这个过程就能确认是否收起所有分片

片偏移,是数据相对与原始IP报文有效载荷的开始偏移量

片偏移具体的数字,必须是8的整数倍,因为片偏移的数字是实际数据 / 8

8 = 2^3,0, 2\^13\*2\^3 = 2\^16

因为前面的三位被分片标志位占用了

分片后,每一片,都是一个IP报文,每一片都要包含IP报头

所以分片时,不包括报头,直接分片有效载荷,然后填充16位标识,3位标识和13位片偏移

一个分片最多填充1480字节有效载荷+20字节报头

相关推荐
wang_shu_mo_ran8 小时前
网络编程(二):UDP数据报在客户端与服务端之间的传输
网络·网络协议·udp
humors2218 小时前
【转帖】关于防范AI编程工具Claude Code安全后门隐患的风险提示
网络·安全·ai编程
深度智能科技9 小时前
IPv6无网络访问权限怎么解决?【图文讲解】Win10/Win11 IPv6无网络访问权限完整修复实操教程
网络·ipv6·深度c盘清理·ipv6协议开启自动获取ip·ipv6无网络访问权限·上不了网怎么办·防火墙拦截ipv6
梦帮科技9 小时前
Rust+Tauri+EVM:构建下一代内存安全级数字版权(DRM)主权音频网络与跨链金融系统的技术实践与全景架构
网络·安全·架构·rust·区块链·音视频·web3.py
mudtools9 小时前
HttpUtils:一个编译时生成的声明式 HTTP 客户端框架
网络·网络协议·http·.net
luj_176817 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
吴懿不在17 小时前
某次热身赛re方向wp WORDS 51,500 READ 172 MIN base64,
网络
小林ixn21 小时前
从“玩具工具”到“跨语言利器”:MCP 协议实战解析
运维·服务器·网络
2603_954708311 天前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
青岛前景互联信息技术有限公司1 天前
以新标准为底座,前景互联打造高危场景智能接处警新体系
大数据·网络·人工智能