社区
网络编程
帖子详情
路由器如何对待ttl超时的tcp报文?
haitanshangdeyu
2011-06-17 12:48:26
最近在做一个用tcp报文探测路由的程序,想问一个问题,
路由器对待ttl超时的icmp报文会返回一个icmp超时消息,那假如报文是tcp的呢?路由器会怎么做呢?也会返回ICMP超时消息么?还是直接丢弃不响应呢?
个人感觉回复TCP报文不太现实……向各位大侠请教,希望在说出结果的时候能说下为什么~~
另外,还想问下,如果是探测中途遇到的主机,比如说代理服务器,但是并不是目的节点,那他会给回复什么样的消息呢?
感激不尽!
...全文
572
9
打赏
收藏
路由器如何对待ttl超时的tcp报文?
最近在做一个用tcp报文探测路由的程序,想问一个问题, 路由器对待ttl超时的icmp报文会返回一个icmp超时消息,那假如报文是tcp的呢?路由器会怎么做呢?也会返回ICMP超时消息么?还是直接丢弃不响应呢? 个人感觉回复TCP报文不太现实……向各位大侠请教,希望在说出结果的时候能说下为什么~~ 另外,还想问下,如果是探测中途遇到的主机,比如说代理服务器,但是并不是目的节点,那他会给回复什么样的消息呢? 感激不尽!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaopoy
2011-06-20
打赏
举报
回复
你说的这种情况的话,我暂时能想到的就只有二种方法了,一是看它是否支持SMNP来检测网络结构了。另一种方法是利用路由器交换路由线路的RIP协议。这个我只是略懂一点点,就只提基础的,避免因为我的错误理解带来你实际应用上的失误 /:^]
支持SMNP的话,可以从目标机或者紧接着目标机的MIB SMNP数据库里获取信息,目标机的IpGroup组里的ipAdEntAddr这个表,或者其他机的ipRouterDest和ipRouterNextHop。
使用RIP来获取路由路径的话,也是有点问题的,因为一些中途的路由器会不给你传递RIP消息过去,这样就很尴尬了。但是request可以发到目标机的之前的那个路由上的话,一般都可以得到目标机的IP了,虽然是藏在一大堆IP里面。
haitanshangdeyu
2011-06-19
打赏
举报
回复
[Quote=引用 7 楼 xiaopoy 的回复:]
唔,我又傻掉了,太晚了看的晕晕的。
超时的话,如果是那个路由器直接抛弃TLL小于1的包,而不返回ICMP的情况,在本机上的话,一般就没办法了。我也只是比较稍微了解一些,这个路由器的IP,若想知道的话,应该得有路由我们的封包给它的那个路由器的控制权,才能从路由表中得到它的IP。
另外,实际中出现这种超时的情况,有几个常见的场景,一是网络环境自己都清楚,这儿是为了找出停机的哪一个点,这样碰到超时……
[/Quote]
恩……
我做的就是想在本机上探测一个不知道网络环境的拓扑中的IP恢复,就是想要把traceroute中的*.*.*.*恢复出来。所以第一个常见的场景就不适用了……呵呵。
第二个场景中,我每次探测都会发3个数据包,这样应该能克服掉这个问题吧?你觉得呢?
第三个场景中,我用的是自己编程发送TCP报文,端口是由我自己来定义的,如果真是你说的这种问题,那是不是换个端口或者对路由器进行一下端口扫描,等发现开放的端口之后,便可以获得它的IP了呢?
我程序已经做出来了,但是效果很差。本来想的使用TCP报文的话,很多问题都可以解决,比如说,路由器对ICMP报文的限速,或者对traceroute探测报文的屏蔽等等。但是事实证明只有对很少的部分网址才有用,大部分结果还是测试不出来。比如说,针对百度的119.75.217.109探测中,第13跳的IP就不能显示。我进行抓包,发现根本都没有ICMP响应包。应该就是你最开始说的那种情况了。在这样的条件下,想获取IP,真的好难……
xiaopoy
2011-06-18
打赏
举报
回复
唔,我又傻掉了,太晚了看的晕晕的。
超时的话,如果是那个路由器直接抛弃TLL小于1的包,而不返回ICMP的情况,在本机上的话,一般就没办法了。我也只是比较稍微了解一些,这个路由器的IP,若想知道的话,应该得有路由我们的封包给它的那个路由器的控制权,才能从路由表中得到它的IP。
另外,实际中出现这种超时的情况,有几个常见的场景,一是网络环境自己都清楚,这儿是为了找出停机的哪一个点,这样碰到超时无法获得IP的路由器其实是解决了问题。二是tracroute这次就真超时了,再试也许就行。三就是被那个路由器主动的把连接处理掉了,可能是因为协议访问的端口问题等被限制之类的原因,因为traceroute会自动更换封包中的端口(总是用不存在的端口去访问,以避免真的被目标机上的哪个程序接受到),所以这个问题其实也很少碰到。
xiaopoy
2011-06-18
打赏
举报
回复
把TTL加1,然后多出来的那一个就是了 /:^]!
oyljerry
2011-06-17
打赏
举报
回复
一个前提概念:路由器是2/3层设备只有IP,ICMP等包,不会处理TCP包.
haitanshangdeyu
2011-06-17
打赏
举报
回复
[Quote=引用 2 楼 xiaopoy 的回复:]
没看完帖子,再补充下。ttl和代理服务器是没有关系的。除非这个代理服务器,完全要当透明的,特地对TTL进行了处理,因为一般的路由器或其他形式的中转机器,总是修改一下TTL,这样想维持TTL不变,一般而言就得在得到要代理出去的包时先递增一下TTL再发包了。
[/Quote]
上个问题弄明白了,想再问一下~~
如果使用TCP报文进行路由探测,但是探测结果还是出现超时无法显示IP,那我应该如何做才能获取这个路由器的IP呢?有什么好方法么?
haitanshangdeyu
2011-06-17
打赏
举报
回复
[Quote=引用 1 楼 xiaopoy 的回复:]
ttl越界了肯定返回一个icmp啊。
这是IP协议网络层的,不是TCP 传输层的。关于ICMP,要理清一个概念的,ICMP是使用IP协议来实现它的功能的。但是,ICMP协议和IP、TCP、甚至应用程序都能产生关系,这是指它是服务于这几个层需求的,而ICMP自己,是在IP协议上面实现的,一句话说,ICMP利用IP协议满足了IP/TCP/Apps的因特网连接的控制消息传递的需求。
[/Quote]
大侠所言甚是,让我如梦初醒……太感谢了!!
xiaopoy
2011-06-17
打赏
举报
回复
没看完帖子,再补充下。ttl和代理服务器是没有关系的。除非这个代理服务器,完全要当透明的,特地对TTL进行了处理,因为一般的路由器或其他形式的中转机器,总是修改一下TTL,这样想维持TTL不变,一般而言就得在得到要代理出去的包时先递增一下TTL再发包了。
xiaopoy
2011-06-17
打赏
举报
回复
ttl越界了肯定返回一个icmp啊。
这是IP协议网络层的,不是TCP 传输层的。关于ICMP,要理清一个概念的,ICMP是使用IP协议来实现它的功能的。但是,ICMP协议和IP、TCP、甚至应用程序都能产生关系,这是指它是服务于这几个层需求的,而ICMP自己,是在IP协议上面实现的,一句话说,ICMP利用IP协议满足了IP/TCP/Apps的因特网连接的控制消息传递的需求。
TCP
/IP协议十三:
TTL
TTL
1.
TTL
是什么?2.
TTL
的作用3.
TTL
原理 1.
TTL
是什么?
TTL
是 Time To Live的缩写 该字段指定IP包被
路由器
丢弃之前允许通过的最大网段数量。
TTL
是IPv4包头的一个8 bit字段。 2.
TTL
的作用
TTL
的作用是限制IP数据包在计算机网络中的存在的时间。
TTL
的最大值是255,
TTL
的一个推荐值是64。 3.
TTL
原理 虽然
TTL
从字面上翻译,是...
【
TCP
/IP】路由选择之
TTL
1.什么是
TTL
,
TTL
的最大值是多少?
TTL
是 Time To Live的缩写,该字段指定IP包被
路由器
丢弃之前允许通过的最大网段数量。
TTL
是IPv4包头的一个8 bit字段。
TTL
字段的目的是防止数据报在选路时无休止地在网络中流动。例如,当
路由器
瘫痪或者两个
路由器
之间的连接丢失时,选路协议有时会去检测丢失的路由并一直进行下去。在这段时间内,数据报可能在循环回路被终止。
TTL
字段就
报文
如何丢弃 如何处理
二层,没有mac表项或者黑洞mac; 2.5层,没有lsp,或者黑洞lsp; 三层,没有路由表项或黑洞路由;
为什么客户端发出第四次挥手的确认
报文
后要等2MSL的时间才能释放
TCP
连接?
先看一下什么是2MSL MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“
报文
最大生存时间”,他是任何
报文
在网络上存在的最长时间,超过这个时间
报文
将被丢弃。因为
tcp
报文
(segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文,而ip头中有一个
TTL
域,
TTL
是time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数,每经过一个处
关于ip wireshark实验中,ICMP
报文
返回的
ttl
值为什么是不变的解释
这里写自定义目录标题关于ip wireshark实验中,ICMP
报文
返回的
ttl
值为什么是不变的解释wireshark的
报文
界面
ttl
值的产生原理wireshark中的一些细节 关于ip wireshark实验中,ICMP
报文
返回的
ttl
值为什么是不变的解释 wireshark的
报文
界面 可以看到,IP为172.20.0.1的
路由器
返回的
ttl
值是64,如果多观察几次该
路由器
返回的
报文
,会发现所有的
ttl
值都是64
ttl
值的产生原理
TCP
/IP中的
TTL
这篇文章中提到,ICMP回显的
报文
中的
ttl
生成
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章