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区分不同设备 (家用设备)

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

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

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

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

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

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

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

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

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

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

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

发送请求:

返回响应:查表替换

我电脑的局域网IP

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

三. ipv6

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

相关推荐
IvanCodes2 小时前
十六、Linux网络基础理论 - OSI模型、TCP/IP协议与IP地址详解
linux·网络·tcp/ip
shylyly_2 小时前
Linux-> TCP 编程2
linux·服务器·网络·tcp/ip·松耦合·command程序
迎風吹頭髮3 小时前
UNIX下C语言编程与实践33-UNIX 僵死进程预防:wait 法、托管法、信号忽略与捕获
c语言·网络·unix
夜月yeyue3 小时前
多级流水线与指令预测
linux·网络·stm32·单片机·嵌入式硬件
xxtzaaa3 小时前
抖音私密账号显示IP属地吗?能更改IP么?
网络·网络协议·tcp/ip
IvanCodes4 小时前
十五、深入理解 SELinux
linux·运维·服务器
云博客-资源宝4 小时前
【防火墙源码】WordPress防火墙插件1.0测试版
linux·服务器·数据库
qq_479875434 小时前
systemd-resolved.service实验实战2
linux·服务器·网络
牧码岛4 小时前
服务端之NestJS接口响应message编写规范详解、写给前后端都舒服的接口、API提示信息标准化
服务器·后端·node.js·nestjs