当前位置: 首页 > news >正文

【网络原理】IP协议

 

目录

​编辑

一. IP协议的作用

二. IP协议报头

三. 拆包和组包

四. 地址管理

1)动态分配IP地址

2)NAT机制(网络地址映射)

3) IPV6 

五. IP转换

 1)客户端到服务器

2)服务器到客户端

六. 网段划分

七. 路由选择


一. IP协议的作用

1)地址标识和寻址

使用一套地址体系,为每一个网络设备分配唯一的IP地址,这里的网络设备不仅是路由器,服务器,交换机,电脑,手机都会有独一无二的IP地址

2)路由选择

IP协议应用于网络层,关注具体的传播路径 ,路由器会根据IP地址和路由表,动态规划出数据包的最佳路径

二. IP协议报头

这里介绍的IP协议报头是IPv4报头 

(1)4位版本号

标识IP协议版本,IPv4为4,IPv6为6

(2)4位首部长度

 这里的单位是4字节,不包含选项是20字节,最大为60字节

(3)8位服务类型TOS(type of service)

这里只有4位有效,这4位彼此之间相互冲突,只能有1位为1,其余3位只能为0

这四位分别是:最小延时,最大吞吐量,最高可靠性,最小成本(硬件设备开销)

(4)16位总长度

描述一个IP数据包的总长度(报头+载荷)最大为65535字节。

(5)16位标识

唯一标识一个数据包。若数据包被分片,所有分片共享同一标识,用于重组。

(6)3位标志

控制分片行为

  • Bit 0:保留位(必须为0)。
  • Bit 1(DF, Don't Fragment):若为1,禁止路由器分片(若数据包超过MTU则丢弃)。
  • Bit 2(MF, More Fragments):若为1,表示后续还有分片;若为0,表示这是最后一个分片。

(7)13位片偏移

描述包的先后顺序,当前分片在原数据包中的位置

(8)8位生存时间(TTL)

这里的生存时间不是s和ms,而是次数,一个IP数据包,每经过一个路由器转发,TTL就会-1

如果这个数值变成了0,则会直接丢弃,这样的目的是防止一个数据包无限转发下去

(9)8位协议

这个表示在传输层使用了那种协议

(10)16位首部校验和

这里的校验只是针对IP首部,对于载荷部分,在传输层会校验

(11)32位源IP地址和32位目的IP地址

表示了发件人和收件人的地址

三. 拆包和组包

1. 拆包

为什么要拆包?

  • 根据IP协议的报头,IP数据包最大的长度为65535字节,传输层如果传输的数据很有可能超过这个大小,那么IP协议这一层就会将这个很大的数据拆分为多个IP数据包,每个IP数据包会携带载荷的一部分
  • 数据链路层每次最大传输数据量也存在限制

像这样的拆包行为,由IP自动完成,在操作系统内核会自己实现 这里的拆包主要是因为数据链路层限制


2. 组包

如何组包?

这里主要依靠标志,标志和片偏移

  • 16位标志用于表示那些IP数据包应该放在一起
  • 3位标志只有两位有效位,分别表示这个数据包是不是拆包得到的,这个数据包是不是最后一个数据包
  • 13位片偏移描述这些包之间的先后顺序

这三个少一个都不行,缺少一个都不能实现组包功能


四. 地址管理

 IP协议本质上就是一个32位整数,可以表示的数据范围是0~42亿9千万

 IP地址存在的意义就是为了能够区分网络上的不同设备,希望每一个网络设备都有唯一的IP地址

  • 42亿9千万的IP地址,看上去很多,其实不够用,全世界有80亿人,每个手机都分配一个IP地址,更何况一个人可能有多个手机,更何况很多个路由器也需要分配地址

 如何解决IP地址不够用的问题?

1)动态分配IP地址

 全世界的网络设备,并不是同一时刻都在上网,给正在上网的网络设备分配IP地址

