python網路編程三向交握和四次揮手

來源:互聯網
上載者:User

標籤:返回   開啟   描述符   描述   四次揮手   分享圖片   ima   情況下   函數   

TCP是網際網路中的傳輸層協議,使用三向交握協議建立串連。當主動方發出SYN串連請求後,等待對方回答SYN+ACK[1],並最終對對方的 SYN 執行 ACK 確認。這種建立串連的方法可以防止產生錯誤的串連。[1]TCP三向交握的過程如下:用戶端發送SYN(SEQ=x)報文給伺服器端,進入SYN_SEND狀態。伺服器端收到SYN報文,回應一個SYN (SEQ=y)ACK(ACK=x+1)報文,進入SYN_RECV狀態。用戶端收到伺服器端的SYN報文,回應一個ACK(ACK=y+1)報文,進入Established狀態。三向交握完成,TCP用戶端和伺服器端成功地建立串連,可以開始傳輸資料了。 tcp的三向交握

  

建立一個串連需要三向交握,而終止一個串連要經過四次握手,這是由TCP的半關閉(half-close)造成的。(1) 某個應用進程首先調用close,稱該端執行“主動關閉”(active close)。該端的TCP於是發送一個FIN分節,表示資料發送完畢。(2) 接收到這個FIN的對端執行 “被動關閉”(passive close),這個FIN由TCP確認。注意:FIN的接收也作為一個檔案結束符(end-of-file)傳遞給接收端應用進程,放在已排隊等候該應用進程接收的任何其他資料之後,因為,FIN的接收意味著接收端應用進程在相應串連上再無額外資料可接收。(3) 一段時間後,接收到這個檔案結束符的應用進程將調用close關閉它的通訊端。這導致它的TCP也發送一個FIN。(4) 接收這個最終FIN的原發送端TCP(即執行主動關閉的那一端)確認這個FIN。[1]既然每個方向都需要一個FIN和一個ACK,因此通常需要4個分節。注意:(1) “通常”是指,某些情況下,步驟1的FIN隨資料一起發送,另外,步驟2和步驟3發送的分節都出自執行被動關閉那一端,有可能被合并成一個分節。[2](2) 在步驟2與步驟3之間,從執行被動關閉一端到執行主動關閉一端流動資料是可能的,這稱為“半關閉”(half-close)。(3) 當一個Unix進程無論自願地(調用exit或從main函數返回)還是非自願地(收到一個終止本進程的訊號)終止時,所有開啟的描述符都被關閉,這也導致仍然開啟的任何TCP串連上也發出一個FIN。無論是客戶還是伺服器,任何一端都可以執行主動關閉。通常情況是,客戶執行主動關閉,但是某些協議,例如,HTTP/1.0卻由伺服器執行主動關閉。[2] tcp的四次揮手

  

python網路編程三向交握和四次揮手

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.