TCP/IP Illustrated 读书笔记

疑问和笔记

ch4

4.5节 p. 60 par. 2 这两处提到的TCP timeout的几个时间:5s, 24s和75s和Linux下的实现完全不同。Linux下的这几个时间非常短,具体在哪里定义?/proc/sys/net/ipv4?习题未做。ch5

ch6ch7ch8习题都没做。ch7

p. 93 We can watch the exchange of packets from the host sun. 这里从sun可以抓到svr4与slip之间传输的包,说明这个子网是由集线器连接的。

p.95 par. 2 Section 9.5

ch8

p107 par-2 The reason that both TTLs 2...没理解。习题没做。

ch17

p226 p3 s1 没看懂句子结构;倒数第2段不懂。习题没做。

ch18

p232 par-2 The purpose in these sequence numbers is to prevent packets that get delayed in the network from being delivered later and then misinterpreted as part of an existing connection. 不懂。

18.2节演示了一个最简的TCP连接的建立和断开,总共要7个包(握手3个,断开4个)。可是我用discard和echo服务试验的时候,断开也只有3个包,和握手很类似。为什么服务端把客户端的FIN ACK和自己的FIN请求包合了呢?是不是在TCP Delayed Acknoledgement的时间之内的原因?

18.4 Maximum Segment Size

MSS和2.8节的MTU都是指协议可以承载的payload的大小,不包括Ethernet Frame的报头、尾,或者TCP的header。虽然说segment的时候,是指包括TCP header的完整的TCP报文,但是MSS里面的Segment,却只包括data。RFC 879, Section 3。

18.6 TCP State Transition Diagram

p242 2MSL Wait State 本段阐述的细节在Linux 2.6.38-8-generic下用netcat-openbsd 1.89-3验证,结果很不相同。Linux下不会存在244页开头的例程结果,即使server的端口还处于TIME-WAIT状态,还可以立刻再次开这个端口的服务。-A选项的效果也没有。245页最后的例程也不会发生,该socket仍然无法创建,大抵是主动打开开启连接方(客户端)的端口如果还处在TIME-WAIT状态,那么你再次用这个端口来主动开启连接是不允许的。

习题没做。

ch19

19.3 Delayed Acknowledgements /proc/sys/net/ipv4下可以调整这个变量吗?我觉得小一点网络反应会更迅速。

p270 Nagle Algorithm : An Example 没看。

习题没做。

Errata

部分习题作答

ch 1

1.1 题目中提到的是RFC 1122,而最早提到这个原则的是RFC 761。见维基百科

1.2 IANA的Port numbers分配。Quote of the day协议的端口是17。

ch 3

3.5 RFC 950, Internet Standard Subnetting Procedure.