《tcp/ip详解 卷一:协议》第七章 习题7.3有a,b俩主机,以9600b/s的slip链路连接,现在在a上ping b,假定默认的icmp数据部分为56个Byte。在ping的时候给icmp报文的数据部分指定一种模式,且数据部分的前8个字节不用来存放模式,因为它要存放发送报文的时间。假设我们指定的模式的值为0xc0,请计算该ping的RTT。
答案是这样的:20字节的ip首部(书中是ipv4)+8字节的icmp首部+56字节的数据+slip链路的头尾俩个end字节=86字节,
(86+48)/960 *2 = 279.2ms。另外的48字节是因为56字节的数据部分的最后48字节必须忽略:0xc0是slip的end字符。
而我是这样想的:在slip链路层对该ip数据报进行封装的时候,如果遇到0xc0,不是会自动将其转换成俩个字节:0xdb+0xbc的么?(见《tcp/ip详解 卷一:协议》p17),那结果不应该是: (86+1)/960 * 2么?为什么答案说要将后面的48字节忽略呢? 还有,忽略了为什么又要在86字节接触上再加48呢?不懂谢谢大家,刚学,希望能解释的详细点,谢谢!先给50,解决了继续加

解决方案 »

  1.   

    你的想法有一些小纰漏,我说一下意见,欢迎指正:icmp数据部分为56个Byte,前8个字节被用来放置时间,那么还剩下56-8 = 48个字节用于存放数据.
    题目中:“指定一种模式……指定的模式的值为0xc0”,这里“指定”的意思就是上面提到的48个字节全部填充0xc0,这样每一个数据区字节现在被slip协议换为2个,就是答案中提到的+48的含义了。欢迎讨论!