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

深入解析 IP 协议:从基础核心机制到地址管理、路由选择的全方位指南

目录

  • 一、IP 的基础核心要素
    • 1. IP 的协议定位:在哪一层?
    • 2. 网络层做什么
    • 3. IP的基本概念
    • 4.IP的协议头格式
  • 二、地址管理
    • 1. 动态地址分配ip
    • 2. NAT机制 (网络地址转换,当前网络世界最主要的方式)
      • IP地址划分
      • NAT机制的作用
      • NAT背景下,网络通信如何进行的?
        • 1.同一个局域网下,设备A访问设备B
        • 2. 公网设备A访问公网设备B
        • 3. 不同局域网,设备A访问设备B
        • 4. 局域网设备A访问公网设备B
        • 5. 公网设备A访问局域网设备B
    • 3. 使用IPV6协议
    • 4. IP地址的其他划分
      • 网段划分
      • 网络号和主机号的配置
      • 特殊的IP地址
  • 三、路由选择
  • 四、最后说一下

一、IP 的基础核心要素

1. IP 的协议定位:在哪一层?

在TCP/IP 四层模型中,IP 协议位于网络层,上接传输层(如 UDP,TCP 等传输层协议),下连数据链路层
在这里插入图片描述

2. 网络层做什么

IP位于网络层,网络层主要做的事情就两个

  1. 地址管理:使用 IP 地址,这样的概念,标识网络上的某个设备的位置
  2. 路由选择:在两个通信的节点之间,规划出一个合理的路径

3. IP的基本概念

在这里插入图片描述

  1. 主机:配有IP地址,但是不进⾏路由控制的设备
  2. 路由器:即配有IP地址,⼜能进⾏路由控制
  3. 节点:主机和路由器的统称

4.IP的协议头格式

在这里插入图片描述

  1. 版本(4位)
    标识ip协议版本(商用主要有ipv4,ipv6。开发阶段主要针对ipv4,本篇讲解ipv4为主)
  2. 首部长度(4位)
    IP协议的报头,表示指示 IP 首部的总长度(含选项字段),和TCP的协议报头也是一样的,单位也是以4字节为单位,总长为0xF(15)*4 >= 60
  3. 服务类型(TOS,8 位)
    决定了ip协议的工作方式,8位服务类型:3位优先权字段(已经弃⽤),4位TOS字段,和1位保留字段(必须置为0). 4位TOS分别表⽰: 最⼩延时,最⼤吞吐量,最⾼可靠性,最⼩成本 .这四者相互冲突,只能选择⼀个.对于ssh/telnet这样的应⽤程序,最⼩延时⽐较重要;对于ftp这样的程序,最⼤吞吐量⽐较重要

IP可以切换工作状态:最小延时,最大吞吐量,最高可靠性,最小成本
工作状态也有 api 可以用来设置开发中很少直接涉及到咱们 Java 程序员主要写 web 类应用

  1. 总长度(16 位)
    单位为 “字节”,表示整个 IP 数据报(首部 + 数据)的总长度,总长为64K

总长为64K不是和UDP一样吗,岂不是很容易满,但是IP和UDP不一样的是,IP协议内置了拆包组包的功能,由标识,标志,片偏移相互协作,比如,IP 携带一个比较大的 TCP 数据报,IP 协议就会自动拆成多个,通过多个 IP 数据报共同传输一个 TCP 数据报

  1. 标识(16 位)
    拆包: 把拆出来的多个包,设为相同的标识
    组包: 把相同标识的数据包组合到一起

  2. 标志(3 位)
    其中一个标志位,表示是否触发了拆包操作还有一个表示,当前包是否是最后一个

  3. 片偏移(13 位)
    描述了先后顺序,偏移小的放前面,大的放后面

  4. 生存时间(TTL,8 位)
    一个IP 数据报,能够在网络上传输的最大时间

注意这个时间不是平时我们所见的时间单位,而是“次数”为单位
IP 数据报每次经过一个路由器转发一次,TTL 的值就-1,TTL减到 0,就说明包到不了,就要被丢弃掉
用次数作为单位的合理性体现在:如果你发了一个错误的数据报(目的ip地址错误),无论如何都到达不了目的地,但是包肯定不能无线传输
在这里插入图片描述
但是有没有存在一种可能,通过64转发还是到达不了目的地呢,64会不会太少呢?
理论上存在,实际上可能性不大
1.初始值可以发送改变不一定都是64,可以发生变化
2.网络中,有一个“六度空间"这样的理论~~ 两个设备之间,不需要那么多次转发,就足够了

  1. 协议(8位)
    标识传输层使用哪种协议

