TCP/IP協議

1.網絡的體系結構

.網絡採用分而治之的方法設計,將網絡的功能劃分爲不同的模塊,以分層的形式有機組合在一起。

.每層實現不同的功能,其內部實現方法對外部其他層次來說是透明的。每層向上層提供服務,同時使用下層提供的服務。

.網絡體系結構即指網絡的層次結構和每層所使用協議的集合。

2.OSI參考模型及TCP/IP參考模型

通信協議用於協調不同網絡設備之間的信息交換,它們建立了設備之間互相識別的信息機制.大家一定都聽說過著名的OSI協議參考模型,它是基於國際標準化組織(ISO)的建議發展起來的,從上到下共分爲7 層:應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層及物理層.這個7 層的協議模型雖然規定得非常細緻和完善,但在實際中卻得不到廣泛的應用,其重要的原因之一就在於它過於複雜.但它仍是此後很多協議模型的基礎,這種分層架構的思想在很多領域都得到了廣泛的應用.
與此相區別的TCP/IP協議模型從一開始就遵循簡單明確的設計思路,它將TCP/IP 的7層協議模型簡化爲4層,從而更有利於實現和使用.TCP/IP協議許多年來一直被人們所採用,而且越來越多成熟,大多數類型的計算機環境都有TCP/IP產品,它提供了文件傳輸,電子郵件,終端仿真,傳輸服務和網絡管理等功能.TCP/IP的協議參考模型和OSI協議參考

模型的對應關係如下圖所示.


下面分別對者TCP/IP的4層模型進行簡要介紹.

  1. 網絡接口層:負責將二進制流轉換爲數據幀,並進行數據幀的發送和接收.數據幀是網絡信息傳輸的基本單元.
  2. 網絡層:負責將數據幀封裝成IP數據報,同時負責選擇數據包的路徑,也就是路由.
  3. 傳輸層:負責端對端之間的通信會話連接與建立.傳輸協議的選擇根據數據傳輸方式而定.
  4. 應用層:負責應用程序的網絡訪問,這裏通過端口號來識別各個不同的進程.

3. TCP/IP協議族

TCP/IP協議實際上是一個龐大的協議族,它包括了各個層次上的衆多協議,爲網際數據通信提供不同層次的通路,下圖列舉了各層中一些重要的協議,並給出了各個協議在不同層次中所處的位置如下.


  • ARP:地址解析協議,於獲得同一物理網絡中的硬件主機地址.
  • IP:網間協議,責在主機和網絡之間尋址和路由數據包.
  • ICMP:互聯網控制信息協議,用於發送報告有關數據包的傳送錯誤的協議.
  • IGMP:被IP主機用來向本地多路廣播路由器報告主機組成員的協議.
  • TCP:傳輸控制協議,應用程序提供可靠的通信連接.適合於一次傳輸大批數據的情況.並適用於要求得到響應的應用程序.
  • UDP:用戶數據報協議,提供了無連接通信,且不對傳送包進行可靠的保證.適合於一次傳輸少量數據,可靠性則由應用層來負責。

4.TCP協議

4.1.簡介

同其他任何協議棧一樣,TCP向相鄰的高層提供服務.因爲TCP的上一層就是應用層,因此,TCP數據傳輸實現了從一個應用程序到另一個應用程序的數據傳遞.應用程序通過編程調用TCP並使用TCP服務,提供需要準備發送的數據,用來區分接收數據應用的目的地址和端口號.

通常應用程序通過打開一個socket來使用TCP服務,TCP管理到其他socket的數據傳遞.可以說,通過IP的源/目的可以惟一地區分網絡中兩個設備的關聯,通過socket的源/目的可以惟一地區分網絡中兩個應用程序的關聯.

4.2.TCP連接建立的過程

TCP連接通過三次握手來初始化的.三次握手的目的是使數據段的發送和接收同步,告訴其他主機其一次可接收的數據量,並建立虛連接.
下面描述了這三次握手的簡單過程。
初始化主機通過一個同步標誌置位SYN的數據段發出會話請求.
接收主機通過發回具有以下項目的數據段表示回覆:同步標誌置位SYN,即將發送的數據段的起始字節的順序號,應答並帶有將收到的下一個數據段的字節順序號.
請求主機再回送一個數據段,並帶有確認順序號和確認號.

下圖就是這個流程的簡單示意圖

TCP實體所採用的基本協議是滑動窗口協議.當發送方傳送一個數據報時,它將啓動計時器.當該數據報到達目的地後,接收方的TCP實體向回發送一個數據報,其中包含有一個確認序號,它意思是希望收到的下一個數據報的順序號.如果發送方的定時器在確認信息到達之前超時,那麼發送方會重發該數據報.

4.3.TCP連接的標識

