网络层最主要的协议就是IP协议,IP协议最主要的工作有两个
一个地址管理,使用IP地址这个概念,标识网络上某个设备的位置
二是路由选择,在两个通信节点之间选一个合适的路径
IP协议的数据报

四位版本

这里主要使用的是IPV4和IPV6,使用最多的还是IPV4
四位首部长度

IP协议报头的长度,和TCP一样,使用的是4个字节为一个单位,也就是15*4=60字节
八位服务类型

决定了IP协议的工作方式

每次只能选一个,可以进行转换(和赛罗转形态差不多)
十六位总长度

一个IP数据报的长度64kb
虽然和UDP的一样,但是在IP协议内封装好了拆包和组包的功能,这可以让IP协议在传输一个较大的TCP协议的时候,可以把他拆成很小,然后再组合
拆包和组包

16位标识:
拆包:会把拆出来的多个包,设置相同的标识
组包:会把相同标识的包组合到一起
3位标识符
第一位:预留位,现在还没用
第二位:标志位,标记这个数据包是否进行了拆包的操作
第三位:表示这个包是否是最后的一位
13位片偏移
按照大小进行排序,小在前大在后
八位生存时间

表示一个IP数据报,能够在网络上传播的最大时间,这个时间使用的单位是次数,每经过一个TTL的值就会加一,如果当TTL减到0,就说明丢包了
Windows默认TTL是128

这里转发了19次,经过了19个路由器
八位协议

这里指的是分用的时候,IP协议解析IP数据报的时候,载荷交给上层处理,上层是UDP还是TCP,这里就是区分UDP还是TCP
十六位首部校验和

IP协议会自行检验报头部分的内容是否正确
源IP和目的IP

这里是IP协议的核心部分
IP协议的本质上是通过32位的整数来表达的,单位为了方便阅读,所以就会把IP写作点分十进制
用三个点划分成四个部分

每个位置的取值都是0-255
IP不够用咋办?
方案一 动态分配IP
每个设备上网的时候分配IP,不上网就不分配IP
治标不治本
方案二 NAT机制 网络地址转换
把IP分成两类
- 外网IP/公网IP
- 内网IP/私网IP
10*
172.16-172.31*
192.168*
这三个开头都属于内网
在NAT机制下,网络通讯是如何进行的?
- 在同一个局域网下,设备A访问设备B
由于IP本身不重复,可以正常访问(如果你手动把两个设备的IP调成一样,就会导致两个设备都上不了网)
- 公网设备A访问公网设备B
由于IP本身也不重复,也可以正常访问
- 不同的局域网,设备A直接访问设备B
NAT机制不允许这样的访问方式,A和B都属于私有IP
- 局域网设备A访问公网设备B
网络地址映射
- 公网设备A访问局域网设备B
内网穿透,VPN
这两个和NAT本质上都不冲突,都是借助其他带有公网IP的设备进行转发
NAT机制

举例子
在局域网中,每台机器都有一个私有IP,这个在同一个局域网中是不会重复的,如果需要访问外网,私有的IP会进过NAT的映射机制,就会把IP改成公网的IP,进而去访问你想访问的网址。
都替换成公网的IP,那怎么知道哪个是哪个的?
- 首先,会有端口号区分,每个私有IP随机分配的端口号是不一样的,NAT会记住谁是谁
- 那如果私有IP分配的端口号一样了咋办
NAT在进行替换的时候,是可以对端口号进行随意替换的,他会记着返回去是谁,哪个端口号就行,至于到他这里转发的端口号就别管

方案三 IPV6
IPV4是使用4个字节作为IP地址
IPV6是使用16个字节作为IP地址
之所以在全国大范围推广IPV6
因为IPV4的地址分配权在美国手里,随时会被卡脖子,所以全国推行IPV6,在需要的时候,可以替换成IPV6
IP地址的其他规则
网段划分

前半部分称为:网络号
后半部分称为:主机号
在同一个局域网中,网络号必须相同,主机号必须不同
在不同的局域网中,网络号必须不同,主机号无限制
子网掩码
255.255.255.0
子网掩码也是一个32位的整数,
规则很死,左边全是1,右边全是0,不能出现1和0交错的现象
简写:192.168.98/24
/24表示的是前24位都是1
如果IP网络号部分和子网掩码部分相同,那么我们就认为他们是在一个局域网下
子网掩码只干两件事
- 帮设备区分自己人还是外人
同一个局域网下的子网掩码必须一样,不然无法互相访问,255部分表示是网络号,0部分表示的是主机名字
- 决定一个局域网能连接多少台设备
主机号有八位,表示最多可以表示254家用一般支持254台设备
特殊的IP

举例:
192.168.100.0不能这样设置,因为0代表的是这个网络
192.168.100.255广播地址,往这上面发数据包,会被转发到这个局域网的所有设备(投屏类似)
127.0.0.1环回网络,无论你的设备真实IP是啥都可以使用这个表示
192.168.100.1一般认为使用1的都是网关
IP协议的第二个要点
路由选择
简化模型(问路的方式)

在这个过程中,就属于路由选择
因为在真实的网络环境中是十分复杂的,所以任何一个路由器是无法存储所有的网络信息,但是他们会知道自己附近有谁。所以就可以通过类似于问路的情况去找到对应的地址