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

- 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地址分成两大类:
- 内网IP/私网IP 10.* 172.16-172.31.* 192.168.*
- 外网IP/公网IP 除上面之外 剩下的都是外网IP
约定不同局域网内,内网IP允许重复。比如,A的电脑在学校的局域网中,B的电脑在公司的局域网中,A和B的 ip地址 可以是一样的。大部分设备都是局域网中的,此时就可以使IP地址的利用率大幅度提高了。
++如果跨局域网访问,怎么办呢?++
- 同一个局域网内部的两个设备访问,可以访问
此时和NAT没有任何关系,根据不同IP区分不同设备 (家用设备)
- 两个带有外网IP的设备访问,可以访问
也和NAT没有任何关系,两个外网IP仍然是全局唯一的(服务器/运营商路由器,可能带有外网IP)
- 不同局域网中的两个设备,尝试访问对方,不允许访问
我的电脑上运行UDP服务器,你的电脑拿客户端能否访问?不能。
- 外网IP的设备,尝试访问内网IP的设备,不允许访问
(第3和第4点,网络层不允许,但应用层有办法实现,例如 todesk 远程控制)
- 内网IP设备,尝试访问外网IP设备,可以访问
会触发 "网络地址转换",NAT设备(路由器)对IP数据报 其中的 源IP 做出修改,修改成自己的IP,记录替换的映射关系。
A和B访问同一个应用程序:

举个例子: 内网IP 类似 "学号",我的学号是11055413,假设我去公司应聘,需要登记信息,对方需要根据我的信息给我发邀请函。如果我填写信息就填写学号,肯定不行的!我们学校有一个11055413,其他学校也会有。相比于学号,更需要告知对方 我的学校,"学校" 起到外网IP的作用。
IP 地址替换 就是NAT 。++为什么要进行替换?++ 核心:访问外网设备,需要有外网IP,对方要返回响应,也要告诉对方外网IP,他才能把数据还回来。电信路由器,可能要接入很多设备(几百台 上千台设备)。此时这个路由器的外网IP就相当于可以代指这上百台设备,即上百台/上千台设备,共用一个外网IP。
发送请求:

返回响应:查表替换

我电脑的局域网IP
通过网页看到的其实是 我连接的电信路由器的IP地址
三. ipv6
ipv6 使用了16个字节,作为IP地址表示的方式