TCP握手協議
在TCP/IP協議中,TCP協議提供可靠的連接服務,採用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
SYN:同步序列編號(SynchronizeSequenceNumbers)
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,客戶端與伺服器開始傳送數據,在上述過程中,還有一些重要的概念:
未連接隊列:在三次握手協議中,伺服器維護一個未連接隊列,該隊列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明伺服器已收到SYN包,並向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連接在伺服器處於Syn_RECV狀態,當伺服器收到客戶的確認包時,刪除該條目,伺服器進入ESTABLISHED狀態。
Backlog參數:表示未連接隊列的最大容納數目。
SYN-ACK重傳次數伺服器發送完SYN-ACK包,如果未收到客戶確認包,伺服器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連接信息從半連接隊列中刪除。注意,每次重傳等待的時間不一定相同。
半連接存活時間:是指半連接隊列的條目存活的最長時間,也即服務從收到SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。有時我們也稱半連接存活時間為Timeout時間、SYN_RECV存活時間。
B. 一文搞定 UDP 和 TCP 高頻面試題!
在求職面試中,UDP和TCP是常被問到的計算機網路概念。無論春招秋招,面試官幾乎都會涉及這些問題,尤其在作者參加的50場面試中,幾乎每輪都有涉及。了解這些問題不僅能提升面試自信,還能給面試官留下深刻印象。本文將總結常見的面試問題,幫助你應對相關知識點。
- UDP和TCP特點:UDP是無連接、盡力而為、不保證順序,支持多對多通信,而TCP是面向連接、可靠傳輸、有流量控制和擁塞控制,一對一通信。
- 首部格式:UDP只有8位元組,包括源埠、目的埠等;TCP首部復雜,包含序號、確認號、窗口值等控制位,用於保證數據完整性和可靠性。
- 三次握手:TCP建立連接,防止連接請求失效,確認雙方接收和發送能力正常。
- 四次揮手:關閉連接,確保數據傳輸完成,服務端等待所有數據發送完再發送FIN,客戶端等待伺服器確認關閉。
- 短連接與長連接:短連接是一次操作就斷開,長連接可多次數據交換,管理復雜但可復用連接。
- 粘包和拆包:TCP基於位元組流,可能導致數據包重組,需要通過應用層協議處理。
- 可靠傳輸與流量控制:TCP通過超時重傳和滑動窗口機制確保數據完整,流量控制防止接收方過載。
掌握這些核心知識點,面試時就能從容應對,展現你的專業知識。最後,不要忘了實踐和復習,讓知識真正運用到實際中。
C. 什麼是tcp以及tcp與udp的區別
UDP
UDP是面向無連接的通訊協議,UDP數據包含目的埠號和源埠號信息。主要優點速度快、操作簡單、要求系統資源較少,由於通訊不需要連接,可以實現廣播發送;缺點是傳輸數據前並不與對方建立連接,對接收到的數據也不發送確認信號,發送端不知道數據是否會正確接收,也不重復發送,不可靠。
TCP
是面向連接的通訊協議,通過三次握手建立連接,通訊完成時四次握手,主要優點是TCP在數據傳輸時,有確認、窗口、重傳、阻塞等控制機制,能保證數據正確性,較為可靠;缺點是相對於UDP速度慢,要求系統資源較多。
TCP和UDP區別:
TCP是面向連接的協議,而UDP是無連接的協議,意味著當一個客戶端和一個服務端通過TCP發送數據前,必須先建立連接,建立連接的過程被稱為TCP三次握手;
TCP提供交付保證,意味著一個使用TCP協議發送的信息是保證交付給客戶端的,如果消息在傳輸過程中丟失,將重發;UDP是不可靠的,不提供任何交付的保證,一個數據報包在運輸過程中可能會丟失;
消息到達網路的另一端時可能是無序的,TCP協議將會為你排序,UDP不提供任何有序性的保證;
TCP速度比較慢,而UDP速度比較快,因為TCP必須建立連接,以保證消息的可靠交付和有序性,需要做比UDP多的事;
TCP是重量級的協議,UDP協議則是輕量級的協議。一個TCP數據報的報頭大小最少是20個位元組,UDP數據報的報頭固定是8個位元組。TCP報頭中包含序列號,ACK號,數據偏移量,保留,控制位,窗口,緊急指針,可選項,填充項,校驗位,源埠和目的埠。