[譯]TCP和UDP的區別

譯者:華科小濤:http://www.cnblogs.com/hust-ghtao/忍者安全

最近開始學習計算機網絡的知識,找了些英文的資料,翻譯過來,一是爲了深刻學習網絡,也是爲了鍛鍊本身看英文文檔的能力。網絡

原文連接:http://blog.pluralsight.com/networking-basics-tcp-udp-tcpip-osi-models,(若是侵權的話,你們告訴我哦)。tcp

譯文:ide

傳輸控制協議/互聯網協議(TCP/IP)套件(suite翻譯成套件有點奇怪啊!)是由美國國防部(DoD)發明的,旨在確保通訊在任何狀況下都能進行,在遭受惡意攻擊時,數據完整性也能保證啊。學習

傳說中的開放互聯參考模型(OSI Model)是對網絡協議設計的抽象描述,目的就是爲了規範網絡。ui

這篇文章,我會闡述DoD和OSI模型的區別,更進一步還會介紹DoD版TCP/IP模型的細節。我還會介紹DoD各層協議,固然重點會放在TCP和UDP。經過這篇文章,你會找到關於TCP/IP套件的乾貨哦。編碼

若是你正在準備CCENT貨CCNA(不知道是啥)的考試,或者你對網絡很感興趣,那就千萬不要錯過呀。記好安全帶,have a good ride,(懂意思,不會翻譯!)。計算機網絡

TCP/IP和OSI模型的比較翻譯

讓咱們從比較TCP/IP和OSI模型開始。TCP/IP模型是OSI模型的簡化版,用四層取代OSI的七層。儘管存在結構上的差別,但兩種模型有可互換的傳輸層和網絡層,它們的操做也都是基於分組交換技術。下圖就代表兩種模型的不一樣之處:設計

 

                                               TCP1

 

(譯者注:按照慣例呢,Application譯成應用層,Host-to-Host傳輸層,Internet網絡層,NetworkAccess鏈路層。)

  • 應用層: 應用層負責表示、編碼、和對話控制。全部這些問題集中起來在TCP/IP模型中就是一層,在OSI模型中是三層。
  • 傳輸層: TCP/IP中的Host-to-Host 協議功能和OSI模型中的模型差很少,包括應用數據的分割,傳輸可靠性保證,流和錯誤控制。
  • 網絡層:TCP/IP中的網絡層和OSI模型中的網絡層提供相同的服務。主要目的就算是將數據包送到目的地,並且和所選路徑無關。
  • 鏈路層:鏈路層處理一切和網絡媒介上的數據終端有關的物理問題。是OSI模型中DataLink和Physical概念的和。

下圖顯示了TCP/IP模型和TCP/IP協議族之間的關係:

 

                                         TCP2

傳輸層的網絡協議

兩個協議:傳輸控制協議(TCP)和用戶數據報協議(UDP)是被設計用來傳輸數據報的。咱們將着眼於它們的細節和與上層的交互。

1.傳輸控制協議(TCP)

TCP是面向鏈接的協議,在傳輸數據以前必須創建鏈接。TCP協議的數據單元叫作數據段,以段的形式接受和發送數據實體,這些段由一個固定20-byte頭後面跟着一個變量大小數據字段組成。

TCP負責將字節流分解成數據段發送,並在另外一端合併,從新發送任何可能丟失的數據並將數據段按正確的順序組織。數據段大小由鏈路層技術決定的最大傳送單元嚴格限制。(1500字節一般是以太網的最大有效載荷大小)。

下圖就是TCP數據段的格式:

 

                                  TCP3

其中:

  • Source Port and Destination Port 爲源端口和目的端口,肯定特定連接的兩個端點。一個端口加上主機的IP地址就能夠肯定一個端點啦。端口用來和上層通訊,還能夠用來區分同一臺電腦上不一樣的應用程序。
  • The Sequence Number and Acknowledgment Number 指定字節流中的字節。The Sequence Number用來從新排序或從新發送丟失的數據段。The Acknowledgment number 被設定爲預期的下一個段。
  • Data offset or TCP header length 代表在TCP的頭信息中有多少word(一個word 4 字節哦)。
  • The Window field 代表在收到確認以前能夠傳輸多少字節。
  • The Checksum field 提供額外的可靠性和安全性。
  • 用戶數據就跟在頭的後面。

讓咱們來看下抓包器是怎麼捕獲TCP數據包的,下圖顯示了一個TCP的請求信息。注意上面提到的字段:Source Port, Destination Port, Sequence number, Acknowledgement number, Window size and checksum.

                                     TCP4

 

用戶數據報協議 (UDP)

UDP 協議包含的頭部信息較少. 是由於有些數據類型不須要可靠的交付和額外的開銷. 例如實時交通系統,爲了確保實時傳送數據,就沒有采用糾錯和重傳機制。

UDP是一種無鏈接的協議。它的可靠性由應用層處理。它所在意的就是儘量快的傳輸數據。UDP數據段格式以下圖所示:

                                     TCP5

Let’s see how a UDP segment is captured by Ethereal. Notice the small header size:

                                    TCP6

 

該用哪一種協議呢?

要傳輸的數據的性質決定了要採用的協議. 若是信息要可靠、有順序的、完整的傳輸,那就用TCP協議唄。若是數據對實時性要求很高,爲了減小開銷和處理,那就用UDP協議。

下面的表格簡單總結了TCP和UDP的特色,將它們牢記於心,選擇時就不用糾結了:

                                    TCP7

相關文章
相關標籤/搜索