面試的時候,因爲自己的簡歷個人技能上有一條“瞭解Tcp/Ip及一些常見的網絡協議”
當然,當時回答的不是很理想。現在對其做以總結,以防以後再被問起。
1.TCP和UDP的區別
TCP | UDP |
---|---|
面向連接的 | 無連接的 |
可靠的 | 不可靠的的 |
字節流 | 報文 |
面向連接的 | 無連接的 |
傳輸效率低 | 傳輸效率高 |
全雙工的 | 一對一,一對多,多對一,多對多 |
2.TCP的三次握手和四次揮手
學習參考來自:一文讀懂TCP/IP
三次握手:
圖示:
第一次握手:
建立連接,客戶端發送請求報文,標記位爲syn,並將syn值置爲1;還有一個表示數據包的seq(數據包序號),值置爲x,客戶端進入SYN_SENT狀態。【整體就是 SYN seq = x 】
第二次握手:
服務器收到客戶端的SYN報文段,確認之後。設置ack(值爲x+1),並且需要設置自己的syn,值爲1;seq值爲y。【整體就是個SYN seq = y, ack = x+1】,然後服務器端進入SYN_RECV狀態。
第三次握手:
客戶端收到來自服務器的SYN+ACK後,給返回一個確認消息,即ACK=y+1;發出之後客戶端進入ESTABLISHED狀態,服務器收到確認消息後也進入了ESTABLISHED狀態。
四次揮手:
圖示:
第一次揮手:
客戶端發起,向服務器發送一個FIN報文,然後進入FIN_WAIT_1的狀態。
第二次揮手:服務器收到FIN報文段後,回覆一個ACK,然後進入CLOSE_WAIT狀態。
第三次揮手:服務器向客戶點發送FIN報文段,請求關閉連接,然後服務器進入LAST_ACK狀態。
第四次揮手:
客戶端收到服務端發送的 FIN 報文段後,向服務端發送 ACK 報文段,然後客戶端進入 TIME_WAIT 狀態。服務端收到客戶端的 ACK 報文段以後,關閉連接。此時,客戶端等待 2MSL(指一個片段在網絡中最大的存活時間)後依然沒有收到回覆,則說明服務端已經正常關閉,這樣客戶端就可以關閉連接了。
部分參考原文鏈接:https://blog.csdn.net/petterp/article/details/102779131