問:從客戶端向服務端傳送三個包,在
tcp和
udp協議的情況下,服務端最終會收到幾個包? 答:
網路結構圖如下所示:
、使用udp
協議:(1)
在過程(
1)中,
client
向buffer
發包時,
buffer
會立即返回成功。如果
client
向buffer
發包的速度過快,雖然
buffer
立即返回了成功,但
buffer
可能因為空間已滿,將包丟掉,而不傳送到網路上。
(2)在過程(
2)中,需要考慮
mtu的大小。如果
udp的包大於
mtu大小,則可能會被完全丟掉,也可能被分拆成多個包。如果被分拆,到過程(
3)時,會被重新組成三個包;網路傳輸過程中,可能會丟包。
(3)如果udp
包設定了禁止分片的
df標誌位,當
udp包大於
mtu大小時,會被直接丟掉。
(4)udp沒有重傳機制,網路過程中丟掉的包,就再也找不回來了。
(5)過程(4
),從buffer
到服務端,如果接收的資料來得過快,接收
buffer
也可能丟掉部分包。
(6)udp基於資料報的方式進行傳輸。如果傳送、網路傳輸、接收過程都不丟包,雖然網路傳輸過程中可能被分包,拆成多個包,但服務端收到的時侯,一定還是三個包。
(7)基於udp
傳輸時,服務端可能收到
0 <= x <= 3
個包。可能為
0,但不會大於3。
2 使用
tcp協議:
(1)過程(1
)不會丟包。
(2)過程(4
)不會丟包。
(3)過程(2
)中,考慮
mtu的大小,如果
tcp包小於
mtu,則有可能多個包組成乙個包進行傳輸,如果
tcp包大於
mtu大小,會自動分片,被拆成幾個包。
(4)tcp基於流的方式進行傳輸。到過程(
4)時,分片或組合後的包不會還原成原來的三個包。
(5)基於tcp
傳輸時,
0 < x
,即一定能收到包,資料也一定能收全。
(6)當出現組包(
tcp包
< mtu
)時,x < 3。
(7)當出現分片(
tcp包
> mtu
)時,x > 3。
(8)與
mtu相等時,
x = 3。
一道面試題
一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...
一道面試題
前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...
一道面試題
如果n為偶數,則將它除以2,如果n為奇數,則將它加1或者減1。問對於乙個給定的n,怎樣才能用最少的步驟將它變到1。例如 n 61 n 60 n 2 30 n 2 15 n 16 n 2 8 n 2 4 n 2 2 n 2 1 public class myclass public static vo...