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

深入解析IP协议:组成、地址管理与路由选择

  

在这里插入图片描述


🔍 开发者资源导航 🔍
🏷️ 博客主页: 个人主页
📚 专栏订阅: JavaEE全栈专栏

IP协议(Internet Protocol)是互联网的核心网络层协议,其主要功能是为网络中的设备提供逻辑地址分配和数据包路由转发服务。该协议定义了IP地址的格式和分配方式,采用分组交换技术将数据封装为IP数据报进行传输,本文将简单介绍它的三个方面:协议组成地址管理以及路由选择

一、协议组成

 IP协议和TCP协议的复杂程度是差不多的~

四位版本号包括IPv4以及IPv6,这两个是大规模商用的版本。

四位首部长度,IP协议的报头也是变长的,因为也有选项的存在,单位是四字节。

8位服务类型决定了IP协议的工作方式,包括最小延时、最大吞吐量、最高可靠性、最小成本,这四者互相冲突,只能选择一个。

16位总长度=包头+载荷,最大是64KB。


我们知道TCP的长度是没有限制的,IP协议的64KB不够用了咋办

IP协议内置了组包和拆包功能,因此如果要携带一个大的TCP数据包,IP协议会自动分成多个IP数据报共同传输一个TCP数据。

1. 如何确认是同一个包?

IP协议在拆包时,将16位标识值设为同一个,组包时按照这个值进行组包。

2. 如何保证组包时的顺序?

在拆包时会设置13位片偏移值,按照顺序位置设置为一个有序的数列,组包时按照该顺序组包。

3. 如何判断组包的结束以及是否组包?

三位标志位其中一个表示是否是最后一个,还有一个表示是否触发了拆包操作,最后一个标志位作为保留没有意义留给未来扩展。


8位生存时间(TTL)表示一个IP协议数据报在网络上可以传输的最大次数。

每经过一个路由器转发一次TTL就减一,减到0后就丢弃。

这样做的目的是为了避免它在网络上的无限传播,例如使用了一个错误的IP地址,那么它永远也无法抵达。

TTL默认值

  • Windows 默认 128:历史原因(早期 Windows 网络栈设计)。

  • Linux/Unix/macOS 默认 64:足够覆盖大多数网络路径(一般互联网路径跳数 ≤ 30)。

  • 路由器默认 255:因为路由器可能位于复杂网络环境,需要更大的跳数限制。

 8位协议标识传输层用的是什么协议类型,例如6是TCP,17是UDP。

16位首部校验和:校验包头是否存在发生错误。


 二、地址管理

IP地址在网络上是唯一的,可以用于确认你在网络上的位置。

IPv4是一个32位的数值,为了方便查看,一般使用点分十进制的方式表示,例如192.2.1.98

IP地址分为两部分,前部分称之为“网络号”,后部分称为“主机号”。

网络号和主机号的划分是通过子网掩码进行区分,子网掩码是一个前部分为1,后部分为0的一个数值,不会出现01交错的情况,1的部分就表示那些bit位是网络号。

 在同一个局域网中的两个设备,网络号必须相同,主机号不能相同;

在不同的局域网中的两个设备,网络号必须不同,主机号可以相同。


在IP地址中存在部分特殊的IP地址。

1. 将IP地址的主机号全部设为0,就成为了网络号,代表这个局域网,因此不能把主机号设为0。

2. 将IP地址的主机号全部设为1,就代表一个广播地址,向该地址发送的信息会被转发到该局域网上的所有设备。

3. 127.*是环回IP,无论你真实的IP是多少,用该地址都可以指向你的本机。


三、路由选择

路由选择是通过IP协议进行转发的过程,该过程及其复杂,在这里只讨论简化的模型。

路由选择的方式是启发式/探索式,他并不是一次到达某个地址,而是通过“问路”的方式不断接近,最终抵达。

网络环境非常复杂的环境,任何一个路由器,无法存储所有的网络信息的,但是每个路由器,是可以知道附近的网络情况(至少知道谁和他相连)。

当数据包在路由器转发的时候,询问去目的地址的路如何走,如果查询到了就往该节点走,如果没有就去该路由器的上一层路由器。

http://www.xdnf.cn/news/15905.html

相关文章:

  • Freemarker实现下载word可能遇到的问题
  • docker--挂载
  • 深入解析:如何在Kafka中配置Source和Sink连接器构建高效数据管道
  • 【Linux指南】Linux系统 -权限全面解析
  • 万界星空科技锂电池MES解决方案
  • 移星科技 modbus-tcp 转 modbus-Rtu模块
  • CMakeLists.txt 中一些最常见和核心的命令
  • AG32 cpld部分bin的烧录
  • 20250721
  • .NET依赖注入IOC你了解吗?
  • 14.6 《3步实战LLaMA2-7B指令微调:Hugging Face生态+LoRA技术,MT-Bench得分从5.1直升7.3》
  • 基于爬虫技术的电影数据可视化系统 Python+Django+Vue.js
  • C# 集合(Collection)
  • Playwright-MCP浏览器会话复用全解析
  • 企业管理效能提升之道——固定资产管理的价值体现
  • Flutter和Kotlin的对比
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十六天
  • 【Docker#3】Window 和 Linux 上 docker安装 相关知识
  • 算法训练营day25 回溯算法④ 补充联系题目 332.重新安排行程、51. N皇后、37. 解数独
  • 【详细笔记】两类曲线积分转换
  • 14.多播与广播
  • ESMFold 安装教程
  • Linux主机 ->多机器登录
  • 尚庭公寓--------登陆流程介绍以及功能代码
  • PostgreSQL 字段类型速查与 Java 枚举映射
  • XSS的介绍
  • LWJGL教程(3)——时间
  • JWT原理及利用手法
  • 基于单片机倾角测量仪/角度测量/水平仪
  • spring-ai-alibaba如何上传文件并解析