TCP和UDP的那些事兒

2021-09-10 09:16:07 字數 723 閱讀 6664

下面我們將根據這些問題,做一些簡單的解釋:

應用

同樣的我們來解剖一下tcp看一下它的首部:

可靠性保證

你可能會有這樣的疑問,握手為什麼非得三次,如果說因為tcp是全雙工的,需要雙方先自報家門,兩次完全就夠了,

為什麼最後還要再經過客戶端的一次確認,這不是多餘的嗎?這樣的疑問不是沒有道理,我們先來看乙個場景:

如果路由器在**客戶端的第一次請求的資料報的時候,選擇了一條比較長的網路路徑,資料報並沒有及時傳給伺服器。一段時間後(小於資料報的存活時間)客戶端收不到來自於伺服器的回應,於是重傳了一次資料報,這次傳送的資料報及時送給伺服器,相應的客戶端也及時收到了來自於伺服器的回應。這個時候客戶端第一次傳送的資料報經歷重重險阻終於到達了伺服器,伺服器以為客戶端又發起了乙個建立連線的請求,於是給客戶端乙個回應。由於客戶端此前已經收到了此次回應,所以對伺服器剛剛的回應不予理睬,伺服器以為客戶端沒有收到自己的回應於是重傳。。。。。這種情況將導致伺服器的資源被長期占用這不是我們所樂意看到的。而三次握手則很好的避免了這種情況的發生。

為什麼資料報分片的重任交給了網路層?

TCP的那些事兒

傳送方 client 接收方 server tcp三次握手是建立連線的過程。第一次握手 client問server 你在嗎?第二次握手 server回應client 我在!第三次握手 client告訴server 東西給你!為什麼三次握手就夠了?第一次握手如果成功,server就知道自己可以收到cl...

TCP的那些事兒(2)

tcp要保證所有的資料報都到達,就必須要採取重傳機制,注意 接收端給傳送端的ack只能確定最大連續的包,比如,傳送端傳送了1,2,3,4,5個資料報,但是接收端只收到了1,2,所以ack 3,然後收到了4 這時候3還沒有收到 此時的tcp會怎麼辦呢?正如前面所說的,sequence number都是...

和 的那些事兒

和 都可以用作邏輯與的運算子,表示邏輯與 and 當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。還具有短路的功能,即如果第乙個表示式為false,則不再計算第二個表示式,例如,對於if str null str.equals 表...