?圖解?TCP/ip? 第六章?TCP與UDP? ?筆記6.1 傳輸層的作用
?
 
		
傳輸層必須指出這個具體的程序,為了實現這一功能,使用端口號這樣一種識別碼。根據端口號,就可以識別在傳輸層上一層的應用程序所有進行處理的具體程序。
?
6.1.1 傳輸層定義
6.1.2 通信處理
 
		
?
6.1.3 兩種傳輸層協議 TCP和UDP
TCP 是面向連接的、可靠的流協議。流就是指不間斷的數據結構,你可以把它想象成排水管道中的水流。
UDP 是不具有可靠性的數據包協議 。細微的處理會交給上層的應用去完成。在UDP 的情況下,雖然可以確保發送消息的大小,卻不能保證消息一定會到達。
?
6.1.4 TCP與UDP 區分
TCP 用于在傳輸層有必要實現可靠性傳輸的情況。由于它是面向有連接并具備順序控制、重發控制等機制的,所以它可以為應用提供可靠傳輸。
UDP主要用于那些對高速傳輸和實時性有較高要求的通信或廣播通信。IP電話,如果使用TCP,如果數據丟失會被重發,但這樣無法流暢的傳輸通話人的聲音,會導致無法進行整長交流。而采用UDP ,它不會進行重發處理。從而也就不會有聲音大幅度延遲到達的問題。
應用在使用TCP或UDP時,會用到操作系統提供的類庫。
使用TCP或UDP 通信時,又會廣泛使用到套接字(socket)的API。
?
 
		
6.2 端口號
?
6.2.1 端口號定義
6.2.2 根據端口號識別應用
 
		
6.2.3 通過IP地址、端口號、協議號進行通信識別
 
		
6.2.4 端口號如何確定
6.2.5 端口號與協議
端口號 由其使用的傳輸層協議決定。因此,不同的傳輸層協議可以使用相同的端口號。例如,TCP與UDP使用同一個端口號,但是使用目的各不相同。這是因為端口號上的處理是根據每個傳輸協議不同而進行的。
6.3 UDP
6.4 TCP
6.4.1 TCP的特點及其目的
TCP通過檢驗和、序列號、確認應答、重發控制、連接管理以及窗口控制等機制實現可靠性傳輸
6.4.2 通過序列號與確認應答提高可靠性
在TCP中,當發送端的數據到達接受主機時,接收端主機會返回一個已收到消息的通知。這個消息叫做確認應答(ACK)。 
		
?
6.4.3 重發超時如何確定
6.4.4 連接管理
可以使用TCP首部用于控制的字段來管理TCP連接。一個連接的建立與斷開,正常過程至少需要來回發送7個包才能完成。 
		
?
6.4.5 TCP以段為單位發送數據
在建立TCP連接的同時,也可以確定發送數據包的單位,也可以稱為最大消息長度(MSS :Maximum Segment Size)。
MSS 是在三次握手的時候,在兩端主機之間被計算得出。兩端的主機在發出建立連接的請求時,會在TCP首部中寫入MSS選項,告訴對方自己的接口能夠適應的MSS大小。然后會在兩者之間選擇一個較小的值投入使用。 
		
6.4.6 利用窗口控制提高速度
TCP 以1個段為單位,每發一個段進行一次確認應答的處理。這樣的傳輸方式有一個缺點。那就是,包的往返時間越長通信性能就越低。 
		
為解決這個問題,TCP引入了窗口這個概念。即使在往返時間較長的情況下,它也能控制網絡性能的下降。
確認應答不再是以每個分段,而是以更大的單位進行確認時,轉發時間將會被大幅度的縮短。發送段主機在發送一個段以后不必要一直等待確認應答,而是繼續發送。
 
		
窗口大小就是指無需等待確認應答而可以繼續發送數據的最大值。
這個機制實現了使用大量的緩沖區,通過對多個段同時進行確認應答的功能。
從該窗口中能看到的數據因某種數據已在傳輸中丟失,所以發送段未收到確認應答,這種情況也需要重新發送。為此,發送端主機在等到確認應答返回之前,必須在緩沖區中保留這部分數據。
收到確認應答的情況下,將窗口滑動到確認應答中的序列號的位置。這樣可以順序的將多個段同時發送提高通信性能。這種機制也被稱為滑動窗口控制。
 
		
?
6.4.7 窗口控制與重發控制
在使用窗口控制中,如果出現段丟失該怎么辦?
首先考慮確認應答未能返回的情況。在這種情況下,數據已經到達對端,是不需要再進行重發的。然而在沒有使用窗口控制的時候,沒有收到確認應答的數據都會被重發。而使用了窗口控制,某些確認應答即便丟失也無需重發。
 
		
其次,考慮一下某個報文段丟失的情況。 
		
?
6.4.8 流控制
發送端根據自己的實際情況發送數據。
TCP提供一種機制 可以讓發送端根據接收端的實際接受能力控制發送的數據量。這就是所謂的流控制。
它的具體操作是,接收端主機向發送端主機通知自己可以接受數據的大小,于是發送端會發送不超過這個限度的數據。該大小限度就被稱為窗口大小。
TCP首部中,專門有一個字段用來通知窗口大小。接受主機將自己可以接受的緩沖區大小放入這個字段中通知給發送端。這個字段的值越大,說明網絡的吞吐量越高。
不過接收端的這個緩沖區一旦面臨數據溢出,窗口大小的值也會隨之被設置為一個更小的值通知給發送端,從而控制數據發送量。也就是說,發送端會根據接收端主機的指示,對發送數據的量進行控制。這也就形成了完整的TCP控制流。(流量控制)。 
		
