網路規劃與管理:TCP 協定與分析 - 翻轉工作室

文章推薦指數: 80 %
投票人數:10人

TCP 提供網路的服務接點讓應用程式使用,也就是說,提供端點對端點(End-to-End)的連線。

主機電腦上有多個應用程式都必須透過網路提供或使用網路服務,TCP 就提供多點服務 ... 網路規劃與管理-CCNA技術彙集:第四章TCP/IP協定與分析 上一頁    下一頁   翻轉工作室:粘添壽   4-5TCP協定與分析 4-5-1TCP協定功能 『傳輸控制協定』(TransmissionControlProtocol,TCP)和IP兩者似乎是連結在一起的同一名稱(TCP/IP),兩者的功能確實是相輔相成。

IP的功能是無論兩部工作站在無遠弗屆的任一個角落,都能將它們連結在一起。

TCP提供網路的服務接點讓應用程式使用,也就是說,提供端點對端點(End-to-End)的連線。

主機電腦上有多個應用程式都必須透過網路提供或使用網路服務,TCP就提供多點服務的連線(虛擬鏈路的多工功能)讓各種應用程式可同時連結到網路上。

TCP和IP的關係宛如電話系統中的電話號碼和分機號碼。

當我們撥接電話時,將依照電話號碼的位址在廣泛的電話大海之中找到對方,並和其連接完成(IP功能,各地區的交換機就如網路閘門)。

這並不能表示我們已連絡上受話的對方,但最起碼我們也連線到對方的電話機上(IP已連結到主機上)。

欲找到受話的人也許可用人工呼叫,但也可以再撥分機號碼(TCP的埠口號碼),這表示在主機號碼上再加入分機號碼來表示通訊的個人(TCP的點對點連線)。

人與人之間的對話就像網路上應用程式之間的通訊。

TCP和IP另一個相輔相成的功能是IP提供非連接的不可靠傳輸,對於有關可靠傳輸的處理程序就必須仰賴TCP來完成。

換言之,IP傳送當中,也許會發生封包損壞、封包遺失、封包重複或次序錯亂等現象,這些情況都必須由TCP來負責檢測出,並要求對方重送、重整封包順序等工作。

因此,TCP必須提供連接導向的連線,才能使整個網路通訊達到可靠性的傳輸。

重點說明如下: ●端點對端點連線(End-to-EndConnection) ●提供服務連接埠口(Port): (1)0~1023:著名埠口,如80/tcp連接httpServer。

(2)1024~65535:使用者或動態埠口。

●連接導向方式 (1)虛擬連線建立。

(2)檢視錯誤與遺失封包。

圖4-19TCP通訊連線 4-5-2TCP封包格式 傳輸層的TCP/UDP封包經過IP封包包裝,又再經過Ethernet訊框包裝後,才發送到網路上,其包裝結構如圖4-20所示。

圖4-20Ethernet訊框包裝        在Ethernet框標頭中,型態(Type)為0x0800表示該訊框是承載IP封包,又在IP封包標頭中,如Protocol欄位為6表示本封包是承載TCP訊息;如Protocol=17則表示承載UDP訊息。

一般傳送TCP/IP訊息,IP標頭大多不會攜帶特殊訊息(如來源路徑選擇),也沒有選項欄位(Option),因此IP標頭佔用20位元組長度。

TCP標頭如沒有特殊訊息,也是佔用20位元組長度。

而一般UDP標頭也都是佔用20位元組。

如下: ●Eth.type=0x0800 ●Ip.pro=x06 圖4-21為TCP的封包格式,各欄位功能如下: ●來源埠口(SourcePort):來源之TCP埠口。

●目的地埠口(DestinationPort):目的地之TCP埠口。

●順序編號(SequenceNumber):該封包的順序編號。

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

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

●位元碼(Codebits):(6位元)(URG,ACK,PSH,TST,SYN,FIN)此欄位作控制訊息傳遞之用。

而且目前有關TCP/IP網路上的特殊處理工作(如防火牆等等)都是利用這些控制碼來運作。

其中: (1)URG(Urgent):表示該封包為緊急資料,並使UrgentPoint欄位有效。

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

(3)PSH(Push):請求對方立即傳送SendBuffer中的封包。

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

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

(6)FIN(Finish):通知對方,資料已傳輸完畢,是否同意斷線。

發送者還在連線中等待對方回應。

●視窗(Window):此欄位是用來控制封包流量,告訴對方目前本身還有多少緩衝器(ReceiveBuffer)可以接收封包(滑動視窗法之特性)。

如果Window=0表示緩衝器已滿暫停傳送資料。

Window大小的單位是以位元組表示(Byte)。

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

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

●任選欄(Option):目前此欄位只應用於表示接收端能夠接收最大資料區段的大小。

如果不使用此欄位,則可以使用任意的資料區段大小。

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

圖4-21TCP封包格式 4-5-3TCP建立連線 Tomlinson(1975)提出三向式握手法(Three-wayhandshake)。

其運作的主要原理,就是不管要求訊號或回應訊號都編有序號,尤其回應時必須指明這是回應第幾號要求連線訊息。

對於序號的編列不必依照一定的順序,只要能標示出獨立訊息便可以。

如圖4-22所示,工作站A(TP_A)送出要求連接訊號(ConnectRequest,CR)並附帶序列號碼 x(seq=x);工作站B(TP_B)針對TP_A的要求而送出同意連線訊號(Ack(ack=x)),並標示出本回應訊號的序號(seq=y);TP_A接到TP_B的同意連線訊號Ack(seq=y,ack=x),便知道是針對哪一個連線要求的回應,並在傳送一個確認訊號表示連線成功Ack(seq=x,ack=y);TP_B收到確認訊號也知道針對哪一個連線已連接成功。

圖4-22三向握手式連絡法之訊號方式        因此,TCP採用三向握手式連絡法(Three-wayhandshake)來實現連線處理,其中會用到封包內二個序號:SequenceNumber(seq)及AcknowledgeNumber(ack),以及Code(或稱Flags)欄位中四個旗標:ACK、SYN、FIN和RST。

有三個訊號來建立連線,如下: (1)發起者要求連線:發起者發送TCP封包,標頭內SYN=1,表示要求連線; (2)回應者同意連線:回應者如同意連線,則回送TCP封包,標頭內SYN=1&ACK=1,表示同意連線要求; (3)發起者確認連線:發起者收到同意連線訊息後,最後確認連線成功則回應ACK=1。

另外,針對上述對話連線,有可能連線經過網路延誤而重新發送訊息,為了確認是針對哪一個對話連線回應,則以seq=連線號碼,來表示哪一對話,回應時ack=seq+1,表示針對哪一個連線號碼回應,並要求傳遞下一個封包序號(滑動視窗法確認方式,詳情請參閱TCP/IP與Internet網路)。

圖4-23TCP建立連線運作程序 4-5-4TCP擷取與分析-Wireshark (A)系統分析 欲擷取TCP連線封包很容易,網路應用系統大多採用TCP協定,吾人在Windows上瀏覽某一網站(www.tsnien.idv.tw),再擷取httpd封包即可。

圖4-24TCP封包擷取網路 (B)擷取工具 此實習題目,需要用到下列工具: █Wireshark網路封包分析器(安裝於Windows7) █Windows上瀏覽www.tsnien.idv.tw網頁。

(C)擷取封包步驟  (1)開啟Wireshark: █擷取條件:host192.168.1.102(windowsIP)、 █顯示篩選條件:tcp、 █再選擇介面卡,如下:  (2)Windows上瀏覽www.tsnien.idv.tw網頁。

(3)在Wireshark視窗按暫停。

(D)TCP協定分析 (D-1)客戶端建立連線封包 由上圖中第13封包是客戶端要求建立連線的封包。

各欄位分析如下:(僅說明重要欄位,其他請自行比較參考) █IP封包標頭,如下: ●Source:192.168.1.102 ●Destination:120.118.165.191(www.tsnien.idv.tw) ●Protocol:TCP █TCP封包標頭,如下: ●SourcePort:50699 ●DestinationPort:80 ●SequenceNumber:0 ●AcknowledgeNumber:0 ●Flags:0x002(SYN)(客戶端要求連線) ●Windowsizevalue0:64240 (D-2)伺服端回應同意連線封包: 第41封包是伺服端同意連線的封包。

各欄位分析如下:(僅說明重要欄位,其他請自行比較參考) █IP封包標頭,如下: ●Source:120.118.165.191(www.tsnien.idv.tw) ●Destination:192.168.1.102 ●Protocol:TCP █TCP封包標頭,如下: ●SourcePort:80 ●DestinationPort:50699 ●SequenceNumber:0 ●AcknowledgeNumber:1 ●Flags:0x012(SYN,ACK)(伺服端同意連線) (D-3)客戶端確認連線成功: 第43封包是客戶端確認連線成功。

各欄位分析如下:(僅說明重要欄位,其他請自行比較參考) █IP封包標頭,如下: ●Source:192.168.1.102 ●Destination:120.118.165.191(www.tsnien.idv.tw) ●Protocol:TCP █TCP封包標頭,如下: ●SourcePort:50699 ●DestinationPort:80 ●SequenceNumber:1 ●AcknowledgeNumber:1 ●Flags:0x010(ACK)(客戶端確認連線成功) 4-5-5TCP擷取與分析–PacketTracer (A)系統分析 欲擷取TCP連線封包很容易,網路應用系統大多採用TCP協定,吾人在PC瀏覽某一網站,再擷取httpd封包即可。

(B)網路規劃 吾人利用PacketTracer設計一個簡單網路,包含有三個PC電腦,期望網路環境如下: 網路區段 Gateway/DNS  名稱  IP位址   連接埠口 192.168.0.0/ 255.255.255.0 192.168.0.254/ 168.95.1.1 PC0 192.168.0.1 HUB(Fa0) Http_Server 192.168.0.250 HUB(Fa5) 因此,我們需要在PacketTracer上選擇下列裝置: (1)Hub-PT:模擬集線器(Hub)一只。

提供PC電腦之間連線。

(2)PC-PT:模擬PC主機一只。

PC0主機使用。

(3)Server-PT:模擬伺服器主機一只。

開啟HTTPService,如下: (4)規劃網路如下:(請下載TCP封包擷取.pkt) (C)網路設定 █集線器Hub不需任何設定。

█PC0與PC2須設定相關網路參數,如下(如PC0):Gateway=192.168.0.254、DBSServer=168.95.1.1、IPAddress=192.168.0.1、SubnetMask=255.255.255.0。

█Http_Service:Gateway=192.168.0.254、DBSServer=168.95.1.1、IPAddress=192.168.0.250、SubnetMask=255.255.255.0。

(D)擷取封包步驟 (1)步驟1:PacketTracer採用Simulation模式,編輯EditFilters,點選TCP,表示只擷取TCP封包。

(2)步驟2:再由PC0上瀏覽Http_Server網頁:(點選PC0->Desktop->WebBrowser)  (3)步驟3:在packetTracer上按『AutoCapture/Play』暫停。

(E)TCP協定分析 (1)步驟1:在PacketTracer按『AutoCapture/Play』,則可觀察到擷取到TCP的封包。

(2)步驟2:分析『客戶端建立連線』(Seq=1)封包標頭,如下: ●SourcePort=1030、DestinationPort=80。

●SeqNum=0、AckNum=0。

●Flags=0b000010(0x02)(Syn=1)。

(3)步驟3:分析『伺服端同意連線』(Seq=1、Ack=1)封包標頭,如下: ●SourcePort=80、DestinationPort=1030。

●SeqNum=0、AckNum=1。

●Flags=0b010010(0x12)(Ack=1&Syn=1)。

(4)步驟4:分析『客戶端確認連線』(Ack=1)封包標頭,如下: ●SourcePort=1030、DestinationPort=80。

●SeqNum=1、AckNum=1。

●Flags=0b010000(0x10)(Ack=1)。

     



請為這篇文章評分?