TCP/IP 協定與 Internet 網路:第七章 傳輸層協定  上一頁           下一頁

 

翻轉工作室:粘添壽

 

7-2 TCP 協定

『傳輸控制協定』(Transmission Control Protocol, TCP IP 兩者似乎是連結在一起的同一名稱(TCP/IP),兩者的功能確實是相輔相成。IP 的功能是無論兩部工作站在無遠弗屆的任一個角落,都能將它們連結在一起。TCP 提供網路的服務接點讓應用程式使用,也就是說,提供端點對端點(End-to-End)的連線。主機電腦上有多個應用程式都必須透過網路提供或使用網路服務,TCP 就提供多點服務的連線(虛擬鏈路的多工功能)讓各種應用程式可同時連結到網路上。TCP IP 的關係宛如電話系統中的電話號碼和分機號碼。當我們撥接電話時,將依照電話號碼的位址在廣泛的電話大海之中找到對方,並和其連接完成(IP 功能,各地區的交換機就如網路閘門)。這並不能表示我們已連絡上受話的對方,但最起碼我們也連線到對方的電話機上(IP 已連結到主機上)。欲找到受話的人也許可用人工呼叫,但也可以再撥分機號碼(TCP 的埠口號碼),這表示在主機號碼上再加入分機號碼來表示通訊的個人(TCP 的點對點連線)。人與人之間的對話就像網路上應用程式之間的通訊。

TCP IP 另一個相輔相成的功能是 IP 提供非連接的不可靠傳輸,對於有關可靠傳輸的處理程序就必須仰賴 TCP 來完成。換言之,IP 傳送當中,也許會發生封包損壞、封包遺失、封包重複或次序錯亂等現象,這些情況都必須由 TCP 來負責檢測出,並要求對方重送、重整封包順序等工作。因此,TCP 必須提供連接導向的連線,才能使整個網路通訊達到可靠性的傳輸。本節將依此介紹 TCP 之特性。

7-2-1 TCP 封包格式

7-3 TCP 的封包格式,各欄位功能如下:

來源埠口(Source Port):來源之 TCP 埠口。

目的地埠口(Destination Port):目的地之 TCP 埠口。

順序編號(Sequence Number):該封包的順序編號。

確認號碼(Acknowledge Number):回應封包的確認號碼,也是期望傳送端下次發送封包的序號,其表示該確認號碼以前的封包都以正常接收。

資料偏移量(Data Offset):因為 TCP Option 欄位長度並非固定,Data Offset 用來表示傳輸資料(Data)是在整個封包之區段起始位址。

位元碼(Code bits):6 位元)(URG, ACK, PSH, TST, SYN, FIN)此欄位作控制訊息傳遞之用。而且目前有關 TCP/IP 網路上的特殊處理工作(如防火牆等等)都是利用這些控制碼來運作。其中:

(1) URGUrgent):表示該封包為緊急資料,並使 Urgent Point 欄位有效。

(2) ACKAcknowledge):本封包有回應確認功能,其確認 Acknowledge Number 欄位中所指定的順序號碼。

(3) PSHPush):請求對方立即傳送 Send Buffer 中的封包。

(4) RSTReset):要求對方立即結束連線(強迫性),且發送者已斷線。

(5) SYNSynchronous):通知對方要求建立連線(TCP 連線)。

(6) FINFinish):通知對方,資料已傳輸完畢,是否同意斷線。發送者還在連線中等待對方回應。

視窗(Window):此欄位是用來控制封包流量,告訴對方目前本身還有多少緩衝器(Receive Buffer)可以接收封包(滑動視窗法之特性)。如果 Window = 0 表示緩衝器已滿暫停傳送資料。Window 大小的單位是以位元組表示(Byte)。

檢查集(Checksum):此欄位為 16 bits 長的檢查碼,接收方可依此 Checksum 來確定所收封包(資料極表頭)是否正確。

緊急指標(Urgent Point): URG = 1 時,其代表緊急資料是在資料區的什麼位址。