?
6.4.9 擁塞控制
有了TCP 的窗口控制,收發主機之間即使不再以一個數據段為單位發送確認應答,也能夠連續發送大量數據包。然而,如果在通信剛開始就發送大量數據,也可能會引發其他問題。
一般來說,計算機網絡都處在一個共享環境當中,如果有其他主機之間的通信使得網絡擁塞,在出現網絡擁堵時,如果突然發送一個較大量的數據,有可能使得網絡癱瘓。
TCP為了防止該問題,在通信一開始就會通過一個叫做慢啟動 的算法得出的數值,對發送數據量進行控制。
 
		
首先,為了在發送端調節所要發送數據的兩,定義一個叫做擁塞窗口的概念。于是在慢啟動 的時候,將這個擁塞窗口的大小設置為1個數據段發送數據,之后每收到一次確認應答ACK,擁塞窗口的值就加1.在發送數據包時,將擁塞窗口的大小與接收端主機通知的窗口大小比較,按照他們當中比較小的值,發送比其還小的數據量。
不過,隨著包的每次往返,擁塞窗口也會以1、2、4 等指數函數的增粘,擁堵狀況激增甚至導致網絡擁塞的發生。為了防止這些,引入了慢啟動閥值的概念。只要擁塞窗口的值超過了這個閥值,在每收到一次確認應答時,只允許以下面的這種比例放大擁塞窗口:
 
		
?
TCP的通信開始時,并沒有設置相應的慢啟動閥值。而是在超時重發時,才會設置為當時擁塞窗口的一半。
6.4.10 提高網絡利用率的規范
Nagle 算法
TCP為了提高網絡的利用率,經常使用一個叫做Nagle的算法。
該算法是指發送端即使還有應該發送的數據,但如果這部分數據很少的話,則進行延遲發送的一種處理機制。 具體來說,就是僅僅在下列條件之一才能發送數據。如果兩個條件都不滿足,那么暫時等待一段時間以后再進行數據發送。
已發送的數據都已經收到確認應答。
可以發送最大段長度MSS的數據時。
?
根據這個算法雖然網絡利用率可以提高,但是可能會發生某種程度的延遲。為此,在窗口系統以及機械控制等領域中使用TCP時,往往會關閉對該算法的啟用。
?
延遲確認應答
當某個接收端收到這個小窗口的通知后,會以他為上限發送數據,從而又降低了網路的利用率。為此,引入了一個方法,那就是收到數據以后并不立即返回確認應答,而是延遲一段時間的機制。
?
TCP文件傳輸中,絕大多數是每個數據返回一次確認應答。
?
 
		
?
捎帶應答
根據應用層協議,發送出去的消息到達對端,對端進行處理以后,會返回一個回執。
這些應用協議使用同一個連接進行數據交換。即使是使用WWW的HTTP協議,從1.1 版本以后也是如此。
在此類通信當中,TCP的確認應答和回執數據可以通過一個包發送。這種方式叫做捎帶應答。通過這種機制,可以使收發數據量減少。
?
?
6.4.11 使用TCP的應用
TCP使用各種各樣的控制機制。甚至會使用本書中未提及的其他更為復雜的控制機制。TCP采用這些機制可以提供高速、可靠的通信服務。
?
如果需要應用自己處理一些更為細節的控制,使用UDP協議是不錯的選擇。如果轉發量較多、對可靠性的要求比價高時,可以選擇使用TCP。TCP和UDP兩者各有長短,在設計和開發應用時,應準確掌握他們各自協議的特點酌情選擇 。
?
6.6 UDP首部的格式
 
		
?
6.7 TCP首部格式
?
 
		
控制位 :
CWR:congestion window reduced ?
CWR 標志與后面的ECE標志都用于IP首部的ECN字段。ECE標志位1時,則通知對方已經將擁塞窗口縮小。
ECE ECN -Echo
?
ECE 標志 表示ECN-echo。置1會通知通信對方,從對方到達這邊的網絡有擁塞。在收到數據包的IP首部中ECN為1時將TCP首部中的ECE設置為1.
URG urgent flag?
表示包中有需要緊急處理的數據。對于需要緊急處理的數據,會在后面的緊急指針中再進行解釋。
ACK acknowledgement flag?
該位為1時,確認應答的字段變為有效。TCP規定除了最初建立連接時的SYN包之外,該位必須置為1.
PSH push flag?
該位為1時,表示需要將收到的數據立刻傳給上層應用協議。PSH為0時,則不需要立即傳而是先進行緩存。
RST reset flag?
該位為1時表示TCP連接中出現異常必須強制斷開連接。
?
SYN synchronize flag?
用于建立連接。SYN 為1表示希望建立連接,并在其序列號的字段進行序列號初始值的設定。
FIN? fin flag?
該位為1時,表示今后不會再有數據發送,希望斷開連接。當通信結束希望斷開連接時,通信雙方的主機之間就可以相互交換FIn位置為1的TCP段。
?
窗口大小window size? 
		
?
新聞熱點
疑難解答