2)NAT机制(网络地址映射)

 将IP地址分为了两类:私网IP/公网IP

  • 私网IP:IP地址10.*,  172.16-172.31,   192.168.*
  • 公网IP:除了私网剩下的都是公网

公网的设备和IP地址都是唯一的,不可以重复

私网的设备和IP地址,只需要保证同一个局域网内的IP地址不重复即可,不同局域网之间IP地址可以重复


基于这样的安排,规定了一个限制

  • 公网设备访问公网设备,没有问题,直接访问即可
  • 局域网设备访问局域网设备(同一个局域网),没有问题
  • 局域网设备访问局域网设备(不同局域网),不允许访问
  • 局域网访问公网设备,需要对局域网设备进行IP转换
  • 公网设备不允许主动访问局域网设备

3) IPV6 

 IPV4可以表示2^32个地址,大约是43亿

IPv6可以表示2^128个地址,大约是43亿*43亿*43亿*43亿(天文数字)

但是IPv6和IPv4由于报头格式不同,所以不兼容,意味着想要使用IPv4,必须更换支持IPv4的设备


五. IP转换

 1)客户端到服务器

 路由器一般含有一个WAN口,多个LAN口,路由器至少包含2个IP地址(其中一个为WAN口)

  • WAN口:可能是局域网IP地址,也可能是公网IP地址
  • LAN口:一个局域网IP地址

 数据包经过路由器会进行IP转换,将源IP地址转换为公网IP地址,如果转换为公网IP,那么后续就不需要转换了,服务器收到这个数据包,只会看到这个源IP地址是5.6.7.8,而不是192.168.1.2

这样转换的目的,让一个公网IP地址对应多个设备,从而节省IP地址的数量


2)服务器到客户端

 私网访问公网需要进行IP转换,公网将数据如何返回给私网?私网地址怎么获取?

服务器只知道源IP地址为转换的路由器地址,不知道客户端的地址


 NAT表:就是一个表格,路由器会记录IP地址转换的过程在NAT表中,记录替换前的IP地址,替换后的IP地址和目的地址等信息

 1)一个局域网内,多个设备访问同一个服务器

 

  • 当服务器返回数据包的时候,路由器会根据目的IP和替换后的IP地址,得到替换前的IP地址
  • 如果是访问不同服务器,同样也可以根据 目的IP和替换后的IP地址,得到替换前的IP地址

 2)一个局域网内,一个设备的多个进程访问同一个服务器

那么NAT表中会包含端口号这个信息,用于区分同一个设备中的进程


 3)一个局域网内,多个设备(但是端口号相同)访问同一个服务器

 两个主机上面的端口号,重合的概率不是很大,但是也有可能,这时候就可以使用端口号进行区分,路由器会对端口号进行映射


路由器不是工作在网络层吗?为什么可以改变端口号?

路由器并不是一个单纯的网络层设备,也具有传输层功能,所有可以修改端口号

  • 局域网内的不同设备, 访问的是不同网站,这个时候直接通过服务器 IP 就能区分.
  • 局域网内的同一设备不同进程,如果访问的是同一个服务器, 就可以按照端口号来区分.
  • 局域网内的不同设备相同端口号,访问的是同一个服务器, 就可以在路由器这边自动映射成不同的端口进行区分

 使用这样的技术,本质上也是提高IP地址的利用率,没有增加IP地址的个数,只是进行了复用,没有从根本上解决问题,现在的互联网就是通过动态规划和NAT结合的方式增加IP地址的使用


六. 网段划分

 将一个IP地址进行了划分,划分为两部分:网络号和主机号

  • 网络号:标识设备所属的网络,一般通过子网掩码确定
  • 主机号:标识网络中的具体设备(同一网络内,主机号必须唯一)

 

 图中,内包含四个局域网,四个不同网络号

  • 在同一个局域网中,所有主机的网络号都是相同的,主机号是不同的
  • 在同一个局域网内,网络号和主机号相同,无法上网
  • 网络号和路由器的网络号不同,无法上网(设备不能通过路由器访问外网,当然也不能访问设备)
  • 两个相邻的局域网,网络号不能相同(路由器的两段)

 之前的网段划分

 这样的划分其实并不好,比如说A类,可以表示的主机数是2^24个设备,但是现实中不存在一个局域网可以包含这么多的设备,浪费了非常多的IP地址

