还有一个就是351页倒数第二段上的有关“Tracert的设计原理”的问题:TTL的变化是不是这样的,1---0-----1------0------1.....这样交替变化的,开始的时候TTL=1,遇到一个路由器的时候变成0,发送ICMP超时数据包之后立即变为1,又遇到路由器的时候又变成0,再发送ICMP数据包,TTL又变为1....那这个TTL又怎么能“一旦TTL的值递增得足够大”呢???
不解~~~~~有人知道吗?谢谢~~~~~
11 个解决方案
#1
怎么没人呢?
#2
第二个问题:
没经过一个路由器,它都会把TTL的值减一,如果TTL的值为0,而且本路由器不是最终目的地,则返回ICMP超时包。
tracert第一次向目的地发一个TTL为1的包,这样第一个路由器把TTL减一后为0,所以返回ICMP超时包,这样,tracert就知道了第一个路由器的地址;
然后发一个TTL为2的包,根据返回的ICMP报文知道第二个路由器的地址;
直到报文发到目的地,收到正确的应答。
这样就知道了到目的地所经过的路由器的地址了。
没经过一个路由器,它都会把TTL的值减一,如果TTL的值为0,而且本路由器不是最终目的地,则返回ICMP超时包。
tracert第一次向目的地发一个TTL为1的包,这样第一个路由器把TTL减一后为0,所以返回ICMP超时包,这样,tracert就知道了第一个路由器的地址;
然后发一个TTL为2的包,根据返回的ICMP报文知道第二个路由器的地址;
直到报文发到目的地,收到正确的应答。
这样就知道了到目的地所经过的路由器的地址了。
#3
你的意思是说:源主机收到ICMP超时包后,再发一个TTL比上一个TTL大1的数据包出去??
#4
根据224页倒数第二段的有关TTL的分析以及在360页第6行程序,应该说这个TTL一开始不是1的吧?
#5
??
#6
我也好想看这本书哎,可不可以送给我啊?
#7
IPPROTO_UDP这些都是define在winsock2.h里面的,你到里面看看啊,其实就是int
#8
有没有电子版啊,我也想要.
#9
1。两种定义的socket是不同的。第一种定义时定义了一个DGRAM的socket,这种socket遵守UDP协议,但是协议实现的细节不用你来关心,内核帮你完成这部分工作,包括发送时添加UDP头、添加IP头,接收时分离IP头、分离UDP头。也就是说,这种socket你唯一能控制的是它的数据——它将“严格”遵守UDP协议。而第二种socket截然不同。它是原始套接字,它接收到的数据中将包括IP头与UDP头,你必须自己解析,发送时你必须自己构造UDP头(甚至自己构造IP头)。内核不会对接收到和将要发送的数据(事实上,发送时的IP头有可能被更改)做任何处理。至于第二个参数PROTO_UDP只是给内核一个通知,告诉它我只关心IP头中协议为PROTO_UDP的数据报,其他的数据报不要给我。你在发送时即使发送一个TCP的报头也无所谓。所以PROTO_UDP只是一个接收类型“通知”,而实际发送的数据不一定就要“严格”遵守UDP协议。
2。TTL就是Time To Live,其实就表明了报文“存活”的时间。报文每经过一个路由器,路由器就会将TTL值减一,如果TTL值为0,路由器就将该报丢弃,并给发送端回送一个TIME EXCEEDED的ICMP报文(不过有些路由器只是丢弃该报,却并不会送ICMP,这种路由器TRACERT无法跟踪)。因此,TRACERT首先发送一个TTL为1的报文,于是会得到第一个路由器会送的ICMP,TRACERT再发送一个TTL为2的报文,就会得到第二个路由器的ICMP,以此类推,直至收到目的IP回送的ICMP报文为止。现在假设源IP与目的IP之间需要经过10个路由器,那么如果TTL设为8,IP报将无法到达目的地。Windows使用的缺省TTL(Ieexplorer、telnet等)好像是32?记不清了。ping可以指定TTL值。
可能有些我记得不够准确,去查书吧。
2。TTL就是Time To Live,其实就表明了报文“存活”的时间。报文每经过一个路由器,路由器就会将TTL值减一,如果TTL值为0,路由器就将该报丢弃,并给发送端回送一个TIME EXCEEDED的ICMP报文(不过有些路由器只是丢弃该报,却并不会送ICMP,这种路由器TRACERT无法跟踪)。因此,TRACERT首先发送一个TTL为1的报文,于是会得到第一个路由器会送的ICMP,TRACERT再发送一个TTL为2的报文,就会得到第二个路由器的ICMP,以此类推,直至收到目的IP回送的ICMP报文为止。现在假设源IP与目的IP之间需要经过10个路由器,那么如果TTL设为8,IP报将无法到达目的地。Windows使用的缺省TTL(Ieexplorer、telnet等)好像是32?记不清了。ping可以指定TTL值。
可能有些我记得不够准确,去查书吧。
#10
按照我的理解:原始套接字的意思应该是说发送数据是需要或可以自己构造IP头、UDP头等这些协议头,非原始套接字则-----不用也不能-----自己构造这些“头”,只是控制数据包的数据部分???可以这样理解吗?
========TO:111222(哇哈哈哈哈~动感超人~娃哈哈哈哈)
我这本书是前几天去广州出差的时候到广州购书中心4楼天顶书店买的,不知道现在还有没有?
:))应该还有的。。。。
========TO:111222(哇哈哈哈哈~动感超人~娃哈哈哈哈)
我这本书是前几天去广州出差的时候到广州购书中心4楼天顶书店买的,不知道现在还有没有?
:))应该还有的。。。。
#11
可以。
#1
怎么没人呢?
#2
第二个问题:
没经过一个路由器,它都会把TTL的值减一,如果TTL的值为0,而且本路由器不是最终目的地,则返回ICMP超时包。
tracert第一次向目的地发一个TTL为1的包,这样第一个路由器把TTL减一后为0,所以返回ICMP超时包,这样,tracert就知道了第一个路由器的地址;
然后发一个TTL为2的包,根据返回的ICMP报文知道第二个路由器的地址;
直到报文发到目的地,收到正确的应答。
这样就知道了到目的地所经过的路由器的地址了。
没经过一个路由器,它都会把TTL的值减一,如果TTL的值为0,而且本路由器不是最终目的地,则返回ICMP超时包。
tracert第一次向目的地发一个TTL为1的包,这样第一个路由器把TTL减一后为0,所以返回ICMP超时包,这样,tracert就知道了第一个路由器的地址;
然后发一个TTL为2的包,根据返回的ICMP报文知道第二个路由器的地址;
直到报文发到目的地,收到正确的应答。
这样就知道了到目的地所经过的路由器的地址了。
#3
你的意思是说:源主机收到ICMP超时包后,再发一个TTL比上一个TTL大1的数据包出去??
#4
根据224页倒数第二段的有关TTL的分析以及在360页第6行程序,应该说这个TTL一开始不是1的吧?
#5
??
#6
我也好想看这本书哎,可不可以送给我啊?
#7
IPPROTO_UDP这些都是define在winsock2.h里面的,你到里面看看啊,其实就是int
#8
有没有电子版啊,我也想要.
#9
1。两种定义的socket是不同的。第一种定义时定义了一个DGRAM的socket,这种socket遵守UDP协议,但是协议实现的细节不用你来关心,内核帮你完成这部分工作,包括发送时添加UDP头、添加IP头,接收时分离IP头、分离UDP头。也就是说,这种socket你唯一能控制的是它的数据——它将“严格”遵守UDP协议。而第二种socket截然不同。它是原始套接字,它接收到的数据中将包括IP头与UDP头,你必须自己解析,发送时你必须自己构造UDP头(甚至自己构造IP头)。内核不会对接收到和将要发送的数据(事实上,发送时的IP头有可能被更改)做任何处理。至于第二个参数PROTO_UDP只是给内核一个通知,告诉它我只关心IP头中协议为PROTO_UDP的数据报,其他的数据报不要给我。你在发送时即使发送一个TCP的报头也无所谓。所以PROTO_UDP只是一个接收类型“通知”,而实际发送的数据不一定就要“严格”遵守UDP协议。
2。TTL就是Time To Live,其实就表明了报文“存活”的时间。报文每经过一个路由器,路由器就会将TTL值减一,如果TTL值为0,路由器就将该报丢弃,并给发送端回送一个TIME EXCEEDED的ICMP报文(不过有些路由器只是丢弃该报,却并不会送ICMP,这种路由器TRACERT无法跟踪)。因此,TRACERT首先发送一个TTL为1的报文,于是会得到第一个路由器会送的ICMP,TRACERT再发送一个TTL为2的报文,就会得到第二个路由器的ICMP,以此类推,直至收到目的IP回送的ICMP报文为止。现在假设源IP与目的IP之间需要经过10个路由器,那么如果TTL设为8,IP报将无法到达目的地。Windows使用的缺省TTL(Ieexplorer、telnet等)好像是32?记不清了。ping可以指定TTL值。
可能有些我记得不够准确,去查书吧。
2。TTL就是Time To Live,其实就表明了报文“存活”的时间。报文每经过一个路由器,路由器就会将TTL值减一,如果TTL值为0,路由器就将该报丢弃,并给发送端回送一个TIME EXCEEDED的ICMP报文(不过有些路由器只是丢弃该报,却并不会送ICMP,这种路由器TRACERT无法跟踪)。因此,TRACERT首先发送一个TTL为1的报文,于是会得到第一个路由器会送的ICMP,TRACERT再发送一个TTL为2的报文,就会得到第二个路由器的ICMP,以此类推,直至收到目的IP回送的ICMP报文为止。现在假设源IP与目的IP之间需要经过10个路由器,那么如果TTL设为8,IP报将无法到达目的地。Windows使用的缺省TTL(Ieexplorer、telnet等)好像是32?记不清了。ping可以指定TTL值。
可能有些我记得不够准确,去查书吧。
#10
按照我的理解:原始套接字的意思应该是说发送数据是需要或可以自己构造IP头、UDP头等这些协议头,非原始套接字则-----不用也不能-----自己构造这些“头”,只是控制数据包的数据部分???可以这样理解吗?
========TO:111222(哇哈哈哈哈~动感超人~娃哈哈哈哈)
我这本书是前几天去广州出差的时候到广州购书中心4楼天顶书店买的,不知道现在还有没有?
:))应该还有的。。。。
========TO:111222(哇哈哈哈哈~动感超人~娃哈哈哈哈)
我这本书是前几天去广州出差的时候到广州购书中心4楼天顶书店买的,不知道现在还有没有?
:))应该还有的。。。。
#11
可以。