网络层与链路层典型协议
- 网络层
- IP 地址
- 地址管理
- 网络号的划分(五种)
- 特殊的网络以及IP地址
- 路由选择
- 链路层
- MAC 地址
- ARP 协议
- MTU 最大传输单元
- 其他典型协议:ICMP、DNS 、NAT技术
- ICMP协议
- DNS 协议
- NAT & NAPT 技术
- 代理
网络层
功能:负责地址管理与路由选择
IP 地址
(1)4位版本:4-ipv4 ,6-ipv6
(2)4位报头长度:以 4 字节为单位描述报头长度,IP报头最长长度 60 字节,最小 20 字节
(3)8位服务类型:3位优先权弃用,4位服务类型TOS,1位保留置 0
服务类型:最小延时、最大吞吐量、最高可靠性、最小成本
(4)16位数据报长度:限制一个IP报文包含报头在内最大不超过65535(64K)大小
UDP 报文中最大数据大小必须小于 64k-8(报头长度)-20(udp协议头部)
(5)16位分片标识:
在链路层有个限制报文大小的字段–MTU 最大传输数据大小,以太网协议默认大小为 1500字节
若一个报文在网络层封装了 IP 报头之后大于MTU,则在链路层就无法进行传输,因此需要在网络层进行数据分片,将一个大的报文分割成多个小报文,分别封装在 IP 报头进行发送,这个小报文—分片
若一个大的报文被分割成了多个小的分片进行传输,则多个分片到达对端网络需要进行分片重组,重组成一个完整的报文后交付给传输层
16位分片标识:标识当前分片属于哪个原始报文
3为标志:一位保留,第二位标识禁止分片,第三位标识更多分片
13位分片偏移:标识当前分片在原始报文中的位置(相较于起始位置的偏移量),分片偏移以 8 字节为单位
Q1:网络不稳定,有可能出现乱序,如何辨别哪个分片属于哪个原始报文?
16位分片标识 — 标识当前分片属于哪个原始报文
Q2:如何获知当前分片在原始报文中的位置?
13位分片偏移 — 标识了当前分片相对于原始报文起始位置的偏移量
13位分片偏移,能够表达的最大大小:8192,因此分片偏移的单位是 8 字节
每个分片的大小都是 8 的整数倍大小(除过最后一个分片)
(6)8 位生存时间 TTL:存放一个数据报文在网络中所能经过的路由器跳数,每经过路由器一跳就会 -1,为 0 时,将报文丢弃,主要是为了避免路由器环路
(7)8 位协议版本:当前 IP 报文封装的数据所使用的协议类型(对方进行数据分用时所使用的协议类型)
(8)16 位校验和:校验数据的一致性
(9)32位源端 IP ,32位对端 IP 地址:描述数据从哪来到哪去
(10)0~40 字节的选项数据
地址管理
ipv4 版本的 IP 地址:4 字节无符号整型数字,描述的主机个数 :42亿9千万+
IP 地址不够用:动态地址分配 DHCP ;使用 NAT 技术组建私网
ipv6 版本的 IP 地址:16 字节无符号整型数字
IP 地址的组成:
网络号:一个网络的标识,一个网络所分配的IP地址中都会包含这个标识
通过网络号,路由器能够判断某个 IP 地址属于哪个网络
主机号:一台主机在一个网络中的标识
通过主机号,路由器能够判断某个 IP 是当前网络中的哪台主机;一个网络中有多少个主机号代表可以连接多少台主机
网络号的划分(五种)
(1)A 类网络:
高 1 位固定为 0,有 7 位网络号,24 位主机号
网络号范围:0~127
IP 地址范围:0.0.0.0 ~ 127.255.255.255
A 类网络通常用于组建大型网络
(2)B类网络:
高 2 位固定为 10,有 14 位网络号,16 位主机号
网络号范围:128.0 ~ 191.255
IP 地址范围:128.0.0.0 ~ 191.255.255.255
B类网络通常用于组建中型网络
(3)C类网络:
高 3 位固定为 110,21 位网络号,8 位主机号
网络号范围:192.0.0 ~ 223.255.255
IP 地址范围:192.0.0.0 ~ 223.255.255.255
C类网络通常用于组建小型网络
(4)D/E 类网络:
D类高四位固定为 1110,28位为多播组号
E类高五位固定为 11110,27位留待后用
CIDR :使用子网掩码进行网络划分
子网掩码:4字节无符号整数,数据必须由二进制连续的 1 组成
例题:
一个公司申请了C类网络 193.23.24.0/24,而公司由四个部门构成,想要划分为 4 个子网,平均将 IP 地址分配给四个部门,请问每个子网网络号、子网掩码、IP 地址范围?
答:
193.23.24.0/24 :24标识网络号为 24 位构成,C 类网络的 主机号为 8 位,因此C类网络中一个网络中可以拥有主机号 256 个(2^8)
平均划分为 4 个子网,则每个子网的主机号个数就是 256/4=64 个,也就是 0~63
子网掩码取反可以得到子网最大主机号
子网掩码与IP地址相与可以得到网络号
因此,子网掩码也就是等于子网最大主机号取反---- 63取反:
特殊的网络以及IP地址
(一)特殊网络:私网
私网组建要搭配一个技术:NAT 技术----网络地址转换技术
一个私网要向外发送数据,需要流经网关设备,进行网络地址替换,替换成为网关设备对外的地址,并且在设备中记录映射关系
网络划分时候,专门为组建私网划分出来几个网络号,避免与公网网络号重复
私网的网络号,只要注意相邻网络不使用相同网络号,就能保证私网地址不冲突,因为私网主机对外通信使用的都是对外的公网地址,经过 NAT 网络地址替换后,对外地址不冲突,因此不相邻的私网是可以使用相同的网络号(IP地址可以重复)
(二)特殊 IP 地址
0.0.0.0:代表本地主机上的任意网卡 IP 地址(通过用于服务端程序的绑定监听地址)
255.255.255.255:全网广播地址(UDP广播)
主机号全为 0 的地址:网络号,是网络的标识–不能分配给主机
主机号全为 1 的地址:局域网广播地址,也不能分配给主机
127.0.0.1:本地主机上的虚拟回环网卡地址,进行主机内部的网络通信 —> 本地网络回环测试
路由选择
路由器为流经的数据选择合适的路径进行转发(route 路由表)
每一个网络通信设备上都会有一张路由表
一个路由器连接了多少个网络,就得有多少块网卡,每一块网卡都能获取一个对应网络的IP地址,它的路由表中就会有多少条路由信息
链路层
负责相邻设备之间的数据传输
网络层 IP 地址描述的是数据从哪个主机来要到哪去,描述的是起点与终点,但是起点到终点中间需要进行层层转发才能够到达目标主机,然而中间设备间的数据转发也需要具有标识:MAC 地址
MAC 地址
MAC 地址:网卡的物理硬件地址(网卡出厂时设定的固定地址)
(1)类型:uint8_t mac[6] :无符号48位数字
早期网卡的mac地址不可修改,现在可以修改
(2)mac 作用:相邻设备间的标识
以太网协议:ether
如何知道指定相邻设备的 MAC 地址:依赖于 ARP 协议
ARP 协议
介于链路层与网络层之间的协议(既包含 MAC 地址,也包含 IP 地址)
作用:通过 IP 地址,获取指定设备的 MAC 地址
获取指定设备硬件地址的流程:
(1)当前主机封装一个 ARP 请求,在请求中填充源端 MAC,以及 IP 地址信息,并且将以太网帧头中的目标 MAC 地址填充为 0xffffffffffff-广播地址;
(2)将 ARP 请求广播给所有相邻设备;
(3)收到 ARP 请求的主机,对数据帧进行解析,若目标 IP 地址匹配则填充自己的 MAC 地址和 IP 地址进行响应;若不匹配则直接丢弃;
(4)当前主机受到响应后,就知道了指定设备的 MAC 地址;
(5)当前主机将 MAC - IP 映射关系缓存起来,并保持一段时间(并非永久)
MTU 最大传输单元
链路层限制的最大数据帧大小
MTU 对于传输层协议的影响:
TCP在进行三次握手阶段就会协商 MSS (根据 MATU 计算而来),然后在后续的数据传输中,每次从缓冲区取出合适大小数据进行头部封装传输
TCP在传输层会自动进行数据分段,因此不会在网络层进行数据分段
UDP并没有MSS协商,只要数据大小最大下于 64k-8 -20 即可传输,但是有可能在网络层因为大于MTU大小而导致数据分片
但所有分片需要在对端主机上进行重组,重组失败就会丢弃数据,因为分片越多风险越大(一个分片出问题会导致全部丢弃)
因此程序员在设计UDP数据传输时候,尽量在应用层考虑MSS,也就是尽量在进行传输时候,提前将报文分割好了,减少在网络层的数据分片
其他典型协议:ICMP、DNS 、NAT技术
ICMP协议
作用:用于进行网络探测
ping:进行网络探测
ping 就是通过 icmp 协议实现的:
(1)给指定主机发送icmp请求,要求对方进行icmp响应;
(2)若对方网络路由器,得不到响应就会组织对应的目标主机不可达的响应返回
ICMP 是网络协议,因此工作在网络层不涉及到端口的处理
DNS 协议
DNS (domain name system) 域名系统
网络中服务器特别多,但是请求服务器需要使用到 IP 地址,而 IP 地址并不容易记忆,因此设计出来域名
域名:服务器的别名,一个便于记忆的字符串(不区分字符串大小写)
为解决压力分摊问题以及容灾性,因此在世界各地都架设了域名服务器,并对域名服务器进行了层级划分:
(1)根域名服务器;
(2)顶级(一级)域名服务器;
顶级域名服务器的种类:
根据使用性质:.com;.org;.gov;.net;.edu…
根据地域划分:.cn;.us;.jp
(3)二级域名服务器;
二级域名通常都是根据机构名称进行命名:.baidu.com
…
针对不同等级域名也进行了划分,以便于域名管理,不同的域名服务器管理不同的域名
域名的解析流程:
NAT & NAPT 技术
NAT:网络地址转换技术,用于组建私网时候在网关设备上进行数据源端地址替换
(1)保护了私网主机安全性(私网主机对外不可见)
NAPT:网络地址端口转换技术(防止端口号重复使用)
(2)节省了公网 IP 地址的使用
代理
客户端主机将自己的请求并不直接发送给目标服务器,而是将请求发送给代理服务器,代理服务器去请求目标服务器,得到响应后将响应回复给客户端主机