TCP/UDP相关知识
三次握手: ??
??? 為了方便描述我們將主動發起請求的172.16.50.72:65076 主機稱為客戶端,將返回數據的主機172.16.17.94:8080稱為服務器。
??? 第一次握手: 建立連接。客戶端發送連接請求,發送SYN報文,將seq設置為0。然后,客戶端進入SYN_SEND狀態,等待服務器的確認。
??? 第二次握手: 服務器收到客戶端的SYN報文段。需要對這個SYN報文段進行確認,發送ACK報文,將ack設置為1。同時,自己還要發送SYN請求信息,將seq為0。服務器端將上述所有信息一并發送給客戶端,此時服務器進入SYN_RECV狀態。
??? 第三次握手: 客戶端收到服務器的ACK和SYN報文后,進行確認,然后將ack設置為1,seq設置為1,向服務器發送ACK報文段,這個報文段發送完畢以后,客戶端和服務器端都進入ESTABLISHED狀態,完成TCP三次握手。
四次揮手是這樣的:
??? 第一次揮手:客戶端向服務器發送一個FIN報文段,將設置seq為160和ack為112,;此時,客戶端進入 FIN_WAIT_1狀態,這表示客戶端沒有數據要發送服務器了,請求關閉連接;
??? 第二次揮手:服務器收到了客戶端發送的FIN報文段,向客戶端回一個ACK報文段,ack設置為1,seq設置為112;服務器進入了CLOSE_WAIT狀態,客戶端收到服務器返回的ACK報文后,進入FIN_WAIT_2狀態;
??? 第三次揮手:服務器會觀察自己是否還有數據沒有發送給客戶端,如果有,先把數據發送給客戶端,再發送FIN報文;如果沒有,那么服務器直接發送FIN報文給客戶端。請求關閉連接,同時服務器進入LAST_ACK狀態;
??? 第四次揮手:客戶端收到服務器發送的FIN報文段,向服務器發送ACK報文段,將seq設置為161,將ack設置為113,然后客戶端進入TIME_WAIT狀態;服務器收到客戶端的ACK報文段以后,就關閉連接;此時,客戶端等待2MSL后依然沒有收到回復,則證明Server端已正常關閉,客戶端也可以關閉連接了。
??? TCP與UDP的區別:
??? 1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
??? 2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保 證可靠交付
??? 3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的
??? 例,TCP連接就像是打電話,兩者之間必須有一條不間斷的通路,數據不到達對方,對方就一直在等待,除非對方直接掛斷電話。先說的話先到,后說的后到,有順序。
??? 4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
??? 5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
??? 6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道
?
總結
以上是生活随笔為你收集整理的TCP/UDP相关知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LTE网络架构
- 下一篇: oracle imdmp方式导入dmp文