任選欄(Option):目前此欄位只應用於表示接收端能夠接收最大資料區段的大小。如果不使用此欄位,則可以使用任意的資料區段大小。

填補欄位(Padding): Option 欄位補足 32 位元的整數倍。

7-3 TCP 封包格式

7-4 為執行 telnet 163.15.2.62 命令時(利用 Microsoft 網路監視器,附錄 A),所擷取的封包視窗,由視窗中各欄位的說明,而將它填入封包欄位上,如圖 7-5 所示,我們可以比較圖 7-3 7-5,便可了解 TCP 封包包裝的型態。又 Code(或 Flags)欄位為 0x02,此欄位是 6 個位元(000010),第二個位元為 1SYN = 1),表示要求對方同意連接 TCP 連線的意思。

7-4 TCP 標頭擷取視窗

7-5 TCP 封包標頭擷取範例

7-2-2 TCP 傳輸埠口

        TCP 埠口』(TCP Port TCP 連線中虛擬鏈路的邏輯編號,讓應用層應用軟體可透過埠口位置銜接上網路。TCP 埠口是利用 16 位元表示,則理論上可以提供 65536= 216)個連接埠。TCP 埠口和 IP 之連線是多工處理的關係(如圖 7-6 所示),至於虛擬鏈路之間如何選擇處理次序,可依照作業系統的程序排程(Scheduling)來管理,例如,分時系統(Time sharing system)是以時間分割或循環點名法(Round-robin)來輪流處理,或即時系統(Real-time system)則以優先權較高的連線優先處理。對於每一個連接埠口都給予唯一的編號(如 2020),如圖 7-6 裡程式A 連接之位址為 163.15.2.1:2020,表示在 IP 位址為 163.15.2.1(宛如電話號碼) 的主機之第 2020 連接埠口(宛如分機號碼)。程式1 的連結位址為 163.15.4.5:8080,程式設計者或網路使用者只要記住這個位址,就可以連絡到程式1,而不必知道(也很難知道)連線之間所經過何種網路,或它在全世界的哪一個角落。

7-6 TCP IP 之連線關係

TCP port 的編號範圍為0 ~ 65535216),我們採用兩種配置方式:『固定配置埠』(Static Allocated Port『動態配置埠』(Dynamically Allocated Port。將 0 ~ 1023 之位置配置給固定的應用程式(或常用伺服器)使用,使一般用戶連接時不必特別去記憶連接埠的位置,稱之為固定配置埠。例如,當使用者連接到某一主機(163.15.2.1)上的 Web Server80),只要連接上 http://163.15.2.1,便自動連結到 Web Server,而不用輸入 http://163.15.2.1:80。我們節錄一些較常用的著名埠(Well-known)位置如表 7-1。動態配置埠是當應用程式需要連線時,才由系統動態地配置出來,其埠號碼範圍為 1024 ~ 65535,但某些位置如果被特別指定連線使用(如 8080),就不可以再重複配置。

7-1 著名服務的埠號碼(節錄)

埠號碼

服務名稱

傳輸協定

應用服務說明

0

保留

 

 

1

tcpmux

TCP

TCP port 服務多處理

7

Echo

TCP/UDP

回應測試

11

systat

TCP

系統狀態顯示

15

netstat

TCP

網路狀態顯示

20

ftp-data

TCP

FTP 資料傳輸埠

21

ftp

TCP

FTP 控制埠

23

telnet

TCP

Telnet 遠端登入埠

25

smtp

TCP

Simple Mail Transfer Protocol

37

time

TCP/UDP

Time Server

42

name

UDP

Name Server

43

whois

TCP

是誰、nickname(別名)

53

domain

TCP/UDP

Domain Name ServerDNS

79

finger

TCP

尋找使用者

80

http

TCP

Web Server

109

pop-2

TCP

Post Office Protocol 2

110

pop-3

TCP

Post Office Protocol 3

119

nntp

TCP

Network News Transfer Protocol

123

ntp

TCP

Network Time Protocol

 

 

<GOTOP>