网络层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字节报头

相关推荐
Dawn-bit39 分钟前
Linux网络进阶:TCP三次握手和四次挥手与TCP连接状态
linux·服务器·网络·tcp/ip·云计算·智能路由器
TheBestRucy1 小时前
Python 九阳神功:从零筑基到线程飞升
服务器·开发语言·网络·人工智能·python
晓晓_za8986682 小时前
Geo 优化源码蒸馏词机制:地域词库构建与匹配逻辑详解
运维·tcp/ip·spring·缓存·ci/cd
xier_ran2 小时前
【infra之路】GPU 存储层次总结:L1 / L2 / HBM
java·网络·数据库
小网洞2 小时前
免费WPA无线握手包在线分析跑包网站
网络·网络安全·密码学·wps
Zguigo3 小时前
lesson30-32计算机网络第四章:网络层核心三课(作用、IP协议、IPv4地址)
tcp/ip·计算机网络·php
@insist1234 小时前
系统集成项目管理工程师-信息和文档管理
网络·数据库·软考·系统集成项目管理工程师·软考中项·软件水平考试
极客互动API4 小时前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
QH139292318804 小时前
Keysight N5183B N5183B 微波模拟信号发生器
网络·单片机·嵌入式硬件·集成测试·信息与通信
LabVIEW开发4 小时前
基于原始套接字实现LabVIEW网络Ping检测的编程方法
网络·labview·labview知识·labview功能·labview程序