分用的时候,IP 协议解析 IP 数据报的时候,拿到载荷,交给上层处理此处 8 位协议编号,就能起到区分效果
传输层到应用层 =>端口号
网络层到传输层 =>8 位协议
数据链路层到网络层=>也有一个类似的协议编号的

  1. 首部检验和(16 位)
    仅校验 IP 首部的完整性(数据部分由上层协议校验(TCP,UDP自行校验))
  2. 源目IP地址和目的IP地址(IP协议中最核心的部分)
    分别标识发送方接收方的 IP 地址,是 IP 寻址的核心标识。

IP 地址本质上是通过 32 位的整数来表示的,由于 32 位整数不方便阅读,通常会把 |P 写作点分十进制 表示方式用三个点,分出四个部分,每个部分两个字节长度(0~255)
在这里插入图片描述

二、地址管理

大家都知道到,要发挥ip地址的作用,肯定是都希望ip地址是唯一的,32位的ip地址最多能表示大约42亿9千万个不同的ip地址,够用吗?不够,在2025年的今天,上网的设备太多了,PC,服务器,移动设备和物联网设备等等,那咋办呢,这就引入了两个主要方法:动态地址分配ipNAT机制

1. 动态地址分配ip

由DHCP(动态主机配置协议)服务器自动为网络中的设备分配 IP 地址的机制,简单的说就是,就是上网在分配,不上网就不分配

ip的数量还是有限的,只能有所缓解,但是还是治标不治本

2. NAT机制 (网络地址转换,当前网络世界最主要的方式)

IP地址划分

可以把所以的ip分成两大类:公网ip/外网ip私网ip/内网ip

  1. 公网ip/外网ip
    公网ip是唯一的
    在这里插入图片描述

  2. 私网ip/内网ip
    以[10.* ] [172.16-172.31.* ] [ 192.168.* ] 为开头的ip地址
    在这里插入图片描述
    私网在不同局域网中可以重复,你家的局域网中与我学校的局域网就可能存在一样的私网地址,但是单独在我学校局域网中就不能重复这个私网ip地址

NAT机制的作用

在NAT机制下,可以用一个 外网 IP 对应到一系列的内网的设备,也就是让一个公网 IP 对应多个内网 IP,实现多设备共用一个公网地址访问互联网

一个设备有一个独立的局域网 IP(允许重复)
但是多个设备共用同一个外网 IP(不允许重复)

在这里插入图片描述
这就使得在有限的IP地址下,节省 IPv4 公网 IP 资源,让多个内网设备共用 1 个公网 IP 访问互联网,缓解 IPv4 地址枯竭问题

扩展
静态ip与动态ip
动态 IP:你的电脑查到路由器上,默认会通过 DHCP 机制,自动分配一个局域网 ip就可以上网了(自动分配,每次分的都可能不一样)
静态ip:手动固定分配,地址长期不变,稳定性高,适用于服务器、需要外网固定访问的设备
在这里插入图片描述

NAT背景下,网络通信如何进行的?

1.同一个局域网下,设备A访问设备B

由于IP本身不允许重复,自然不受任何影响,NAT不起作用

2. 公网设备A访问公网设备B

由于公网IP本身也不重复,也不受影响,NAT不起作用

3. 不同局域网,设备A访问设备B

不允许的,NAT机制禁止这样的访问方式

4. 局域网设备A访问公网设备B

采用网络地址映射
在这里插入图片描述
如果同一个局域网中,又来了个设备B,IP仍然转换为公网ip:10.1.1.1,端口号为:源端口号,返回响应的时候通过NAT 映射表 + 端口号识别,返回设备B
如果又来了个设备C且端口,碰巧和设备B一样怎么办,答仍然可以正常传输,NAT设备进行替换的时候,端口号是可以修改随意进行修改的
在这里插入图片描述

5. 公网设备A访问局域网设备B

是不允许的,只能通过特殊的手段,比如内网穿透,VPN

3. 使用IPV6协议

IPv4 是使用 4 个字节作为 ,IP 地址IPv6而是使用 16 个字节作为 IP 地址,也是就说128个bit,足以应付全球范围内ip不够的问题

既然ipv6可以包含地球上所以的ip需求了,那为什么全球范围内普及率这么低呢

笼统的说,升级ipv6需要升级路由器设备,需要金钱的成本,而ipv4只需要给路由器的软件升级就可以了

4. IP地址的其他划分

网段划分

可以把一个IP地址划分成两个部分:
1.前半部分:称为“网络号”
2.后半部分:称为“主机号”
在这里插入图片描述

同一个局域网中,网络号必须相同,主机号必须不同
在这里插入图片描述
在这里插入图片描述

