目录
网络层
主要做两方面内容
1.地址管理 制定一系列规则,通过地址,描述出网络上一个设备的位置
2.路由选择 一个节点到另一个节点之间,存在很多不同的路径,需要通过这种方式,规划出更合适的路径进行数据传输
补充“8位生存时间”
TTL的单位是次数,数据包被构造出来的时候,TTL会被设为一个初始值(32,64,128...),数据包每经过一个路由器转发,TTL就会-1,如果TTL耗尽还没有传输到达,就会被丢弃(如果目的ip不存在,通过生存时间机制就会被合理丢弃)
地址管理
IP地址,是一个32位整数 就是说能表示2^32=42亿九千万个地址,当今的上网设备显然超过这个数,那么如何解决IP地址不够用?
①动态分配IP
一个IP这个设备不用时给另外一个设备使用,提高IP地址的利用率,并没有增加IP地址数目(治标不治本)(是一个过度方案,但仍广泛存在)
②NAT机制(网络地址转换)
本质是让一个IP地址代表一批设备
比如一个大学中的学生收快递都使用同一个大学地址
IP地址分为两个大类
a.内网IP(局域网IP)
10.*或者172.16.*-172.31.*或者192.168.*
同一个局域网内部,内网IP之间不能重复,不同局域网中,内网IP之间可以重复
b.外网IP(广域网IP)
其余的IP
不允许重复,必须唯一
通常一个小区/学校/公司构成一个大的局域网,这样一个局域网就使用一个外网IP即可
NAT如何工作?
NAT机制使得局域网内部的设备可以主动访问外网的设备,外网的设备无法主动访问局域网内部的设备
NAT机制最大的优势就是“纯软件的方案”
当前的网络环境,就是以NAT+动态分配的方式解决IP地址不够用的问题
③IPv6
使用16字节表示IP地址
IPv4 -> 2^32
IPv6 -> 2^128(足够用)
但是目前还没有广泛普及...
IP地址的网段划分
IP地址 = 网络号(标识局域网)+ 主机号(标识局域网中的一个设备)
同一个局域网中的设备,网络号必须相同,主机号必须不同
两个相邻的局域网(通过一个路由器连接的两个局域网),网络号不能相同
IP地址网络号与主机号的划分由子网掩码(32位整数 左侧全1 右侧全0)确定
如果一个IP地址主机号全0,则这个IP就表示网络号(如192.168.100.0 255.255.255.0)(代表一个局域网 不分配给主机)
UDP天然支持广播和这个IP有关
UDP socket给这个地址发送UDP数据报,则局域网中的所有设备都能收到
而TCP无法和这个地址建立连接
环回IP:IP以127开头(常见127.0.0.1)表示设备自己~,主要用于测试工作,能排除网络因素,更好地排查代码中的问题
路由选择
描述了IP数据报转发过程
IP数据包转发的时候,每个路由器只知道与该路由器相连的设备,每个路由器内部有一个数据结构路由表,根据数据报中的目的IP查路由表
一个网络层的数据报,每到达一个路由器,会查该路由器的路由表,如果查到了,就直接按照路由表给定的方向(网络接口)转发;如果没查到,按照路由表中的默认表项(下一跳地址)转发