第二章TCP協議和UDP協議

2021-08-10 08:11:58 字數 4177 閱讀 7322

2.1 概述

本章從網路程式設計角度提供足夠的細節以理解如何使用tcp協議和udp協議。同時提供這些協議的實際設計、具體實現和相關的注意事項。

本章的焦點是計算機網路傳輸層服務,即面向連線服務和面向無連線服務,它們所使用的相關協議分別是tcp協議和udp協議。目前絕大多數的客戶伺服器應用程式都使用tcp協議或udp協議。這兩個協議使用網路層協議ip:

ipv4或ipv6。儘管應用程式可以繞過傳輸層直接使用ipv4或ipv6,但這種方法(稱為原始套介面)使用較少。

udp是乙個簡單的傳輸層協議,應用程式寫乙個資料報到udp套介面,由它封裝成ipv4或ipv6資料報,然後傳送到目的位址。但是,udp並不能保證udp資料報最終能夠到達目的地。使用udp進行程式設計所遇到的問題是缺乏可靠性。

如果要確保乙個資料報能夠到達目的地,必須在應用程式中建立相應的特性,主要包括:來自另一端的確認、超時、重傳等等。

每個udp資料報都有一定的長度,可以把乙個資料報看作乙個記錄。如果資料報最終正確地到達目的地(即分組到達目的地且校驗和正確),那麼該資料報的長度將傳遞給接收方的應用程序。而tcp是乙個位元組流協議,無記錄邊界。

向應用程式提供的tcp服務與udp服務不同。首先,tcp提供客戶與伺服器的連線;其次,tcp提供可靠性;第三,tcp通過給所傳送資料的每乙個位元組關聯乙個序列號進行排序;第四,tcp提供流量控制。

總之,udp協議是一種簡單的、不可靠的資料報協議,而tcp協議是一種複雜的、可靠的位元組流協議。只有正確理解這兩個協議提供給應用程式的服務,才能清楚這些協議能夠處理什麼,應用程式又需要處理什麼。

只有深入理解tcp協議和udp協議的某些特徵,才能更容易編寫健壯的、高效的客戶伺服器程式。

udp是乙個簡單的面向資料報的傳輸層協議:程序的每個輸出操作剛好產生乙個udp資料報,該資料報導致乙個ip資料報的傳送。

圖2-1顯示了作為ip資料報的udp資料報的封裝。

ip資料報

udp資料報

20位元組8位元組

圖2-1 udp封裝

rfc 768[postel 1980]是udp的官方描述。

udp不提供可靠性:它傳送應用程式資料到ip層的資料報,但不保證這些資料報到達其目的地。鑑於這種不可靠性,我們或許認為應避免udp而總使用乙個可靠的協議。

應用程式應注意所產生ip資料報的大小。若超出網路的mtu,該ip報會被分段。 這適用於資料報從源到目的所跨越的每個網路,不只是適用於傳送主機的第乙個網路。

2.2.1 udp 報頭

圖2-2列出了udp報頭的各個域。

圖2-2 udp報頭

埠號標識出發送程序和接收程序。由於ip已將到來的ip資料報分解復用為tcp和udp,這意味著tcp埠號由tcp檢視,udp埠號由 udp檢視。tcp埠號與ucp埠號無關。

儘管二者無關,但若乙個眾所周和的服務tcp和udp都提供,埠號通常取同乙個值。

udp長度域是以位元組為單位的udp資料和udp報頭之長,其最小值為8。該udp長度是冗餘的,ip報含有其總長度,故udp報長為該總長度減去ip報頭長度。

2.2.2 udp校驗和

udp校驗和覆蓋udp和udp資料。而ip報頭中的校驗和僅覆蓋該ip報頭,它不涉及ip資料報中的任何資料。udp和tcp均在其報頭中有覆蓋其報頭和資料的校驗和。

對udp而言,校驗和是可選的,而tcp則是必需的。

首先,udp資料報的長度可以是奇數個位元組,而校驗和演算法是加16位字。解決辦法是在尾部追加0的填充位元組, 而這填充位元組僅為計算校驗和所需。

另外,udp和tcp均在udp報中包含乙個12位元組的偽報頭以計算校驗和。該偽報頭包含ip報頭的某些域,目的是讓udp 檢測資料確已到達正確的目的端。

如果傳送者的確計算了校驗和並且接收者檢測出校驗和錯誤,則該udp資料報會被簡單地扔棄,不產生錯誤資訊。

udp校驗和是端對端校驗和。它由傳送者計算,然後由接收者驗證。這用於捕捉在傳送者與接收者之間任何地方的udp 報頭或資料所發生的任何改動。

儘管ucp校驗和是可選的,但他們應該總是能開啟的。儘管這在單一的lan上可能是可接受的, 因為在資料鏈路幀上的迴圈冗餘檢查能夠檢測到該幀的大多數錯誤,當這些資料報穿越路由器時,所有位都關閉。不管相信與否,某些帶有軟硬體缺陷的路由器會修改所**的資料報中的某些位。

如果端到端udp校驗和被關閉,那麼這些錯誤是不可檢測的。同時也應看到某些路據鏈路協議沒有任何形式的資料鏈路校驗和。

tcp校驗錯誤率比udp要高,這可能是因為系統的tcp連線傾向於「長距離」,而udp主要用於本地。

2.3 tcp:傳輸控制協議

tcp提供了一種可靠的面向連線的位元組流傳輸層服務,tcp將使用者資料打包形成報文段;它傳送資料後啟動乙個定時器;通訊的另一端對收到的資料進行確認,對亂序的資料重新排序,丟棄重複資料;tcp提供端到端的流量控制,並計算和驗證乙個強制性的端到端檢查和。

