Linux c==網絡編程的理論知識

1、四層,七層網絡模型(以及每層對應的協議)

2、五類IP的範圍

3、詳細描述三次握手,四次揮手過程及作用,優缺點

4、TCP、UDP的區別和選擇

5、如何讓UDP實現可靠傳輸

UDP沒有Delievery Garuantee,也沒有順序保證,所以如果你要求你的數據發送與接受既要高效,又要保證有序,收包確認等,你就需要在UDP協議上構建自己的協議。比如RTCP,RTP協議就是在UPD協議之上專門爲H.323協議簇上的IP電話設計的一種介於傳輸層和應用層之間的協議。

下面分別介紹三種使用UDP進行可靠數據傳輸的協議 
RUDP 
RTP 
UDT

RUDP(Reliable User Datagram Protocol) 
可靠用戶數據報協議(RUDP)是一種基於可靠數據協議(RDP: RFC908 和 1151 (第二版))的簡單分組傳輸協議。作爲一個可靠傳輸協議,RUDP 用於傳輸 IP 網絡間的電話信號。它允許獨立配置每個連接屬性,這樣在不同的平臺可以同時實施不同傳輸需求下的協議。 
RUDP 提供一組數據服務質量增強機制,如擁塞控制的改進、重發機制及淡化服務器算法等,從而在包丟失和網絡擁塞的情況下, RTP 客戶機(實時位置)面前呈現的就是一個高質量的 RTP 流。在不干擾協議的實時特性的同時,可靠 UDP 的擁塞控制機制允許 TCP 方式下的流控制行爲。 
爲了與網絡 TCP 通信量同時工作, 
RUDP 使用類似於 TCP 的重發機制和擁塞控制算法。 
在最大化利用可用帶寬上,這些算法都得到了很好的證明。 
RUDP特性 
客戶機確認響應服務器發送給客戶機的包; 
視窗和擁塞控制,服務器不能超出當前允許帶寬; 
一旦發生包丟失,服務器重發給客戶機; 
比實時流更快速,稱爲“緩存溢出”。 
用戶數據報協議(UDP)

RTP(Real Time Protocol) 
RTP,實時協議被用來爲應用程序如音頻,視頻等的實時數據的傳輸提供端到端(end to end)的網絡傳輸功能。傳輸的模型可以是單點傳送或是多點傳送。數據傳輸被一個姐妹協議——實時控制協議(RTCP)來監控,後者允許在一個大的多點傳送網絡上監視數據傳送,並且提供最小限度的控制和識別功能。 
RTP是被IETF在RFC1889中提出來的。順帶提及,RTP已經被接受爲實時多媒體傳送的通用標準。ITU-T跟IETF都在各自的系統中將這一協議標準化。 
1.1 爲何需要RTP? 
TCP不能支持像交互視頻,會議等的實時服務,這一原因是由於TCP只是一個“慢”協議,需要三次握手。就此在IP層上UDP是一個比TCP更好的選擇。但是UDP是本質上是一個不可靠協議,不支持在包丟情況下的重傳機制。誠然,UDP有一些特性,比如多路複用跟校驗和服務,這些都是對實時服務很有利的。爲了消除UDP的缺點,RTP是作爲應用層而被提出來的。 
RTP提供的各種服務包括有效負載識別,序列編號,時間戳和投遞監聽。RTP能夠序列化包,當這些包在收端不是按順序到達的時。序列號也能被用來識別包丟失。時間戳被用於媒體有效的播放。到達的數據一直被RTCP監聽,以通知RTP層來校正其編碼和傳輸的參數。例如,如果RTCP層檢測到包丟失,它會通知RTP層減緩發送速率。 
儘管RTP有助於實時媒體的有效的播放,但是要注意的是RTP自身並不提供任何機制來確保及時傳遞或提供其他服務質量(QoS)的保證,而是依靠低層服務來完成這些。同樣,RTP也不保證投遞或防止無序投遞。RTP被設計出來主要是爲了滿足有多個參加者的多媒體會議的需要。RTP也同樣適合於象持續數據的儲存,分佈式交互仿真,主動標記以及應用程序的控制和測量。 
1.2 RTP特性一覽 
RTP提供有效負荷類型識別,亂序重排和利用時間戳的媒體有效播放。 
RTCP監控服務質量,也提供在一個當前進行的會話中傳送關於參加者的信息作用。 
RTP對於下層協議是獨立的,它能夠工作在像TCP/IP,ATM,幀時延等類型的網絡上。 
如果被下層網絡支持,RTP支持利用多路技術的對於多點的數據傳輸。 
RTP序列號也能被用來確定包的合適位置。例如在視頻解碼,包無需按序解碼。 
2.0 技術概覽 
2.1 RTP 
RTP頭具有如下的格式。開始的12個八位字節在每一個RTP包中都會出現;而CSRC標識符列表只在通過混合器的包中出現. 
Version (V) (版本號):這個域長度爲2比特,標出了RTP的最近版本。當前的版本爲2.0 
Padding (P) (填充):這個域長度爲1比特,如果P被置位,包在結尾處包含有一個或多個附加的填充字節,這些填充字節不是有效負荷的一部分。填充是一些需要固定塊大小的加密算法所要求的,或是爲了在低層PDU搬運RTP包。 
Extension (X):這個域長度爲1比特,如果被置位,固定的頭後面緊跟了一個頭的擴展。 
CSRC count (CC):這個域長度爲4比特。這個域表示了跟在固定頭後面的CSRC標識符的數目。如前所述,這個域只有在通過一個混合器纔有非零值。 
Marker bit (M): 這個域長度爲1比特,如果M被置位,表示一些重要的項目如幀邊界在包中被標記。例如,如果包中有幾個比特的當前幀,連同前一幀,那麼RTP的這一位就被置位。 
Payload type (PT) (有效負荷類型):這個域長度爲7比特,PT指示的是有RTP包中的有效負荷的類型。RTP音頻視頻簡介(AVP)包含了一個默認的有效負荷類型碼到有效負荷格式的映射。附加的有效負荷類型可以向IANA註冊。 
Sequence number(序列號):這個域長度爲16個比特,每送一個RTP包數目就增加一,初始值被設爲一個隨機數。接收方不僅可以用這個序列號檢測包丟失,也可以重組包序列。 
Time stamp(時間戳):這個域長度爲32個比特,時間戳反映了RTP數據包的頭一個字節的採樣時刻。採樣時刻必須是由一個單調線性增加的時鐘產生,這樣做是爲了接收方的同步和抖動計算。初始值必須爲隨機數,這是爲了避免對原碼的攻擊。例如,如果RTP源使用了一個編碼器,緩衝20ms的音頻數據,那麼RTP時間戳必須每個包增加160,無論包是被傳遞了還是被丟失了。 
SSRC:這個域長度爲32比特,這個域表示了正在爲會話產生RTP包的源。這個標識符是隨機選中的,目的是爲了避免同一個RTP會話中兩個源有相同的標識符。 
CSRC list: 這個列表標識了在這個包中對有效負荷起作用的所有源。標識符的最大數目限定爲15,這是由CC域所限定的(全零在CC域中是被禁止的)。如果有超過15個的分配源,只有前15個被標識。 
仔細觀察RTP可以注意到它不像更低層的協議比如PDU一樣,包含一個“定邊界”的域。這一原因是RTP的有效負荷是跟IP的有效負荷相同,因此也就不需要了。 
如果相同的用戶在一個會話中使用多個媒體,比如說視頻跟音頻,每個媒體都會打開單獨的RTP會話。因此在RTP層面上不存在多路複用。多路複用由更低層來決定。但是RTCP保留了一個叫CNAME的標識符,這個標識符對於由同一用戶初始化的媒體是相同的。因此CNAME是在RTP層面上能識別從一個用戶產生的不同媒體的唯一的標識符。