现在的网段划分

现在的网络划分,都是通过子网掩码的方式进行划分,比较节省IP地址

特殊的IP地址 

类型IPv4/IPv6地址范围/示例用途
私有地址IPv410.0.0.0/8
172.16.0.0/12
192.168.0.0/16
局域网内部使用,不可在公网路由(需NAT转换)。
自动私有IP(APIPA)IPv4169.254.0.0/16DHCP失效时自动分配,用于本地临时通信。
环回地址IPv4127.0.0.0/8(如127.0.0.1测试本机网络服务,数据不离开设备。
广播地址IPv4255.255.255.255(受限广播)
子网地址.255(定向广播)
向本地或特定子网所有设备发送数据。
全零地址IPv40.0.0.0表示“任意地址”或默认路由(如服务器监听所有接口)。
多播地址IPv4224.0.0.0/4(如224.0.0.5一对多通信(视频会议、路由协议)。

单播:1对1          组播:1对多(多是整体一部分)           广播:1对多(全部)


七. 路由选择

 路由选择是规划一条路线,但是这里的路线具有局限性,一个路由器的路由表是有限的,不可能装进去所有的路由器地址信息,这是掌握一部分局部信息,所有得出来的路线只是一个较优解

探索式路线规划

路由器这种规划路线的方式,可以类比寻路,数据报中的目的IP地址,就类似于问路的目标,由于每个路由器都了解自己相邻的网络设备情况,这时候就可以根据路由器了解的信息,来规划下一步走哪里

路由表

当设备收到一个数据包时,根据目标IP地址查找路由表,决定数据包的转发路径。可以认为路由表是网络通信的“导航地图”

相关文章:

  • vmware虚拟机克隆
  • 聊天助手提示词调优案例
  • 代码随想录算法训练营第九天 |【字符串】151.翻转字符串里的单词、卡码网55.右旋转字符串、28.实现strStr、459.重复的子字符串
  • 星纪魅族新品发布会定档5月13日,Note 16系列战神归来
  • 第七章,VLAN技术
  • 驱动开发系列57 - Linux Graphics QXL显卡驱动代码分析(四)显示区域更新
  • C#中从本地(两个路径文件夹)中实时拿图显示到窗口中并接收(两个tcp发送的信号)转为字符串显示在窗体中实现检测可视化
  • 【C语言】推箱子小游戏
  • C++ 构造函数
  • # YOLOv1:开启实时目标检测的新时代
  • tp8+swoole搭建
  • 如何提升丢包网络环境下的传输性能:从 TCP 到 QUIC,再到 wovenet 的实践
  • OpenGl实战笔记(2)基于qt5.15.2+mingw64+opengl实现纹理贴图
  • 【C++核心技术深度解析:从继承多态到STL容器 】
  • Nacos源码—4.Nacos集群高可用分析四
  • Python爬虫+代理IP+Header伪装:高效采集亚马逊数据
  • 【AI知识库云研发部署】RAGFlow + DeepSeek
  • python打卡day17
  • 解决android studio 中gradle 出现task list not built
  • 使用Unsloth微调DeepSeek-R1蒸馏模型:低显存高效训练实践
  • 预告:央行等部门将发声,介绍“一揽子金融政策支持稳市场稳预期”有关情况
  • 美政府称不再对哈佛大学提供联邦资助
  • 为什么所有动物里,只有人类幼崽发育得这么慢?
  • 儿童文学作家周晴病逝,享年57岁
  • 张家口一景区观光魔毯疑失控致游客被甩出,涉事景区改造升级重新开园才3天
  • 旧宫新语|瑞琦:再探《古玩图》——清宫艺术品的前世与今生