目前,許多流行的網路應用程式如telnet、ftp、rlogin和smtp都使用tcp。下面主要介紹tcp為應用層提供的服務以及tcp首部中各個欄位的含義。

2.3.1 tcp提供的服務

儘管tcp和udp都使用相同的網路層(ip),tcp卻向應用層提供與udp完全不同的服務。tcp提供一種面向連線的、可靠的位元組流服務。

面向連線是指兩個使用tcp的應用(典型的情況是顧客/服務員模型)在彼此交換資料之前必須先建立乙個tcp連線。這個過程與打**類似。

在乙個tcp連線中,只能是雙方進行通訊,而廣播和多播不能用於tcp。

tcp通過下列方式來提供可靠性:

● 應用資料被分割成tcp認為最適合傳送的資料塊。這和udp完全不同,應用程式產生的資料報長度保持不變。由tcp傳遞給ip的資訊單位稱為報文段或段(segment)。

● 當tcp發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。如果不能及時收到乙個確認,將重發這個報文段。這裡要求傳送端在收到確認資訊前必須保留該報文段的副本,一旦不能及時收到確認資訊,才能重發該報文段。

● 當tcp收到發自tcp連線另一端的資料,它將傳送乙個確認。通常這個確認不是立即傳送,將延遲幾分之一秒。

● tcp將保持它首部和資料的檢查和。這是乙個端到端的檢查和,目的是檢查資料在傳輸過程中的變化。如果收到乙個段的檢查和有差錯,tcp將丟棄這個報文段,同時向該報文段的傳送方傳送否定的資訊,表示收到的報文段有錯誤,希望對方重發該報文段。

● tcp報文段作為ip資料報中的資料來傳送,而ip資料報的到達可能亂序,因此tcp報文段的到達也可能亂序。如果必要,tcp將對收到的資料進行重新排序,將收到的資料以正確的順序提交給應用層。

● ip資料報會發生重複,因此tcp的接收端必須丟棄重複的資料。

● tcp提供流量控制。tcp連線的每一方都有固定大小的緩衝空間。tcp的接收端只允許另一端傳送接收端緩衝區所能接納的資料。這種控制將防止較快主機致使較慢主機的緩衝區溢位。

兩個應用程式通過tcp連線交換8bit位元組構成的位元組流。tcp不在位元組流中插入識別符號,通常稱為位元組流服務(byte stream service)。如果一方的應用程式先傳10個位元組,又傳30位元組,再傳40位元組;連線的另一方將無法了解傳送方每次傳送了多少位元組。

收方可以分4次接收這80位元組,每次接收20位元組。通訊雙方一方將位元組流放到tcp連線上,同樣的位元組流將出現在tcp連線的另一端。

另外,tcp對位元組流的內容不作任何解釋。tcp不知道傳輸的資料字節流是二進位制資料、還是ascii字元、ebcdic字元或其它型別資料。對位元組流的解釋由tcp連線雙方的應用層解釋。

這種對位元組流的處理方式與unix作業系統對檔案的處理方式相似。unix的核心對乙個應用讀或寫的內容不作任何解釋,而是交給應用程式處理。

2.3.2 tcp的首部

tcp資料被封裝在乙個ip資料報中,如圖2-3所示。

圖2-4顯示了tcp首部的資料格式。如果不計任選字段,它通常是20個位元組。

每個tcp段都包含源端和目的端的埠號,用於定位接收和傳送應用程序,埠號是由本地作業系統分配的,在單機內部是唯一的;而乙個主機的ip位址唯一地標識了網路中的主機。因此,這兩個值和ip首部中的源端ip位址和目的端ip位址唯一確定乙個tcp連線。

乙個ip位址和乙個埠號也稱為乙個插座(socket)。這個術語最早出現在tcp規範(rfc793)中,後來它成為表示伯克利版的網路程式設計介面。乙個插座對(socket pair)(包括客戶ip位址、客戶端口號、伺服器ip位址和伺服器端口號的四元組)可以唯一確定互連網路中每個tcp連線的雙方。

序號用來標識從tcp傳送端向tcp接收端傳送的資料字節流,它表示在這個報文段中的第乙個資料位元組。如果將位元組流看作在兩個應用程式之間的單向流動,則tcp用序號對每個位元組進行計數。序號是32位的無符號數,序號到達232-1後又從0開始。

TCP協議與分析第二章課後作業

第二章習題 1,簡述ip協議在整個tcp ip協議中的作用和地位?2,試述ip位址的結構,格式和分類?3,ip協議報文有那些主要字段?4,ip資料報是如何從一台主機傳輸到相距甚遠的另一台主機上的?答案 1,tcp ip協議的最大的優點是可以對不同的網路進行互聯,具體負責網路互聯功能的是tcp ip協...

第二章TCPIP協議

第二章網路協議tcp ip 眾所周知,tcp ip協議是整個網際網路執行的基礎,是網際網路的靈魂,本章首先會介紹一下osi參考模型和tcp ip協議,並比較它們之間的相同和不同點,然後將會著重分析研究資料報在tcp ip網路傳輸過程中封裝與解封的過程,這也是網路資料報捕獲和分析的關鍵所在。2.1 o...

第二章總結

第二章化學物質及其變化複習提綱 第一節物質的分類 一 簡單分類法及其應用 樹狀分類法 交叉分類法 二 分散系及其分類 分散系 1 定義 一種 或多種 物質以粒子形式分散在另一種 或多種 物質中所得到的體系。2 組成 分散成微粒的物質 分散質 微粒分布在其中的物質 分散劑 3 分類 膠體 1 膠體的本...