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

IP 协议的相关特性

网络层的目标:

  1. 地址管理:把网络上的每个节点(路由器/主机)描述出位置,即 IP地址
  2. 路由选择: 路径规划

  • 4位版本号:指定IP协议的版本,只有两个取值:ipv4 / ipv6(我们上网大概率用的是ipv4)
  • 4位首部长度:描述报头有多长(报头是变长的),单位是4字节,即IP头部的长度是多少个32bit,4bit表示最大的数字是15,因此IP头部最大长度是60字节

  • 16位总长度:表示IP数据报整体占多少个字节,最大长度64KB.  如果IP数据报,需要携带比较大的载荷(传输层数据包),自动触发拆包,接收方自动组包。类比:搬家时一车拉不下,分两车或更多 分别进行运送

面试题:UDP协议,如果需要在应用层实现拆包组包,如何做呢?照抄IP

  • 16位标识(id):标识主机发送的报文,如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的
  • 3位标志:知道是否为最后一个需要组的包

  • 13位片偏移:组包时的排序依据(网络传输中可能出现"后发先至")

此时这俩数据到达对方,对方就可以根据标识对它们进行组包(标识相同)


  • 8位生存时间:数据报到达目的地的最大报文跳数。表示 IP数据报 还能在网络上传输多久(不能无限传输)比如目的地址写错了,不可能到达。错误的包,不能无限传输,浪费资源。单位不是分或秒,而是 "次数"。TTL有一个初始值,32 / 64 / 128... (一般是64)每次IP数据报经过一个路由器 进行一次转发,TTL都会 -1,直到TTL减到0,此时这个数据就可以丢弃了。

像 32/64 这样的值够用吗?甚至进行跨国通信呢? 在社会科学中有个六度空间理论,计算机中可以做到,"六层路由器",每个路由器都能感知到他相邻的设备的情况。我先把数据发给我的路由器,路由器再层层转发。

  • 8位协议:在传输层使用什么协议来对载荷部分进行解析
  • 16位首部校验和:只检验首部,载荷部分 TCP / UDP内置了校验和

IP协议中最重要的属性:

这个地址由IP协议设定的。32位整数,分成4个部分,中间通过 3个".号" 分隔 => 点分十进制,每个部分取值0-255   

IP地址设计的初心,为了区分当前设备,期望每个设备都有和别人不同的IP地址。32位数字表示的范围:0-42亿9千万。移动物联网、物联网开始之后,这些IP地址就不够用了。

如何应对呢?

一. 动态分配IP地址

一个设备,需要上网分配,不需要上网不分配,此时就能节省 一大部分的设备 暂时不需要分配IP地址(如今已经在使用了,效果比较有限)

二. 【核心方案】 NAT网络地址转换

把IP地址分成两大类:

  1. 内网IP/私网IP    10.*       172.16-172.31.*       192.168.*
  2. 外网IP/公网IP   除上面之外 剩下的都是外网IP

约定不同局域网内,内网IP允许重复。比如,A的电脑在学校的局域网中,B的电脑在公司的局域网中,A和B的 ip地址 可以是一样的。大部分设备都是局域网中的,此时就可以使IP地址的利用率大幅度提高了。

如果跨局域网访问,怎么办呢?

1. 同一个局域网内部的两个设备访问,可以访问

此时和NAT没有任何关系,根据不同IP区分不同设备 (家用设备)

2. 两个带有外网IP的设备访问,可以访问

也和NAT没有任何关系,两个外网IP仍然是全局唯一的(服务器/运营商路由器,可能带有外网IP)

3. 不同局域网中的两个设备,尝试访问对方,不允许访问

我的电脑上运行UDP服务器,你的电脑拿客户端能否访问?不能。

4. 外网IP的设备,尝试访问内网IP的设备,不允许访问

  (第3和第4点,网络层不允许,但应用层有办法实现,例如 todesk 远程控制)

5. 内网IP设备,尝试访问外网IP设备,可以访问

 会触发 "网络地址转换",NAT设备(路由器)对IP数据报 其中的 源IP 做出修改,修改成自己的IP,记录替换的映射关系。

A和B访问同一个应用程序:

举个例子:内网IP类似 "学号",我的学号是11055413,假设我去公司应聘,需要登记信息,对方需要根据我的信息给我发邀请函。如果我填写信息就填写学号,肯定不行的!我们学校有一个11055413,其他学校也会有。相比于学号,更需要告知对方 我的学校,"学校" 起到外网IP的作用。

IP 地址替换 就是NAT为什么要进行替换? 核心:访问外网设备,需要有外网IP,对方要返回响应,也要告诉对方外网IP,他才能把数据还回来。电信路由器,可能要接入很多设备(几百台 上千台设备)。此时这个路由器的外网IP就相当于可以代指这上百台设备,即上百台/上千台设备,共用一个外网IP。

发送请求:

返回响应:查表替换

我电脑的局域网IP

 通过网页看到的其实是 我连接的电信路由器的IP地址

三. ipv6

ipv6 使用了16个字节,作为IP地址表示的方式

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

相关文章:

  • 《投资-88》价值投资者的认知升级与交易规则重构 - 第三层:估值安全边际,“再好的公司,如果买贵了,也会变成一笔糟糕的投资。”
  • 工程师 - Raspberry Pi Pico程序:读取SPI数据后从串口输出
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P04-12 可缩放浮点数的曲线表
  • 接口请求工具对比 apifox apipost swagger postman等
  • C++联合体(Union)详解:与结构体的区别、联系与深度解析
  • LangChain部署RAG part2.搭建多模态RAG引擎(赋范大模型社区公开课听课笔记)
  • SSM--day4--SpringMVC(补充)
  • Flink Checkpoint与反压问题排查手册:从日志分析到根因定位
  • 元宇宙的教育应用:重构学习体验与知识传递
  • 建设99网站江西网站开发哪家好
  • RabbitMQ高可用集群搭建教程(基于CentOS 7.9 + Erlang 23.2.7 + RabbitMQ 3.8.8)
  • 【LangChain】P14 LangChain 输出解析器深度解析:Json解析器、XML解析器、字符串及列表、日期解析器
  • 仿真软件-多机器人2
  • 《基于 ERT 的稀疏电极机器人皮肤技术》ICRA2020论文解析
  • 聚焦CRISPR技术配套工具链的开源生态建设
  • 网站做视频窗口接口收费么免费搭建自己的网站
  • ​​Avalonia UI 开发核心注意事项:从理念到部署的避坑指南​
  • 从chatGPT获取的关于相机焦距与其他参数的关系
  • 拒绝做网站的理由wordpress自适应 slide
  • 【IT老齐456】Spring Boot优雅开发多线程应用,笔记01
  • 网站收录怎么弄极路由4 做网站
  • 备考华为HCIA - 云计算,培训与自学到底该怎么选?
  • 106、23种设计模式之备忘录模式(15/23)
  • LangChain部署rag Part3olmOCR与MinerU工具(赋范大模型社区公开课听课笔记)
  • C++进阶:使用普通函数重载算数运算符
  • 从内核调优到集群部署:基于Linux环境下KingbaseES数据库安装指南
  • Micro850 控制器深度解析:硬件特性与 I/O 接线核心(罗克韦尔2)
  • Python oct() 函数
  • (一) 机器学习之深度神经网络
  • C语言指针全面解析:从内存管理到高级应用