两个相邻的局域网中,网络号必须不同,主机号无限制

在这里插入图片描述

网络号和主机号的配置

哪个部分是网络号,哪个部分是主机号是可以配置的
在这里插入图片描述
上古时期的划分方式,现在已经不用了,了解一下即可
在这里插入图片描述

特殊的IP地址

  • 将IP地址中的主机地址全部设为0,就成为了⽹络号,代表这个局域⽹
  • 将IP地址中的主机地址全部设为1,就成为了⼴播地址,⽤于给同⼀个链路中相互连接的所有主机发送数据包
  • 127.*的IP地址⽤于本机环回(loopback)测试,通常是127.0.0.1

三、路由选择

IP 协议中的第二个要点,通过IP 协议,进行数据转发的过程,转发的过程及其复杂,这变只讨论一下简化的模型

举个例子:
假设你住在城东小区,想去城西的市图书馆,且没有导航,只能 “问路”(对应网络中数据包通过 “路由器” 逐跳选路):

  1. 从小区出发,问路人 A
    路人 A 知道图书馆在城西,建议你先坐 101 路公交往西走 —— 这就像网络中第一个路由器,根据目标位置给出 “第一跳” 的路径决策。

  2. 坐 101 路到中心广场站,问司机 B司机 B
    告诉你:在中心广场站下车,换乘地铁 3 号线 —— 这就像第二个路由器,基于当前位置和目标,指引 “下一跳” 的换乘(路径转发)。

  3. 坐地铁 3 号线到文化街站,问乘客 C
    乘客 C 告诉你:坐到图书馆站下车,再问路边行人 —— 这就像第三个路由器,继续细化路径,指引到更接近目标的节点。

  4. 出图书馆站,问店员 D店员
    D 告诉你:往南走 50 米,左转进小巷,再走一段就到了 —— 这就像最后一个 “边缘路由器”,直接指引到最终目的地。

每次问的时候,都会更接近
这里谈到的路由选择,对于路由器来说,也是这样的,网络环境非常复杂的环境,任何一个路由器,无法存储所有的网络信息的,但是每个路由器,是可以知道附近的网络情况(至少知道谁和他相连),当数据包到达某个路由器的时候就会匹配这个路由器的“路由表”(路由表就记录了这个路由器周围的设备的 IP 是啥,以及也会记录每个设备要通过哪个口转发过去)
在这里插入图片描述

四、最后说一下

本章内容虽然面试可能不考,写代码可能也用不到,毕竟在网络层平时不直接接触,但是或许之后的搭建某个环境进行某些测试是就用到了,并且也对于程序员来说也属于”常识“类的内容,还是值得得花点时间来整理一下的,希望这篇文章能帮助到你们

在这里插入图片描述

http://www.dtcms.com/a/598477.html

相关文章:

  • 邢台网站建设03191688版面设计软件
  • mysql5.7安装教程
  • P1919 【模板】高精度乘法 | A*B Problem 升级版 (FFT)
  • 网页游戏网站开发wordpress5.0.2安装
  • 阜新市建设学校管方网站注册保险代理公司需要什么条件
  • Plant Simulation 双深位立库开发系列教程-出库操作
  • python网站开发的优势wordpress 图集
  • 广州网站设计实力乐云seowordpress token插件
  • ofo的网站用什么做的app设计大赛
  • day11(11.11)——leetcode面试经典150
  • 十八个免费的舆情网站怎么做app推广
  • 将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
  • Linux--进程间通信(2)
  • 烟台品牌网站建设求职
  • byd APP逆向(AES白盒分析)
  • QueryWrapper 与 LambdaQueryWrapper 深度解析:优劣对比、选择指南及用户表实战案例
  • 【完整源码+数据集】车牌数据集,yolov8车牌检测数据集 7811 张,汽车车牌识别数据集,智慧交通汽车车牌识别系统实战教程
  • 婚庆网站策划便捷网站建设价格
  • 视频+教程 | 三位一体:MOI 数据源 + MO 向量存储 + Dify 应用层,构建企业级 RAG
  • 侨联网站建设网站开发实训报告总结2021
  • 怎么做会员积分网站房地产开发资质
  • 智能服务管理的临界点:当AI成为ITSM的“神经中枢”
  • 太原制作网站的公司百度云服务器做asp网站
  • 学途-人工智能机器学习课程
  • 什么是网站内页wordpress如何上传到服务器
  • 网站 宣传方案淘宝店铺 发布网站建设
  • 论find -group和-gid的区别
  • Spring Cloud中分布式事务的监控和日志使用小窍门
  • LeetCode(python)——560.和为k的子数组
  • cae毕业设计代做网站淮北论坛招聘最新消息兼职