(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則是接收方使用的流量控制