网络层
进行地址管理与路由选择。
通过对地址的管理,能够保证数据从一台主机发送到另一台主机,并且要选择合适的路径进行传输。
- 主机:两端
PC
设备 - 路由器:实现中间数据转发的设备
- 设备节点:网络中的每个设备都是一个节点
IP
地址在一个网络中不可随意分配。
IP
地址 = 网路号 + 主机号
网段划分:
早期的网段划分中将整个网络中的IP
地址划分成了5类:
A
类:0~127
B
类:128~191
C
类:192~223
D
类:224~239
E
类:240~247
因为早期的网段划分方式太过于粗糙,浪费较多,因此被淘汰掉了。
引入的新方案:CIDR
子网掩码
子网掩码由一段连续的二进制1
组成。
功能:子网掩码与IP
地址进行与操作(IP
& mack
),得到网络号。
子网掩码取反,可以得到最大的主机号range
= ~mask
在一个网络中并不是所有的主机号都可以分配给主机:
- 主机号全为
0
:网络号(标识网络)。 - 主机号全为
1
:广播地址(UDP
) - [特殊的
IP
地址]127.0.0.1
:本地的回环网卡地址(虚拟网卡)
用于本地网络测试。 - 公网与私网的
IP
地址划分:RFC 1918
规定了用于组建私网的网段,三种为:
(10.*.*.*
、172.16.*.*
~172.31.*.*
、192.168.*.*
)
链路层
负责相邻设备之间的数据帧传输:以太网协议(eth
)。
MAC
地址:网卡上的物理地址,定位相邻的两个设备。
类型:uint8_t mac[6]
,共48
位。
eth
字段信息:源MAC
地址,目的MAC
地址,上层协议类型,数据,帧尾CRC
传输数据都要传输到相邻设备,如何获取相邻设备的MAC
地址?arp
协议。
ARP
协议:通过IP
地址获取MAC
地址,是介于网络层与链路层之间的协议。
局域网的
arp
欺骗攻击?
arp
协议获取到对端的mac
地址后,会在本机将ip
地址与mac
地址的映射关系缓存很短的一段时间。
MTU:最大传输单元。限制了网卡在传输数据的时候,数据的最大长度。
如果
mtu
为1500,数据最大长度如何计算?
udp
: mtu - ip - udp = 1500 - 20 - 8 =1472
tcp
:mtu - ip - tcp = 1500 - 20 - 20 =1460
这两个数字就是MSS
,最大数据报文段大小。
mtu
的影响:
tcp
的影响:
tcp
在传输层进行数据传输时(在三次握手时)双方会协商MSS
大小,在传输层自动进行数据分段,而这个MSS
也取决于mtu
大小。通信双方会选择较小的一方作为mss
最大传输大小。
因此tcp
传输在网络层不会进行数据分片。udp
的影响:
udp
在传输数据的时候数据不大于64k - IPhdrlen - UDPhdrlen
都可以传输(小于64k
),但若数据的大小大于mtu
大小则会在网络层进行数据分片。
udp
数据若被分片,则任意一个分片丢失或出错,就会造成分片重组失败,导致整个udp
数据报被丢失。
分片越多,危险越大。因此udp
数据最好在应用层就将数据报大小分配合适。
知名协议/技术
DNS协议
DNS
:域名系统(domain name system
)
作用:域名解析,通过解析域名获取到服务器IP
地址。
域名:服务器地址的一种表示方法。
域名解析服务器
域名解析服务器采用分布式存储,根域名服务器:全世界有 13
组。
分布式存储的好处:
- 提高解析速度 / 分摊压力
- 提高容灾能力
常见顶级域名服务器:
.com
(company).org
(organization).gov
(goverment).cn
.jp
.us
常见二级域名服务器:
qq.com
baidu.com
常见三级域名服务器:
zhidao.baidu.com
image.baidu.com
DNS域名解析流程
- 检测本机的
hosts
文件
若本机没有与本地DNS
的对应关系,则进行下一步。 - 检测本地
DNS
解析器的缓存信息 - 向本地
DNS
服务器发起请求 - 向根域名服务器发送请求递归查找(顶级域名服务器
->
二级域名服务器->
…) - 如果没有找到就失败返回。
浏览器中输入
url
回车之后发生了什么?
DNS
解析- 组织
http
请求信息- 建立
TCP
客户端发送http
请求(因为http
是基于传输层tcp
协议的协议)- 网络层
IP
协议- 链路层的
eth
协议封帧头与帧尾。
ICMP协议
网络层协议:控制报文协议(Internet Control Message Protocol
)
功能:进行网络探测。
ping
工具就是ICMP
协议实现的,不使用端口。
ICMP
是网络层协议,而ping
是传输层协议。
NAT技术
地址转换技术(Network Address Translation
)。
NAT是一个服务,本质是一个程序,通常部署在网关之内。
在网络层将替换数据中的源IP
地址成为自己的IP
地址。
让数据在复杂的网络中进行传输时,怎么去怎么回来。要在本地建立NAPT
的映射关系(NAT
转换表),保证收到的回复数据,能够确认应该发送给内网的哪个主机。
代理服务器,即VPN
。
NAT
与代理服务器的区别:
NAT
工作在网络层,进行地址转换,通常部署在网关设备上。- 代理服务器是一个应用,可以部署在任何主机上。