【计算机网络 - 基础问题】每日 3 题(三十九)

✍个人博客:https://blog.csdn.net/Newin2020?type=blog

📣专栏地址:http://t.csdnimg.cn/fYaBd

📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~

❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)

115. traceroute ------ 差错报文类型的使用

有一款充分利用 ICMP 差错报文类型的应用叫做 traceroute(在 UNIX、MacOS 中是这个命令,而在 Windows 中对等的命令叫做 tracert )。

1. traceroute 作用一

traceroute 的第一个作用就是故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器。

traceroute 的参数指向某个目的 IP 地址:

复制代码
traceroute 192.168.1.100

这个作用是如何工作的呢?

它的原理就是利用 IP 包的生存期限 从 1 开始按照顺序递增的同时发送 UDP 包,强制接收 ICMP 超时消息的一种方法。

比如,将 TTL 设置 为 1,则遇到第一个路由器,就牺牲了,接着返回 ICMP 差错报文网络包,类型是时间超时。

接下来将 TTL 设置为 2,第一个路由器过了,遇到第二个路由器也牺牲了,也同时返回了 ICMP 差错报文数据包,如此往复,直到到达目的主机。

这样的过程,traceroute 就可以拿到了所有的路由器 IP。

当然有的路由器根本就不会返回这个 ICMP,所以对于有的公网地址,是看不到中间经过的路由的。

2. traceroute 作用二

traceroute 还有一个作用是故意设置不分片,从而确定路径的 MTU。

这么做是为了什么?

这样做的目的是为了路径 MTU 发现。

因为有的时候我们并不知道路由器的 MTU 大小,以太网的数据链路上的 MTU 通常是 1500 字节,但是非以太网的 MTU 值就不一样了,所以我们要知道 MTU 的大小,从而控制发送的包大小。

116. 如何判断收到的报文是一个完整的 IP 数据报而不是某个 IP 数据报的分片?

IP 数据包的包头存在三个 bit 的表示位,第一个标识位备用,中间位 DF(Don't Fragment),DF = 0 表示能分片,DF = 1 表示不能分片。最低位为 MF(More Fragment) ,MF = 1 表示后面还在传输数据报的分片,MF = 0 表示最后一个报文段。

IP 数据包还有一个片偏移的字段,当片偏移为 0 时,表示这个数据报文没有分片,或者第一个分片。

两者可以结合来进行判断。

117. 路由表示做什么用的?在 Linux 环境中怎么来配置一条默认路由?

简:路由表是用来决定如何将包从一个子网传送到另一个子网的,换句话说就是用来决定从一个网卡接收到的包应 该送的哪一张网卡上的。在 Linux 上可以用 "route add default gw <默认路由器IP>" 来配置一条默认路由。

详:路由表是用来决定如何将包从一个子网传送到另一个子网的,换局话说就是用来决定从一个网卡接收到的包应 该送的哪一张网卡上的。路由表的每一行至少有目标网络、netmask、到这个子网应该使用的网卡。当路由器从一个网卡接收到一个包时,它扫描路由表的每一行,用里面的 netmask 和包里的目标 IP 地址做并逻辑运算 (&) 找出目标网络号,如果此网络号和这一行里的网络号相同就将这条路由保留下来做为备用路由,如果已经有备用路由了就在这两条路由里将网络号最长的留下来,另一条丢掉,如此接着扫描下一行直到结束。如果扫描结束任没有找到任何路由,就用默认路由。确定路由后,直接将包送到对应的网卡上去。在具体的实现中,路由表可能包含更多的信息为选路由算法的细节所用。

题外话:路由算法其实效率很差,而且不 scalable,解决办法是使用 IP 交换机,比如 MPLS。 在 Linux 上可以用 "route add default gw <默认路由器IP>" 来配置一条默认路由。

相关推荐
小宋102114 分钟前
Java 项目结构 vs Python 项目结构:如何快速搭一个可跑项目
java·开发语言·python
楚兴27 分钟前
MacBook M1 安装 OpenClaw 完整指南
人工智能·后端
The森28 分钟前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
tq108633 分钟前
Skills 的问题与解决方案
笔记
是做服装的同学35 分钟前
如何选择适合的服装企业ERP系统才能提升业务效率?
大数据·经验分享·其他
jl486382138 分钟前
变比测试仪显示屏的“标杆“配置!如何兼顾30000小时寿命与六角矢量图精准显示?
人工智能·经验分享·嵌入式硬件·物联网·人机交互
三水不滴42 分钟前
有 HTTP 了为什么还要有 RPC?
经验分享·笔记·网络协议·计算机网络·http·rpc
一晌小贪欢1 小时前
Python 爬虫进阶:如何利用反射机制破解常见反爬策略
开发语言·爬虫·python·python爬虫·数据爬虫·爬虫python
Java编程爱好者1 小时前
2026版Java面试八股文总结(春招+秋招+社招),建议收藏。
后端
熊猫不是猫QAQ1 小时前
如何用AI打造自己的NAS项目,小白向教程,AI编程助手MonkeyCode
经验分享