UDT(UDP-based Data Transfer Protocol) 
基於UDP的數據傳輸協議(UDP-based Data Transfer Protocol,簡稱UDT)是一種互聯網數據傳輸協議。UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標準數據傳輸協議TCP在高帶寬長距離網絡上性能很差。 顧名思義,UDT建於UDP之上,並引入新的擁塞控制和數據可靠性控制機制。UDT是面向連接的雙向的應用層協議。它同時支持可靠的數據流傳輸和部分可靠的數據報傳輸。 由於UDT完全在UDP上實現,它也可以應用在除了高速數據傳輸之外的其它應用領域,例如點到點技術(P2P),防火牆穿透,多媒體數據傳輸等等。

UDT是雙工的,每個UDT實體有兩個部分:發送和接收。發送者根據流量控制和速率控制來發送(和重傳)應用程式數據。接收者接收數據包和控制包,並根據接收到的包發送控制包。發送和接收程式共享同一個UDP端口來發送和接收。 
接收者也負責觸發和處理任何的控制事件,包括擁塞控制和可靠性控制和他們的相對機制,例如RTT估計、帶寬估計、應答和重傳。 
UDT總是試着將應用層數據打包成固定的大小,除非數據不夠這麼大。和TCP相似的是,這個固定的包大小叫做MSS(最大包大小)。由於期望UDT用來傳輸大塊數據流,我們假定只有很小的一部分不規則的大小的包在UDT session中。MSS能夠通過應用程式來安裝,MTU是其最優值(包括任何包頭)。 
UDT擁塞控制算法將速率控制和窗口(流量控制)合併起來,前者調整包的發送週期,後者限制最大的位被應答的包。在速率控制中使用的參數通過帶寬估計技術來更新,他繼承來自基於接收的包方法。同時,速率控制週期是估計RTT的常量,流控制參數依賴於對方的數據到達速度,另外接收端釋放的緩衝區的大小。

UDP構建可靠數據傳輸 
簡單來講,要使用UDP來構建可靠的面向連接的數據傳輸,就要實現類似於TCP協議的超時重傳,有序接受,應答確認,滑動窗口流量控制等機制,等於說要在傳輸層的上一層(或者直接在應用層)實現TCP協議的可靠數據傳輸機制,比如使用UDP數據包+序列號,UDP數據包+時間戳等方法,在服務器端進行應答確認機制,這樣就會保證不可靠的UDP協議進行可靠的數據傳輸,不過這好像也是一個難題!

6、VPN,DNS端口號,IP地址,子網掩碼,網關的作用

7、抓包工具有哪些

8、TCP數據包的組成以及UDP數據包的組成

9、併發服務器,分佈式服務器(結構)

10、HTTP協議

11、C/S和B/S架構和區別和選擇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章