網上有非常多文章講tcp為什麼建立連線時須要三次握手,關閉連線時須要四次握手。講了非常多原理。反而讓非常多人難以理解。
事實上僅僅有一句話:tcp連線是兩個端點之間的事。因為tcp連線是可靠連線,所以無論是建立連線還是關閉連線,須要兩個端點都要傳送請求和收到確認
其次要理解tcp的通道是全雙工的。是能夠讀和寫資料的,理解這個之後就明確了為什麼關閉連線時須要四次握手。
首先講三次握手。建立連線時不涉及到讀寫通道,僅僅是兩個端點的請求和確認。要記住是兩個端點之間的,兩個端點是平等的關係。
從client的角度來說,它僅僅須要傳送乙個請求syn,然後收到ack就能知道連線是能夠建立的
從server端的角度。它也僅僅須要傳送乙個請求syn,然後收到ack就能知道連線是能夠建立的
所以建立連線時最少僅僅須要三次握手就可以,即server端收到clientsyn,之後向client傳送ack的同一時候攜帶上自己的syn。這樣就僅僅須要三次握手就能使兩方都發生syn和都收到ack.
當然你自己設計的時候也能夠使用4次或者很多其它的握手,可是最少3次就可以
關閉連線時也還是兩個端點都要傳送請求和收到確認。可是關閉連線時涉及到兩個端點的讀寫通道的事。
從client的角度來說,它傳送乙個關閉請求fin,然後收到ack就知道能夠關閉連線的
從server的角度來說。它傳送乙個關閉請求fin,然後收到ack就知道能夠關閉連線的
可是因為是讀和寫信道,所以server端在收到client的關閉fin時,可能還在往client傳送訊息,所以僅僅能先傳送ack確認client客戶關閉寫信道,這時候服務端不能使用通過一訊息傳送它的關閉fin。僅僅能過會等它自己寫完了,才幹又一次傳送乙個關閉請求的fin。
所以比建立連線時多了一次握手,關閉連線時最少須要4次握手。理解了為什麼須要4次握手之後。就不難理解tcp半關閉的概念。
TCP三次握手和四次握手最直接的理解
網上有很多文章講tcp為什麼建立連線時需要三次握手,關閉連線時需要四次握手,講了很多原理,反而讓很多人難以理解。其實只有一句話 tcp連線是兩個端點之間的事,由於tcp連線是可靠連線,所以不管是建立連線還是關閉連線,需要兩個端點都要傳送請求和收到確認 其次要理解tcp的通道是全雙工的,是可以讀和寫資...
tcp三次握手和四次握手
建立tcp需要三次握手才能建立,而斷開連線則需要四次握手。整個過程如下圖所示 先來看看如何建立連線的。首先client端傳送連線請求報文,server段接受連線後回覆ack報文,並為這次連線分配資源。client端接收到ack報文後也向server段發生ack報文,並分配資源,這樣tcp連線就建立了...
TCP三次握手和四次握手
ip 網路層 不穩定性。硬體聯絡緊密 傳輸層 1.完全不彌補 udp 無連線不可靠報文傳輸 2.完全彌補 tcp 面向連線的可靠資料報傳遞 tcp傳送資料就包含了tcp三次握手建立連線和關閉連線的四次握手 建立連線用syn傳送,用ack應答 所謂三次握手就是客戶端與伺服器之間的三次應答。伺服器是一直...