Networking‎ > ‎

TCP/IP Illustrated 读书笔记






疑问和笔记

ch4

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

ch5

ch6
ch7
ch8

习题都没做。

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

章节
位置
 原文 更正及理由
类型及备注
1.4
p. 8
IP地址的netid
图中指示出A类、B类、C类IP地址的netid分别是7位、14位和21位。而在3.4节 p. 42中,又有图示B类地址的netid是16位。前述图是说各类IP地址netid可变的位数,而不是netid全部的位数,全部的netid分别是8位、16位和24位。所以这幅图应当更正。
概念前后不一致

3.2p.34IP的8个TOS位在后来的RFC 2474中更新了Differentiated Services Field,在RFC 3168中更新了Explicit Congestion Notification,在RFC 3260中又进行了正名需要更新
3.2p. 36
par. 3
Even though the minimum Ethernet frame size is 46 bytes (Figure 2.1). 这个46不是frame size,而是payload size。应改为Even though the minimum data size of Ethernet frame is 46 bytes. 概念前后不一致
3.3
p. 40
par. 4
gateway ... its default routing table entry specifies 140.252.104.2 as the next-hop router.
根据扉页的图,这里应当是140.252.104.1. 下页的图中也错了。
笔误
4.2
p. 54
par. -1
The ARP request contains the IP address of the destination host (whose name is bsdi)
这里按照目标和本机在一个网络内,而没有说明不在一个网络内的情况。应该加上说明:Here we assume bsdi is on the same locally attached network. Otherwise, the ARP request contains the IP address of the next-hop router.
需要说明
5.3
p. 66
par. 3
最后一句:Had we been running tcpdump on another system, the length would have been 60.
bsdi和sun之间通信,其它主机上用tcpdump是抓不到包的。这里应该说清楚什么情况下可以看到60字节的以太网包。
需要说明
6.2
p. 71
Figure 6.3 ICMP Message types
最新的types由IANA维护,比这个表要多多了。
需要更新










17.2
p. 224
par3
This is totally different from UDP, where each write by the application generates a UDP datagram of that size. 后面多处还出现这种用法。
该句中write用法错误,write只能作为动词使用。在多个 词典的释义中均没有动词。应改为writing。
语法错误
17.3p. 225
TCP flags没有CWR和ECE。
RFC 3168
需要更新
18.2 p. 233
par. 4
A TCP can still send data after receiving a FIN.
A TCP这种说法不好。应该改为One end can still send data after receiving a FIN.
遣词不妥
18.2 p. 233
par. 2
...whereas the ACKs of thees FINs are automatically generated by the TCP software.
此处用software不妥。可以改为...whereas the ACKs of thees FINs are automatically generated by the TCP code.
遣词不妥





部分习题作答

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.
Comments