网络层主要负责不同网络之间转发数据包,基于数据包的ip地址转发,不保证顺序性,不保证准确性。
主要的设备:路由器
1. 概述
路由器中的子网掩码目的是告诉用户网络是哪一部分。
比如网络是10.0.0.0,其中子网掩码是255.0.0.0,则子网掩码中的255表示网络是10部分,同样子网掩码格式的网段必须相同。
2. 基本模型
在客户端和服务器之间传输数据的模型
其中mac地址是决定方式
使用自己的子网掩码,判断自己在哪个网段,判断目标地址在哪个网段
如果源地址及目标地址都在同一个网段,则使用ARP协议广播解析目标ip的mac地址
3. 网络层协议
计算机网络整体的协议为:
其中网络层主要有:
1. ARP
- ARP:通过广播(也就是只解析同网段),解析目标ip地址的mac地址,第一次请求的时候需要解析,后续直接从缓存中取。
2. ICMP
网际控制报文协议:用于测试ip协议是否正常,主要检测网络故障使用。最常用的命令是PING
64 bytes from 182.61.200.6: icmp_seq=0 ttl=52 time=23.600 ms
从ping中的time可以反映请求网站的延迟,TTL表示生存时间,每经过一个路由器减1。
其中可以通过TTL大致看出服务器的系统
linux:64
Windows:125
同时可以通过后缀加-t
方式让请求一直进行下去。
3. IGMP
组播协议,又称为多播协议,目标地址是FF:FF:FF:FF
4. IP
4.1 IP数据包结构
ip数据包由首部和数据两部分组成,其中首部的前一部分是固定长度,共20个字节,是所有IP数据包必须具有的,首部的固定部分后面是一些可选字段,其长度是可变的。
- 版本:用于标识TCP/IP协议的版本。比如IPv4
- 首部长度:标记首部的字节长度
- 区分服务:比如区分图片、视频、文字传输
- 总长度:统计整个数据包的长度。该部分为2个字节(16bit),表示最大的数为:2^16-1 = 65535,也就是说数据包最大为65535个字节。(数据链路层数据组大是1500个字节,如果网路层的数据包大小大于1500个字节,则会对数据包进行分片)
- 标识:分片的数据包的标识,表示他们是一个整体。
- 标志:用于表示数据包是一个完整的数据包,还是一个数据包中的一个部分。占三位,如果最低位是1表示后面还有分片,如果是0表示是最后一个分片。
- 片偏移:将一个完整数据包分成几部分,该参数记录每个片占整个数据包的第几个字节。
- 生存时间:1个字节,TTL,每经过一个路由器,TTL会减1,一旦TTL为0,则不会再往下继续转发。防止数据传输的时候有环路,消耗资源。
- 协议:表示数据部分的协议,TCP还是UDP,还是ICMP等。表示数据下一步到达哪一层。
- 首部检验和:检验首部数据是否正确
- 源IP地址:表示数据包来源的ip地址
- 目标IP地址:表示数据包发送的ip地址
- 可选字段:默认没有,长度可变,
4.2 IP协议
IP协议主要有两种:
- RIP
- OSRF
主要的目的是确定路由表,路由表又分为静态路由和动态路由。
网络畅通条件:数据包有去有回。
4.3 静态路由
需要网络管理手动配置路由器的下一步的转跳,比较麻烦,适合于小规模的网络,一旦网络规模较大,配置的复杂性剧增。
4.4 动态路由
路由器自定义下一跳的转跳,会自动选择最短的路径,30s更新一次路由信息,最多转跳15次,一旦到达15次,则默认该条路径不通。