(1)TCP中的SYN,FIN,ACK是否占用序列号?
SYN: 占用一个序列号
FIN: 占用一个序列号
ACK: 不占用序列号
(2)mss和窗口大小都是发送端用来通知接收端的
mss选项通常在通信的第一个报文段,即SYN报文段中指明,通知对端本端能接收的最大长度报文段
mss 1024
发送端A -----------------------> 接收端B
如果此时接收端B向发送端A发送的报文段长度大于1024,那么发送端A将不接受此报文段;
win 4096
发送端A ------------------------> 接收端B
此时发送端A通知接收端B,此端还能接收4096个字节的数据
(3)收到一个FIN只是意味着这个方向上没有数据流动,即本端不能接收到数据了,但是还能发送数据。
(4)主动打开/被动打开,主动关闭/被动关闭
发送第一个SYN的一端执行主动打开,对端为被动打开;
发送第一个FIN的一端执行主动关闭,对端为被动关闭
(5)一个进程可以重新使用仍然处于2MSL等待的端口(设置套接字选项SO_REUSEADDR),但是TCP不允许一个新的连接建立在相同的套接字对上
关于2MSL的相关内容可参考TCP/IP卷1,第18章
(6)ACK的传输并不可靠,TCP不对ACK报文段进行确认,TCP只确认那些包含有数据的ACK报文段
(7)拥塞窗口cwnd是发送方使用的流量控制,而通告窗口win则是接收方使用的流量控制