TCP之C/S模型之三次握手四次揮手


0.瞭解兩種開發模型


C/S模型
client/server<------->客戶端/服務器:QQ、微信
重心在客戶端和服務器上,用戶羣固定,安全係數高。
有連接的過程:建立連接---->使用連接----->釋放連接 (類似於電話)
tcp抽象和原理
B/S模型
browser/server<---------->瀏覽器/服務器:webQQ、移動開發
重心在服務器上,用戶羣體不固定,安全係數不高。
不需要建立連接:(類似於郵件)
tcp抽象


1.瞭解TCP和UDP協議


UDP:用戶數據報協議
TCP:傳輸控制協議
共同點:
TCP和UDP都是傳輸層協議,進程與進程間的通信。
不同點:
TCP協議是面向連接(前面提到的C/S模型),可靠的,有序號和確認序號,排序檢錯,失敗重傳,不支持廣播的傳輸層協議。
UDP協議是面向無連接,不可靠,不排序,不檢錯,不重傳, 支持廣播的傳輸層協議。

進入正題…


2.三次握手四次揮手


TCP原理圖及函數
以上函數的實現將在下一篇文章中具體講解。
我們可以看到C/S架構在建立連接時三次握手,所以四次揮手肯定實在釋放連接時。
三次握手
在介紹兩種開發模型的TCP原理圖中可以看到SYN(連接請求)、ACK(迴應)。(重點)
1.客戶端應用層調用connect函數,底層向服務器發送SYN請求。
2.服務器收到客戶端的SYN請求,底層立即回覆一個ACK報文和一個SYN請求報文。(ACK報文表示服務器響應連接,SYN報文表示服務器向客戶端發送連接請求)
3.客戶端收到服務器的ACK和SYN報文後,知道服務器的連接請求,底層回覆ACK報文,連接成功。
注意:前兩次握手都沒有連接,當3執行完成,連接成功。
四次揮手
同樣有FIN(關閉請求)。(重點)
1.客戶端應用層調用close函數,底層發送FIN請求。同時客戶端處於半關閉狀態。
2.服務器收到客戶端的FIN請求,底層發送ACK報文,同時應用層的recv函數收到0長度的數據報,應用層程序中的close被調用。
3.服務器close函數調用,底層發送FIN請求,同時服務器處於半關閉狀態。
4.客戶端收到服務器的FIN請求,底層回覆ACK報文。
注意:這裏的2和3是存在時間上的差距,不可能同時發送,所以是四次揮手。

udp的原理圖及函數(瞭解)
UDP原理圖及函數
關注我,帶你走進奇妙的計算機世界。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章