1. 程式人生 > >tcp/ip 同時開啟 同時關閉

tcp/ip 同時開啟 同時關閉

兩個應用程式同時執行主動開啟的情況是可能的,雖然發生的可能性較低。每一端都發送一個SYN,並傳遞給對方,且每一端都使用對端所知的埠作為本地埠。例如:

主機a中一應用程式使用7777作為本地埠,並連線到主機b 8888埠做主動開啟。

主機b中一應用程式使用8888作為本地埠,並連線到主機a 7777埠做主動開啟。

tcp協議在遇到這種情況時,只會開啟一條連線。

這個連線的建立過程需要4次資料交換,而一個典型的連線建立只需要3次交換(即3次握手)

但多數伯克利版的tcp/ip實現並不支援同時開啟。

如果應用程式同時傳送FIN,則在傳送後會首先進入FIN_WAIT_1狀態。在收到對端的FIN後,回覆一個ACK,會進入CLOSING狀態。在收到對端的ACK後,進入TIME_WAIT狀態。這種情況稱為同時關閉。

同時關閉也需要有4次報文交換,與典型的關閉相同。