C 必知必會複習(九)

2021-08-19 22:25:50 字數 2245 閱讀 9398

(1)tcp面向連線(如打**要先接號建立連線),而udp是無連線的,即傳送資料之前不需要建立連線。

(2)tcp提供可靠的服務。也就是說,通過tcp連線傳遞的資料,無差錯,不丟失,不重複,且按序到達。udp盡最大努力交付,即不保證可靠交付。

(4)每一條tcp連線只能是點到點的;udp支援一對一,一對多,多對多的互動通訊。

(5)tcp首部開銷20位元組;udp的首部開銷小,只有8位元組。

(6)tcp邏輯通道是全雙工的可靠通道,udp則是不靠通道。

——使用場合:很難給出乙個明確界限區分兩者的使用場景,基本上需要可靠性但自己又不想維護可靠性時,使用tcp;

隧道技術(移動網核心技術(gn、gb、lv)),對時延和抖動敏感的應用使用udp。

tcp/udp總結

tcp傳輸過程(二人傳球)

a:我要傳球了,你準備好了嗎?         a:傳完了

b:準備好了                                        b:我也接收完了          

c:開始傳一號                                    a:88

d:收到                                              b:88

e:二號球

f:收到

udp傳輸過程(閉著眼往乙個框裡扔球) 1號球,2號球,3號球

udp 閉著眼往乙個框裡扔球  1號球,2號球,3號球

即使2號沒進去,也不管了,繼續扔 4號球

:格式由首部和資料兩個部分。首部很簡單,8個位元組。

—源埠(source port):2位元組,源埠

—目的埠(destination port):2位元組,目的埠

—長度(length):2位元組,用於校驗udp資料報的數字段和包含udp資料報首部的「偽首部」。其校驗方法同ip分組首部中的首部校驗和。

udp使用者資料報的格式和偽首部

乙太網資料幀長度被限制在46-1500位元組之間,這是由乙太網的物理特性決定的。這個1500位元組被稱為鏈路層的mtu(最大傳輸單元)。但這不是指鏈路層的長度被限制在1500位元組,其實這個mtu指的是鏈路層的資料區,並不包括鏈路層的首部和尾部18個位元組。所以,1500位元組就是網路層ip資料報的長度限制。

因為ip資料段的首部為20位元組,所以ip資料區的長度最大為1480位元組。而這1480位元組用來存放tcp傳來的tcp報文段或udp資料段。又因為udp資料報的首部8位元組,所以udp資料報的資料區最大長度為1472位元組。

拓展:當傳送udp資料大於1472的時候會怎麼樣?

當ip資料報大於1500位元組,大於mtu,這時候傳送方ip層就需要分片,把資料報分成若干片,使每一片小於mtu(1500),接收方ip層需要資料重組。

(1)確認和重傳:接收方收到報文就會確認,傳送方傳送一段時間後,沒有收到確認就重傳(三次握手,四次揮手)

(2)資料校驗

(3)資料合理分片和排序

udp:ip資料報文大於1500位元組,大於mtu,這個時候傳送方ip層就需要分片,把資料分片若干片,使每一片都小於mtu,而接收方ip層,則需要進行資料報的重組。這樣就會多做許多事情,而嚴重的是,由於udp的特性,當某一片資料,傳遞丟失時,接收方便無法重組資料報,將導致丟棄整個udp資料報。

tcp:會按mtu合理分片,接收方會儲存來按順序到達資料,重新排序後再交給應用層。

(4)流量控制:當接收方來不及處理傳送方的資料,能提示降低傳送的速率,防止包丟棄。

(5)擁塞控制:當網路擁塞時,減少資料的傳送。

流量控制:指點對點通訊量的控制,是端到端的問題。流量控制所要做到的就是抑制傳送端傳送資料的速率。

擁塞控制:防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不至於過載。(代價:產生額外開銷,需要獲得網路內部分布的資訊)

使用tcp套接字程式設計,實現tcp/ip協議的面向連線的通訊。

C 必知必會複習(八)

區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數,而那個區域性變數的作用域就在那個迴圈體內。可以引用標頭檔案,或extern關鍵字。可以,但...

C 必知必會

條款2 多型 2 條款3 設計模式 5 條款4 stl 8 條款5 引用是別名而非指標 10 條款6 陣列形參 13 條款7 常量指標與指向常量的指標 16 條款8 指向指標的指標 19 條款9 新式轉型操作符 21 條款10 常量成員函式的含義 25 條款11 編譯器會在類中放東西 29 條款12...

C 必知必會 placement new

placement new placement new 是過載operator new的乙個標準 全域性的版本,它不能被自定義的版本代替 不像普通的operator new和operator delete能夠被替換成使用者自定義的版本 它的原型如下 void operator new size t,...