TCP是實現兩主機間進程通信,所有隻有兩個主機的IP地址是不能標識一條連接的,在TCP中,使用兩個socket來標識一條連接.socket由本地的IP地址和進程使用的端口號組成,<本地IP地址,本地端口>.這樣對於一條TCP連接,就可以使用兩個二元組來表示爲<本地IP地址,本地端口>,<遠端IP地址,遠端端口>或者一個四元組表示爲<本地IP地址,本地端口,本地IP地址,本地端口>.

4.4.TCP連接的關閉

關閉一條TCP連接有三種可能的情況.
1.發起連接的一方(主機A)請求關閉TCP連接.在這種情況下,主機A發送的數據包中,將包含一個FIN(FINSH,中止信息)控制信息,然後主機A將進入FIN-WAIT等待狀態中.在這種狀態下,主機A仍然可以接受數據,但不能發送數據了.當連接的另一端(主機B)收到這個數據包後,將發送一個確認數據包,但可能不包括FIN控制信息,直到主機B完成任務,才發送FIN.然後A端向B端發送FIN確認信息,這時B端變爲CLOSED狀態,A端延時一段時間後也轉換爲CLOSED狀態.
2.主機B主動請求關閉TCP連接.主機A從網絡中收到來自主機B的FIN控制信息,主機A將通知上層應用連接即將斷開,而後當來自B端的數據發送完畢後,向B端發送FIN控制信息,確認後即斷開.如果主機B上層應用的超時定時器超時後,還沒有收到主機A的確認信息,則將主動斷開TCP連接.

3.主機A和主機B同時發起斷開連接的請求,其過程與上述兩種情況大致相同,就不再詳細介紹了.

4.5.TCP數據報頭

下圖給出了TCP數據報頭的格式.

TCP數據報頭的含義如下所示:
源端口,目的端口:16 位長.標識出遠端和本地的端口號.
源端口,目的端口:16 位長.標識出遠端和本地的端口號.
序號:32 位長.標識發送的數據報的順序.
確認號:32位長.希望收到的下一個數據報的序列號.
TCP頭長:4 位長.表明TCP頭中包含多少個32位字.6位未用.
ACK:ACK位置1表明確認號是合法的.如果ACK爲0,那麼數據報不包含確認信息,確認字段被省略.
PSH:表示是帶有PUSH 標誌的數據.接收方因此請求數據報一到便可送往應用程序而不必等到緩衝區裝滿時才傳送.
RST:用於復位由於主機崩潰或其他原因而出現的錯誤的連接.還可以用於拒絕非法的數據報或拒絕連接請求.
SYN:用於建立連接.
FIN:用於釋放連接.
窗口大小:16 位長.窗口大小字段表示在確認了字節之後還可以發送多少個字節.
校驗和:16 位長.是爲了確保高可靠性而設置的.它校驗頭部,數據和僞TCP頭部之和.

可選項:0個或多個32位字.包括最大TCP 載荷,窗口比例,選擇重發數據報等選項.

5.UDP協議

UDP即用戶數據報協議,它是一種無連接協議,因此不需要像TCP那樣通過三次握手來建立一個連接.同時,一個UDP應用可同時作爲應用的客戶或服務器方.由於UDP協議並不需要建立一個明確的連接,因此建立UDP應用要比建立TCP應用簡單得多.
UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是在網絡質量越來越高的今天,UDP的應用得到了大大的增強.它比TCP 協議更爲高效,也能更好地解決實時性的問題.如今,包括網絡視頻會議系統在內的衆多的客戶/服務器模式的網絡應用都使用UDP協議.

UDP數據包頭如下圖所示.

源地址,目的地址:16 位長.標識出遠端和本地的端口號.

數據報的長度是指包括報頭和數據部分在內的總的字節數,因爲報頭的長度是固定的,所以該域主要用來計算可變長度的數據部分(又稱爲數據負載).

校驗和:16 位長.將首部和數據部分一起檢驗.

6.協議的選擇

協議的選擇應該考慮到以下3個方面.
(1)對數據可靠性的要求
對數據要求高可靠性的應用需選擇TCP協議,如驗證,密碼字段的傳送都是不允許出錯的,而對數據的可靠性要求不那麼高的應用可選擇UDP傳送。
(2)應用的實時性
由於TCP 協議在傳送過程中要進行三次握手,重傳確認等手段來保證數據傳輸的可靠性.使用TCP 協議會有較大的時延,因此不適合對實時性要求較高的應用,如VOIP,視頻監控等.相反,UDP協議則在這些應用中能發揮很好的作用.
(3)網絡的可靠性
由於TCP協議的提出主要是解決網絡的可靠性問題,它通過各種機制來減少錯誤發生的概率.因此,在網絡狀況不是很好的情況下需選用TCP 協議(如在廣域網等情況),但是若在網絡狀況很好的情況下(如局域網等)就不需要再採用TCP 協議,選擇UDP協議來減少網絡負荷.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章