前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >速读原著-TCP/IP(用Traceroute确定路径MTU)

速读原著-TCP/IP(用Traceroute确定路径MTU)

作者头像
cwl_java
发布2020-03-09 15:44:55
1.3K0
发布2020-03-09 15:44:55
举报
文章被收录于专栏:cwl_Javacwl_Java

第11章 UDP:用户数据报协议

11.7 用Traceroute确定路径MTU

尽管大多数的系统不支持路径 M T U发现功能,但可以很容易地修改 t r a c e r o u t e程序(第8章),用它来确定路径 M T U。要做的是发送分组,并设置“不分片”标志比特。发送的第一个分组的长度正好与出口 M T U相等,每次收到I C M P“不能分片”差错时(在上一节讨论的)就减小分组的长度。如果路由器发送的 I C M P差错报文是新格式,包含出口的 M T U,那么就用该M T U值来发送,否则就用下一个最小的 M T U值来发送。正如 RFC 1191 [Mogul and Deering 1990]声明的那样,M T U值的个数是有限的,因此在我们的程序中有一些由近似值构成的表,取下一个最小M T U值来发送。

首先,我们尝试判断从主机 s u n到主机s l i p的路径M T U,知道S L I P链路的M T U为2 9 6。

在这里插入图片描述
在这里插入图片描述

在这个例子中,路由器 b s d i没有在I C M P差错报文中返回出口 M T U,因此我们选择另一个M T U近似值。T T L为2的第1行输出打印的主机名为 b s d i,但这是因为它是返回 I C M P差错报文的路由器。T T L为2的最后一行正是我们所要找的。

在b s d i上修改I C M P代码使它返回出口M T U值并不困难,如果那样做并再次运行该程序,得到如下输出结果:

在这里插入图片描述
在这里插入图片描述

这时,在找到正确的 M T U值之前,我们不用逐个尝试 8个不同的M T U值——路由器返回了正确的M T U值。

全球互联网 作为一个实验,我们多次运行修改以后的 t r a c e r o u t e程序,目的端为世界各地的主机。可以到达1 5个国家(包括南极洲),使用了多个跨大西洋和跨太平洋的链路。但是,在这样做之前,作者所在子网与路由器 n e t b之间的拨号S L I P链路M T U(见图11 - 1 2)增加到1 5 0 0,与以太网相同。

在1 8次运行当中,只有其中 2次发现的路径 M T U小于1 5 0 0。其中一个跨大西洋的链路M T U值为5 7 2(其近似值甚至在 RFC 11 9 1中也没有被列出),而路由器返回的是新格式的I C M P差错报文。另外一条链路,在日本的两个路由器之间,不能处理 1 5 0 0字节的数据帧,并且路由器没有返回新格式的 I C M P差错报文。把M T U值设成1 0 0 6则可以正常工作。从这个实验可以得出结论,现在许多但不是所有的广域网都可以处理大于 5 1 2字节的分组。利用路径M T U发现机制,应用程序就可以充分利用更大的 M T U来发送报文。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第11章 UDP:用户数据报协议
    • 11.7 用Traceroute确定路径MTU
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档