自顶向下 | 带你遨游网络层
前言#
网络层的知识点非常繁多,本文仅是基于《计算机网络 自顶向下》而总结的一些重点知识点,如果想要详细了解网络层的知识,可以看下《自顶向下》
本文已经收录到我的
Github
个人博客,欢迎大佬们光临寒舍:我的GIthub博客
对于互联网的网络层来说,其提供的服务非常简单,包括:
- 转发
- 路由选择
网络层可能提供的服务#
网络服务模型:
- 确保交付
- 保证延迟的确保交付
- 有序交付
- 确保最小带宽
- 确保最大时延抖动
- 安全性服务
那么 IP
协议提供以上哪些服务呢?
答案就是:一个也不提供
- 不 确保交付
- 不 保证延迟的确保交付
- 不 有序交付
- 不 确保最小带宽
- 不 确保最大时延抖动
- 没有 安全性服务
数据报网络#
IP
协议构建的网络就属于数据报网络
特点:
- 无需建立连接,维持状态信息
- 使用转发表决定分组输出端口
- 通过最长前缀匹配原则进行查询转发表
路由器工作原理#
- 输入端口 :从物理层接收数据,拆封分组、查看相应协议层头部,查询转发表放进发送队列
- 交换结构 : 负责发送队列到输出队列的运输
- 输出端口 :拿到输出队列的数据,然后封上相应协议层的头部,送给物理层
- 路由选择处理器 : 负责执行路由选择,更新转发表,以及一些控制功能
网络层的三个主要组件#
IP
协议#
IPV4
数据报格式#
- 版本:规定了
IP
协议版本 - 首部长度
- 服务类型:区分不同类型的
IP
数据报 - 数据报长度
- 标识、标志、片偏移:用于
IP
数据报分片 - 寿命:一个数据报可以被路由处理的次数
- 协议:用于
IP
的多路复用和分解,即应将数据交付给上层的那个协议,TCP
还是UDP
- 首部检验和
- 源和目的
IP
地址 - 选项:用于扩展
IP
首部 - 数据
IPV4
编址#
-
总长度为
32
位 -
一般以
8
位一组 -
子网:具有相同的前半部分地址的一组
IP
地址构成的网络 -
编址方案:
- 无类别域间路由选择
- 分类编址
IPv4
和 IPv6
的区别#
1. 扩展了寻址能力。
V6
有 128
位地址,v4
只有32
位。相当于扩展了4倍。
2. 报头格式简化
V6
相对于 V4
来说,报头简化了很多
3. 对可选项更大的支持
V6
在 V4
的基础上,支持更多可选项操作,比如 对 IP
层安全支持,对IP
层漫游支持等功能。
4. 支持自动配置
IPv6
节点通过 地址自动配置 来获得 V6
地址 和网关地址,
5. 身份验证和保密
v6
中加入了身份验证、数据一致性等保密性内容
6. 允许继续扩充协议
新的应用扩展也是在 V6
中支持的。
DHCP
#
是一种用于自动分配 IP
地址且即插即用的协议,使用 UDP
作为运输层服务
对于一个新加入网络的电脑:
DHCP
服务器发现。通过设置源IP
地址为0.0.0.0
,且目的IP
地址为255.255.255.255
的UDP
分组,在网络中广播DHCP
服务器提供。DHCP
监听到广播,使用一个DHCP
提供报文 向客户作出响应 (继续以广播的形式发出,因为此时客户依旧没有自己的IP
地址)DHCP
请求。客户得到响应后,发送一个DHCP
请求报文,回显响应的配置参数DHCP ACK
。服务器回应一个DHCP ACK
报文,响应客户的请求报文
NAT
#
从目的来说,NAT
技术使得多台电脑可以通过一个公共 IP
上网,且不发生冲突。
其行文的核心在于,从路由器 (具备公共 IP
的设备) 拦截所有的分组,修改其 IP
地址和端口,并记录这种修改产生相应的映射,发送修改后的分组,接收时执行相反的步骤。
路由选择算法#
分类
全局还是分散:
- 全局式路由选择算法 (链路状态算法)
- 需要事先知道网络总体的分布图
- 分散式路由选择算法 (距离向量算法):
- 无需知道网络总体的分布图
动态还是静态:
- 静态路由选择
- 动态路由选择
是否负载敏感:
- 负载敏感算法
- 负载迟钝算法
因特网控制报文协议 (ICMP
)#
- 用于主机和路由器彼此沟通信息
- 最典型的用途是差错报告
- 构建于
IP
协议之上 (因为其报文位于为IP
数据报的数据字段)
如果文章对您有一点帮助的话,希望您能点一下赞,您的点赞,是我前进的动力
本文参考链接:
-
《计算机网络-自顶向下方法》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端