譯者:華科小濤: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的七層。儘管存在結構上的差別,但兩種模型有可互換的傳輸層和網絡層,它們的操做也都是基於分組交換技術。下圖就代表兩種模型的不一樣之處:設計
(譯者注:按照慣例呢,Application譯成應用層,Host-to-Host傳輸層,Internet網絡層,NetworkAccess鏈路層。)
下圖顯示了TCP/IP模型和TCP/IP協議族之間的關係:
傳輸層的網絡協議
兩個協議:傳輸控制協議(TCP)和用戶數據報協議(UDP)是被設計用來傳輸數據報的。咱們將着眼於它們的細節和與上層的交互。
1.傳輸控制協議(TCP)
TCP是面向鏈接的協議,在傳輸數據以前必須創建鏈接。TCP協議的數據單元叫作數據段,以段的形式接受和發送數據實體,這些段由一個固定20-byte頭後面跟着一個變量大小數據字段組成。
TCP負責將字節流分解成數據段發送,並在另外一端合併,從新發送任何可能丟失的數據並將數據段按正確的順序組織。數據段大小由鏈路層技術決定的最大傳送單元嚴格限制。(1500字節一般是以太網的最大有效載荷大小)。
下圖就是TCP數據段的格式:
其中:
讓咱們來看下抓包器是怎麼捕獲TCP數據包的,下圖顯示了一個TCP的請求信息。注意上面提到的字段:Source Port, Destination Port, Sequence number, Acknowledgement number, Window size and checksum.
UDP 協議包含的頭部信息較少. 是由於有些數據類型不須要可靠的交付和額外的開銷. 例如實時交通系統,爲了確保實時傳送數據,就沒有采用糾錯和重傳機制。
UDP是一種無鏈接的協議。它的可靠性由應用層處理。它所在意的就是儘量快的傳輸數據。UDP數據段格式以下圖所示:
Let’s see how a UDP segment is captured by Ethereal. Notice the small header size:
該用哪一種協議呢?
要傳輸的數據的性質決定了要採用的協議. 若是信息要可靠、有順序的、完整的傳輸,那就用TCP協議唄。若是數據對實時性要求很高,爲了減小開銷和處理,那就用UDP協議。
下面的表格簡單總結了TCP和UDP的特色,將它們牢記於心,選擇時就不用糾結了: