TCP協議三次握手與揮手與CRT軟件的連接方法

傳輸控制協議概述

傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETF的RFC 793 定義。
TCP旨在適應支持多網絡應用的分層協議層次結構。 連接到不同但互連的計算機通信網絡的主計算機中的成對進程之間依靠TCP提供可靠的通信服務。TCP假設它可以從較低級別的協議獲得簡單的,可能不可靠的數據報服務。 原則上,TCP應該能夠在從硬線連接到分組交換或電路交換網絡的各種通信系統之上操作。

主要功能

當應用層向TCP層發送用於網間傳輸的、用8位字節表示的數據流,TCP則把數據流分割成適當長度的報文段,最大傳輸段大小(MSS)通常受該計算機連接的網絡的數據鏈路層的最大傳送單元(MTU)限制。之後TCP把數據包傳給IP層,由它來通過網絡將包傳送給接收端實體的TCP層。 [3]
TCP爲了保證報文傳輸的可靠,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然後接收端實體對已成功收到的字節發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那麼對應的數據(假設丟失了)將會被重傳。
在數據正確性與合法性上,TCP用一個校驗和函數來檢驗數據是否有錯誤,在發送和接收時都要計算校驗和;同時可以使用md5認證對數據進行加密。
在保證可靠性上,採用超時重傳和捎帶確認機制。
在流量控制上,採用滑動窗口協議,協議中規定,對於窗口內未經確認的分組需要重傳。
在擁塞控制上,採用廣受好評的TCP擁塞控制算法(也稱AIMD算法)。該算法主要包括四個主要部分:
(1)慢啓動
每當建立一個TCP連接時或一個TCP連接發生超時重傳後,該連接便進入慢啓動階段。進入慢啓動後,TCP實體將擁塞窗口的大小初始化爲一個報文段,即:cwnd=1。此後,每收到一個報文段的確認(ACK),cwnd值加1,即擁塞窗口按指數增加。當cwnd值超過慢啓動闡值(sshterhs)或發生報文段丟失重傳時,慢啓動階段結束。前者進入擁塞避免階段,後者重新進入慢啓動階段。
(2)擁塞避免
在慢啓階段,當cwnd值超過慢啓動闡值(ssthresh)後,慢啓動過程結束,TCP連接進入擁塞避免階段。在擁塞避免階段,每一次發送的cwnd個報文段被完全確認後,纔將cwnd值加1。在此階段,cwnd值線性增加。
(3)快速重傳
快速重傳是對超時重傳的改進。當源端收到對同一個報文的三個重複確認時,就確定一個報文段已經丟失,因此立刻重傳丟失的報文段,而不必等到重傳定時器(RTO)超時。以此減少不必要的等待時間。
(4)快速恢復
快速恢復是對丟失恢復機制的改進。在快速重傳之後,不經過慢啓動過程而直接進入擁塞避免階段。每當快速重傳後,置sshtesrh=cwnd/2、ewnd=ssthresh+3。此後,每收到一個重複確認,將cwnd值加1,直至收到對丟失報文段和其後若干報文段的累積確認後,置cwnd=ssthesrh,進入擁塞避免階段。
主要特點

主要特點

TCP是一種面向廣域網的通信協議,目的是在跨越多個網絡通信時,爲兩個通信端點之間提供一條具有下列特點的通信方式: [1]
(1)基於流的方式;
(2)面向連接;
(3)可靠通信方式;
(4)在網絡狀況不佳的時候儘量降低系統由於重傳帶來的帶寬開銷;
(5)通信連接維護是面向通信的兩個端點的,而不考慮中間網段和節點。
爲滿足TCP協議的這些特點,TCP協議做了如下的規定: [10]
①數據分片:在發送端對用戶數據進行分片,在接收端進行重組,由TCP確定分片的大小並控制分片和重組;
②到達確認:接收端接收到分片數據時,根據分片數據序號向發送端發送一個確認;
③超時重發:發送方在發送分片時啓動超時定時器,如果在定時器超時之後沒有收到相應的確認,重發分片;
④滑動窗口:TCP連接每一方的接收緩衝空間大小都固定,接收端只允許另一端發送接收端緩衝區所能接納的數據,TCP在滑動窗口的基礎上提供流量控制,防止較快主機致使較慢主機的緩衝區溢出;
⑤失序處理:作爲IP數據報來傳輸的TCP分片到達時可能會失序,TCP將對收到的數據進行重新排序,將收到的數據以正確的順序交給應用層;
⑥重複處理:作爲IP數據報來傳輸的TCP分片會發生重複,TCP的接收端必須丟棄重複的數據;
⑦數據校驗:TCP將保持它首部和數據的檢驗和,這是一個端到端的檢驗和,目的是檢測數據在傳輸過程中的任何變化。如果收到分片的檢驗和有差錯,TCP將丟棄這個分片,並不確認收到此報文段導致對端超時並重發。

首部格式

TCP的首部格式如圖1所示:
—Source Port是源端口,16位。
圖1 TCP首部
圖1 TCP首部
—Destination Port是目的端口,16位。
—Sequence Number是發送數據包中的第一個字節的序列號,32位。
—Acknowledgment Number是確認序列號,32位。
—Data Offset是數據偏移,4位,該字段的值是TCP首部(包括選項)長度除以4。
—標誌位: 6位,URG表示Urgent Pointer字段有意義:
ACK表示Acknowledgment Number字段有意義
PSH表示Push功能,RST表示復位TCP連接
SYN表示SYN報文(在建立TCP連接的時候使用)
FIN表示沒有數據需要發送了(在關閉TCP連接的時候使用)
Window表示接收緩衝區的空閒空間,16位,用來告訴TCP連接對端自己能夠接收的最大數據長度。
—Checksum是校驗和,16位。
—Urgent Pointers是緊急指針,16位,只有URG標誌位被設置時該字段纔有意義,表示緊急數據相對序列號(Sequence Number字段的值)的偏移。

通過實驗查看抓包

實驗案例一:TCP協議三次握手及四次揮手報文抓取實驗
實驗環境:Centos作爲服務器,在真記下使用CRT鏈接,且用wireshark進行抓包

打開VM虛擬機,開啓CentOS7.6
在這裏插入圖片描述
進入桌面,右鍵桌面,選擇終端
在這裏插入圖片描述
在終端內輸入ifconfig,查看當前ip(若是最小安裝,可以輸入 ip a s)
在這裏插入圖片描述
打開CRT,選擇鏈接按鈕
在這裏插入圖片描述
輸入IP地址和用戶名
在這裏插入圖片描述
輸入密碼並勾選保存密碼
在這裏插入圖片描述
進入CentOS7,輸入ifconfig,發現ip一致,成功進入
在這裏插入圖片描述
打開wrieshark,根據圖示選擇,勾選虛擬機使用的vm1網卡,點擊開始
在這裏插入圖片描述
在這裏插入圖片描述
使用CRT連接虛擬機,抓包開始,紅框內爲三次握手
在這裏插入圖片描述
在這裏插入圖片描述
下面是四次揮手
輸入init 0,關閉虛擬機
在這裏插入圖片描述就可以看到四次揮手了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章