Ⅰ 談計算機網路TCP協議的模擬與實現
談計算機網路TCP協議的模擬與實現
TCP是計算機網路中運輸層協議,連接著應用層和網路層,發揮著非常關鍵的作用。那麼,計算機網路TCP協議的模擬與實現是?
作為計算機網路中較為重要的一種運輸層協議,TCP連接著應用層和網路層,發揮著非常關鍵的作用。在TCP/IP協議中,我們重點關注TCP。本文主要立足於TCP協議的特點,詳細介紹了TCP協議的主要特性。
一、TCP協議的概述
(一) TCP協議的特點
首先,TCP提供的連接服務穩定性有保證。相關的連接有著和打電弧相似的建立過程。先撥電話號碼,當對方接通回復“喂”的時候,再告知對方自己是誰,完成任務後釋放;其次,TCP提供連接必須是只針對兩個客戶端,也就是實現一對一的傳輸;最後,TCP提供全雙工通信。這個特點就是保證通信的兩端在使用TCP的時候可以隨時通信,這樣就可以及時傳輸數據。
(二) TCP埠號和套接字地址
TCP埠號:埠號只能對計算機中的進程進行標記,一般使用兩個位元組來完成標記工作,這也就是埠號的本地意義。當埠號並不是我們熟悉的狀況時,要使用數值為1024~49151的等記埠號,使用的過程中要在UANA上登記,避免中間重復使用。無連接的UDP和TCP也有著自己的埠號,但是兩個埠號彼此之間是相互獨立的,各自有著不同的用途。套接字地址:CP中的套接字,一般在表達的過程中會用同一個名詞表達不一樣的含義。也就是說,當套接字被一個程序使用,那麼socket函數中使用的函數以及調用它的埠都會叫做scocket。當緊急URG給系統發出有關緊急數據傳輸的通知時,相關的緊急數據應該作為優先順序任務,盡快被傳送。
二、 TCP的連接與釋放
(一)建立連接
全雙工是TCP傳輸數據的主要方式,在整個過程中有三次握手的方式來完成對該項目的建立,並且TCP的連接和釋放都是使用客戶—伺服器方式,連接的建立也是從伺服器開始。首先將SYN設置為1,然後將數據包頭部的那個確認欄位設置為x+1,接下來將最開始的序列號放在數據包頭部的數列中。當這個鏈接的數據段被接受之後,那麼相應的數據段就會被送到緩沖區,同時,伺服器也能夠及時收到客戶端從另外一邊發來的數據段,最後完成相關輸出的確認。
(二) TCP的連接釋放
TCP傳輸數據的'主要方式是全雙工,因此,數據傳輸結束後,所有的連接都會被釋放,並且每個連接的釋放都是單個放行的。首先,當被A發送的數據能夠到達B,為了杜絕失效的報文段在文本中存在,最後一個一個ACK被發送完後,相關的環節就會處理。這種辦法就能夠及時高效地處理掉連接過程中請求報文段的問題。
(三) TCP的連接復位
一般情況下,有三種情況需要復位。首先,當TCP連接的埠並不存在時,另一端TCP就能發送一個報文段,這時需要關閉相關的連接;其次,如果一端的TCP出現一些異常情況,那麼就可以通過發送復位來終止連接;最後一種情況是,當一端的TCP長時間沒有使用,那麼就可以發送復位信息報,將其關閉。
(四) TCP擁塞控制
TCP的擁塞控制是TCP工作中存在的一種現實問題,會對整個工作造成一定程度的影響,因此,必須針對這種情況進行改進。首先,慢啟動和擁塞避免。TCP用來發送數據是慢啟動和擁塞避免演算法展開的依據,這種演算法的實現必須通過在TCP中增加兩個變數;其次,快恢復和快重傳。這種主要是針對發送端展開的,多種網路會導致埠查收到重復ACK,因此,應該找到事故原因,及時處理。
三、TCP的模擬實驗
(一)模擬實驗的設置
我們都知道TCP是有鏈接的可靠的傳輸層協議,所以在傳輸運用過程中也會出現錯誤。下面我們通過以下模擬實驗,來了解TCP在傳輸FTP文件時一數據報丟失的情況,來詳細分析下這一解決過程。
我們用OPNET來做TCP的模擬實驗,這只是在一個比較簡單的環境下在做關於TCP的模擬實驗,測試出數據圖通過分析和比較來觀察TCP處理數據丟失包的具體工作原理和過程。選擇“結果- - > >安排Pannels顯示所有“查看保存結果。
頂部多媒體的快速decovery conquestion窗口由於“TCP雷諾”,在重新傳輸。這個conquestion窗口只是減少了一半,而不是1MSS,從而快速恢復。graphe的底部顯示了發送之間的關系序列號碼和收到seqment ack伺服器上的數量。伺服器故意把一個數據包給丟失,這時客戶伺服器就會發出三個ACK,會被重新發送。
這時把FTP的Command Mix的值設置為100%,把Inter-Requests設置為constant 3600,把File Size設置為FTP,把Server,type of serveice值設置為best effort,把RSVP parameters值設置為 None;用NotUsed來設置Back-End Custom Application值。
(二)模擬實驗的過程
針對TCP數據傳輸開始時,擁塞窗口設置為最大的MSS值,慢啟動演算法開始,cwnd被設置為200,那麼400,800,1600.......以103S,擁塞窗口達到6500的最大閾值,為了不讓擁塞窗口將不會太增加網路阻塞引起的,然後執行擁塞避免演算法,每一個RTT,擁塞窗口將增加一個單位,然後在107s當FTP數據包丟失,然後進行處理,擁塞窗口的值下降,TCP協議在慢啟動和擁塞避免演算法的實現,窗口的大小增長將呈現線性增長。設置最大窗口閾值,根據3響應消息重復判斷丟包,重傳丟失的數據包和直接的閾值,為當前擁塞窗口6500的一半,這是快速重傳(Tahoe),然後轉移到慢啟動。然後再轉入慢開始。
在窗口大小到達大約80000後,應該是收到3個連續ACK,若根據3個重復的應答報文就會知道有沒有丟包,而且丟失的分組會被重傳,此時的ssthresh的值就為擁塞窗口的一半,這樣就進入了進入擁塞避免階段。
(三)模擬實驗小結
用OPNET做TCP的模擬實驗,數據包丟失,TCP數據的變化都被形象的描繪出來了,很好的詮釋了這一失誤和改正過程。為TCP以後出錯改正做了很好的例子。
四、結語
綜上所述,網路普及的這個時代,讓我們不斷地認識到了計算機網路的重要性,學生們也開始越來越重視對TCP的研究。在簡單的OSI體系中,TCP發揮著較為重要的作用,因此,我們必須深入研究其工作原理,便於在運輸層中順利地運用TCP協議。
;Ⅱ TCP是如何實現可靠傳輸的
在計算機網路的經典五層協議中,TCP屬於運輸層,實現了進程間的通信,保證了數據的可靠傳輸,屬於計算機網路協議族中最重要的協議之一,那麼TCP是如何實現可靠數據傳輸的呢?
運輸層的進程間通信是通過socket實現的,socket是一個抽象的概念,在Linux系統中以文件的形式存在。網路層通過IP來區分主機,運輸層則增加了埠的概念來區分進程。TCP協議中使用目標IP、目標埠、源IP、源埠來定義一個socket,只需要在運輸層的報文頭部附加上這些信息,目標主機就會知道數據要發送那個socket,對應監聽該socket的進程就可以收到數據進行處理。
TCP報文包括首部和數據部分,首部附加了TCP報文的信息,首部長度固定部分為20位元組,還有40位元組的可選部分,具體如下圖所示:
其中幾個關鍵欄位的作用如下:
網路層只管盡可能將數據從一個主機發送到另一個主機,並不保證數據可靠到達,由於網路環境總是不穩定的,可能存在丟包、差錯等請求,TCP則通過一系列的機制在運輸層保證了數據的可靠傳輸。
網路傳輸可能發生的異常情況和解決方法:
要實現可靠傳輸,最簡單的方法就是發送方發送一個報文,接收方收到報文後發送確認報文表示我收到了,你可以發下一個了,傳輸模型如下:
這種方式保證可靠傳輸稱為停止等待協議,這種方式缺點也很明顯,效率非常低。
為了提高傳輸效率,充分利用帶寬,發送方會連續的發送數據包,如下圖所示:
客戶端不等收到前一個包的確認報文就開始不斷的發下一個包,這樣可以充分利用網路帶寬,提高傳輸效率,但是於此同時也帶來了另外的問題,那麼TCP是如何解決這些問題的?
累計確認 :網路中充斥著大量的發送包和確認回復報文,這些數據只是為了確認報文到達,並不是實際需要傳輸的數據。是不是一定要每一個報文都要發一個回復確認的報文呢,TCP採用了累計確認的方法:接收方在累計收到了一定量的數據包後發送一個確認報文告訴發送方在此之前的數據包都已經收到了,這樣便可以減少確認報文的數量,提高帶寬利用率。
GBN(回退n步) :如果發生丟包的情況,在連續ARQ中,如果接受方收到了123 567個位元組,編號為4位元組的包丟失了,按照累計確認只能發送3的確認回復,567都要丟掉,因為發送發會進行重傳。
選擇確認ACK :在TCP報文頭部的選項欄位部分設置已收到的報文,每一段用兩個邊界來確定,比如上述情況可以用[1,3]和[5,7]來表示,客戶端就會根據選項只重傳丟失的數據段。
因為接收方讀數據的能力有限,發送發不能一直發送報文直到把緩沖區所有數據發送完,這樣會導致接收方無法接收丟棄掉數據包,發送方收不到確認認為超時又會繼續重傳,產生了大量無用數據的重傳。對此情況TCP使用滑動窗口來解決,基本模型如下:
滑動窗口機制實現了TCP的 流量控制 ,不至於發送太快導致太多的數據丟棄和重傳。
為了避免網路過分擁擠導致丟包嚴重,傳輸效率低,TCP實現了擁塞控制機制,擁塞控制的解決辦法本質上是流量控制,控制發送方發送的速度,而上文提到流量控制是通過滑動窗口來實現的,所以最終也是通過調整發送方的滑動窗口大小來實現的。
擁塞控制的幾個重要的概念:慢啟動、擁塞避免、快恢復、快重傳
Reno演算法是比較常見的TCP實現的擁塞控制演算法,其他擁塞演算法還有Tahoe(已廢棄不用)、New Reno等,通過擁塞控制演算法可以很大程度避免網路擁擠。
【書籍】計算機網路:自頂向下方法
【碼農有道】 這一篇TCP總結請收下
Ⅲ 計算機網路tcp三次握手/四次揮手分析實驗怎麼做
安裝個wireshark,然後使用ftp下載個小文件,看看抓到的東西就行了
Ⅳ 計算機網路原理與技術實驗 網路硬軟體資源共享與TCP/IP網路調試排錯
我去年過的軟考,建議你去看電子工業出版社的一套書,根據你現在對網路掌握的情況合適的買書,有些書是不需要的。比如:《網路工程師考試考點分析與真題詳解(網路系統設計與管理篇)》(第二版)
但一下幾本一定要反復的看:
《網路工程師考試題型精解與全真練習》
《網路工程師考試歷年試題分析與解答》
《網路工程師考試沖刺指南》第二版
《網路工程師考試考前沖刺預測卷及考點解析》
《網路工程師考試關鍵考點梳理與考前集訓》
記住,真題是基礎,練習最重要!
很多原題的!!
考試內容: (1)熟悉計算機系統的基礎知識; (2)熟悉網路操作系統的基礎知識; (3)理解計算機應用系統的設計和開發方法; (4)熟悉數據通信的基礎知識; (5)熟悉系統安全和數據安全的基礎知識; (6)掌握網路安全的基本技術和主要的安全協議; (7)掌握計算機網路體系結構和網路協議的基本原理; (8)掌握計算機網路有關的標准化知識; (9)掌握區域網組網技術,理解城域網和廣域網基本技術; (10)掌握計算機網路互聯技術; (11)掌握TCP/IP協議網路的聯網方法和網路應用技術; (12)理解接入網與接入技術; (13)掌握網路管理的基本原理和操作方法; (14)熟悉網路系統的性能測試和優化技術,以及可靠性設計技術; (15)理解網路應用的基本原理和技術; (16)理解網路新技術及其發展趨勢; (17)了解有關知識產權和互聯網的法律法規; (18)正確閱讀和理解本領域的英文資料。Hello,希望有幫助.更多到chinaunix,365testing泡泡
Ⅳ 計算機網路TCP/IP等相關協議與原理
網路分層(由下到上):物理層、數據鏈路層、網路層、傳輸層、會話層、表示層、應用層。
重點在: 物理層、數據鏈路層(這兩層需要了解基本的原理)、網路層、傳輸層(這兩層需要了解功能作用,原理和相關的一些協議)、應用層(http協議)。
開始之前先跟大家說一下協議,很多人不知道協議是什麼,尤其是剛接觸這方面東西的時候,一聽協議,感覺很吊的樣子,但是又不知其所雲,其實,協議可以理解為:一個雙方通信需要共同遵守的規范。
記住,在網路分層協議中,所有下層的協議的作用就是為了上層服務,謹記!
接下來,我跟大家一一道來,首先登場的是物理層。
這一層主要就是跟硬體打交道,這一層也是所有上層的基礎。
數據鏈路層強調的是一種傳輸規范,這是指什麼呢?說白了,就是指每次傳輸的最大容量(最大傳輸單元),數據組織結構(乙太網幀的概念)、傳輸的目的地等。
MAC地址:燒錄在網卡ROM中的一串數字,長度48bit。
分組交換:較大數組分割為較小數組,依次發送。
原因是數據鏈路層有不定長度的最大傳輸單元。
乙太網的幀的概念:前導碼(8位元組)+本體(首部+數據+FCS)
原理:依靠MAC地址決定向哪個端發送數據,需要「轉發表」。
轉發表是交換機自動學習得到的。
作用:保證不同數據鏈路層下數據的可達性。
ARP協議(獲取MAC地址)和ICMP協議(數據發送異常通知)
作用:識別對端信息的地址。地址為32位正整數表示,分為四個部分,每個部分由8位整數組成。說白了,是識別要傳輸目的地的地址。
每位對應十進制范圍:0-255。
[注]:網路標識和主機標識是為了定址而發明。
A類:
第一位為「0」的地址,前8位為網路標識,0.0.0.0-127.0.0.0是A類IP地址的理論范圍。
B類:
前兩位為「10」的地址,前16位是網路標識,128.0.0.0-191.255.0.0,主機標識16位。
C類:
前三位為「110」的地址。前24位網路標識,192.0.0.0-223.255.255.0,主機標識為8位。
D類:
前4位為「1110」的地址。網路標識為32位,沒有主機標識。
IP地址長度僅可表達43億左右的主機數目,(區分網路標識和主機標識)共32位(一段連續的0和一段連續的1)組成,1的長度就表示網路標識的長度。
子網掩碼的作用是區分IP地址是否在同一子網內。
分組數據發送到目標地址的功能,持有路由控製表,它在路由控製表中查找目標IP地址對應的下一個路由器地址。
源主機--->網卡--->路由器1(路由器控製表)--->路由器2--->網卡--->目標主機
IP協議最大包為2的16次冪,等於65536.
接下來介紹幾個IP協議相關的協議或技術:
將域名轉化為IP地址(域名也是分層處理請求的,每一層都有對應的DNS伺服器)。
通過目標IP地址,定位下一個接收數據包的網路設備(主機或路由器)的MAC地址。
在數據鏈路層發送廣播,如果沒有ARP技術,就沒有辦法穿透中間的伺服器(ARP請求+ARP應答)。
NAT:用於將區域網中的私有地址轉換為全局IP地址的技術。
每個路由器只有一個對外的全局IP地址,如果一個內網主機都向外通訊,怎麼辦?
就要使用到NATP技術,可轉為TCP和UDP埠號。
不同的內網IP被轉換成同一個公共的IP,但是NAPT技術可以使用不同的埠加以區分。
NAT和NAPT都需要路由器內部維護一張轉換表。
舉例:TCP首次SYN時,會生成這個表,關閉連接時會發出FIN包,收到這個包應答時轉換表會被刪除。
定義:實現應用程序之間的通信。
TCP:面向有連接的協議,建立連接需要3步,關閉連接需要4步。
具備數據重傳、流量控制等功能,能正確處理丟包功能並有效利用寬頻。
UDP:比較適合做實時視頻和音頻,效率比TCP高。
TCP有5個要素:源IP地址、目標IP地址、源埠號、目標埠號、協議號,同一台機器的埠號可以區分為不同的應用程序。
校驗和=源IP地址(IP協議首部)+目標IP地址(IP協議首部)+源埠+目標埠
包長度=首部長度+數據長度
應該可以從下圖看出來,TCP的首部比UDP的首部要復雜的多,所以也一定會影響的傳輸的速度和效率。
簡單介紹一下首部的相關參數:
序列號:發送數據的位置
確認應答號:下一次應用接收到的數據的序列號
數據偏移:TCP首部的長度,單位為4位元組。
控制位:長度為8位。
窗口大小:用於表示從應答號開始能夠接受多少個8位位元組。
緊急指針:盡在URG控制位為1時有效,表示緊急數據的末尾在TCP數據部分中的位置。
接下來最重要的一個技術點來了:
以下是通俗話解釋連接和斷開過程:
建立連接的過程:
1.client:我要建立連接。
2.server:我知道你要建立連接了,我這邊沒問題。
3.client:我了解你知道我要建立連接了,開始通信吧!
結束連接的過程:
1.client:我要關閉連接了
2.server:你那邊可以關閉了
3.server:我這邊也准備關閉了
4.client:我已關閉,你可以關閉了
[注]:連接是雙方面的,所以關閉也是要自行關閉的。
數據包重發:保證ACK的值和發送方下次發送數據包的序列號相等。
接收方通過TCP首部中的控制位SYN判斷這個數據是否曾經接收過?接收過就會舍棄。
重傳超時時間(RTO)動態改變,略大於連接往返時間(RTT),RTO有自己的估算公式
定義:無需等待ACK,可以發送的最大數量。(窗口大小由接收端控制)
作用:為了解決發送數據包後,直至ACK確認返回之前,發送端都無法在進行發送的問題。
定義:接收端有緩存區數據溢出(如果窗口較大)
通俗一點的意思就是讓發送方慢一點,免得接收方接收不過來。
TCP會慢啟動演算法得出窗口的大小,對發送數據量進行控制。
發送方擁有一個擁塞窗口,對發送的數據量進行控制。
TCP協議中的窗口是指:發送方和接收方窗口中的最小值。
1.通訊開始,發送方窗口為1。每收到一個ACK確認後,擁塞窗口翻倍。
2.由於指數級增長快,很快就會出現確認包超時。
3.設置慢啟動閾值,它的值為擁塞窗口的大小的一半。
4.將擁塞窗口大小設置為1,重新進入慢啟動過程。
5.慢啟動閾值存在,當擁塞窗口大小達到閾值時,不再翻倍,而是線性增長。
6.隨窗口大小的不斷增長,可以收到三次重復的ACK,進入「快速重發」階段。
7.TCp將慢啟動閾值設置為當前擁塞窗大小的一半,再將擁塞窗口大小設成閾值大小。
8.擁塞窗口又會線性增加,直至下一次出現3次ACK或者超時。
Ⅵ 計算機網路協議
計算機網路的最大特點是通過不同的通信介質把不同廠家、不同操作系統的計算機和其他相關設備(例如列印機、傳達室感器等)連接在一起,打破時間和空間的界限,共享軟硬體資源和進行信息傳輸。然而,如何實現不同傳輸介質上的不同軟硬體資源之間的通令共享呢?這就需要計算機與相關設備按照相同的協議,也就是通信規則的集合來進行通信。這正如人類進行通信、交談時要使用相同的語言一樣。
網路協議(Network Protcol)是計算機網路中互相通信的對等實體間交換信息時所必須遵守的規則的集合。當前的計算機網路的體系結構是以TCP/IP協議為主的Internet結構。對等實體通常是指在計算機網路體系結構中處於相同層次的通信協議進程。網路協議為傳輸的信息宣言嚴格的格式(語法)和傳輸順序(文法)。而且還定義所傳輸信息的詞彙表和這些詞彙所表示的意義(語義)。
既然談到Internet網路,那我們就來看一下網路協議與Internet網路的關系:
Internet網路體系結構以TCP/IP協議為核心。其中IP協議用來給各種不同的通信子網或區域網提供一個統一的互連平台,TCP協議則用來為應用程序提供端到端的通信和控制功能。
事實上,Internet並不是一個實際的物理網路或獨立的計算機網路,它是世界上各種使用統一TCP/IP協議的網路的互連。TCP/IP協議分為4層(通信子網層、網路層、運輸層和應用層)
1、通信子網層(subnetwork layer)
TCP/IP協議的通信子網層與OSI協議的物理層 、數據鏈路層以及網路層的一部分相對應。該層中所使用的協議為各通信子網本身固有的協議,例如乙太網的802.3協議、令牌環網的802.5協議有及分組交互網的X.25協議等。通信子網層的作用是傳輸經網路層處理過的消息。
2、網路層(internet layer)
網路層所使用的協議是IP協議。它把運輸層送來的消息組裝成IP數據包,並把IP數據包傳遞給通信子網層。IP協議提供統一的IP數據格式,以消除各通信子層的差異,從而為信息發送方和接收方提供透明通道。
網路層的主要功能是:①Internet全網址的識別與管理;②IP數據包路由功能;③發送或接收時例IP數據包的長度與通信子網所允許的數據包長度相匹配,例如,乙太網所傳輸的幀長為1500位元組,而ARPA網所傳輸的數據包長1008位元組。當乙太網上的數據幀通過網路層IP協議轉達發給ARPA網時,就要進行數據幀的分解處理。
3、運輸層(transport layer)
運輸層為應用程序提供端到羰通信功能。運輸層有3個主要協議,即傳輸控制的協議(TCP)、用戶數據報協議(UDP)和互連網控制消息協議(ICMP)。
4、應用層(application layer)
應用層為用戶提供所需要的各種服務。它提供的主要服務有:過程登錄,用戶可以使用異地主機;文件傳輸,用戶可在不同主機之間傳輸文件;電子郵件,用戶可通過主機和終羰互相發送信件;Web伺服器,發布和訪問具有超文本格式HTML的各種信息。|
Ⅶ 確認號什麼時候有意義
【計算機通信網路復習】TCP協議 原創
2021-05-09 20:40:37
再不學習就會變成xzy姐姐那樣!
碼齡4年
關注
1. TCP協議的報文格式
TCP報文也稱為報文段(segment),分首部和數據兩部分。首部的前20個位元組是固定的,後面是選項,因此TCP首部最小長度是20位元組。選項部分長度可變,最多為40位元組。
TCP協議報文格式
(1)源/目的埠(16bits),埠號加上IP地址構成了一個套接字socket。
(2)序號(32bits),本報文段發送數據第一個位元組序號,使用隨機數產生器產生一個初始序號。
(3)確認號(32bits),當ACK=1時有意義,當ACK=0時沒有意義。期望收到對方下次發送數據第一個位元組序號。(也就是期望收到的下一個報文段的首部中的序號)由於序號欄位長度為32bit,可對4GB數據進行編號,以保證序號重復使用時,舊序號數據早已在網路中消失。
(4)數據偏移(4bits),它指出數據開始的地方離TCP報文段的起始處有多遠,這是由於TCP報文中含有選項和填充欄位。實際上就是TCP報文段首部的長度,其值所表示的距離單位是32比特(以4位元組為一個單元來計算的)。
(5)保留(6bits),供今後使用,目前置為0。
(6)控制比特(6bits)
緊急位URG:URG=1時,報文應盡快傳送(相當於加速數據),不按原來順序來傳送。要與緊急指針(Urgent Pointer)欄位配合使用。緊急指針指出在本報文段中的緊急數據的最後一個位元組的序號。緊急指針使接收方可以知道緊急數據有多長。
在這里插入圖片描述
確認位ACK:ACK=1時有意義,代表這個數據包是響應數據包,與接收序號(確認序號)配合使用。
推送位PSH(PuSH):PSH=1時,當兩個進程進行互動式通信時,一端應用進程希望在輸入一個命令之後能夠立即得到對方的響應,立即創建一個報文段發送到對方。
在這里插入圖片描述
復位RST(ReSeT):RST=1時,表明出現嚴重差錯,必須釋放連接,然後再重建連接。還可以用來拒絕一個非法報文段或拒絕打開一個連接。
同步位SYN:在建立連接時使用;SYN=1且ACK=0時,表明這是連接請求報文段。對方若同意建立連接,則應在發回的報文段中SYN=1且ACK=1。因此,SYN=1,就表示這是一個連接請求或連接接受報文,而ACK位的值用來區分是哪一種報文(請求/接受)。
終止位FIN(FINal):FIN=1,表明發送位元組已經發完,要求釋放傳輸連接。
(7)窗口(16bits),用來控制對方發送的數據量。用接收方的接收能力來控制發送方的數據發送量,數值是動態變化的。
(8)校驗和(32bits),包括首部和數據這兩部分,要在TCP報文段的前面加上一個12位元組偽首部。
TCP在校驗前,需要根據IP數據包增加偽首部。偽首部增加了TCP校驗和的檢錯能力:檢查TCP報文是否收錯了(目的IP地址)、傳輸層協議是否正確(傳輸層協議號)等。
在這里插入圖片描述
(9)緊急指針(16bits),同時與URG位並用,指明緊急數據之後正常數據的起始位置。
(10)選項(0-40bits),單位元組選項有兩個:選項結束和無操作。多位元組選項有三個:最大報文段長度、窗口擴大因子以及時間戳。
2. TCP連接的建立與釋放
2.1. TCP連接建立
(1)需要經過**「三次握手」**(Three-Way Handshake)。這是為了對每次發送的數據量進行跟蹤與協商,確保數據段的發送和接收同步,根據所接收到的數據量而確認數據發送、接收完畢後何時撤消聯系,並建立虛連接。
(2)TCP 連接建立的「三次握手」:
**最初,**客戶端處於CLOSE(關閉)狀態,伺服器處於LISTEN(收聽)狀態。
第一次握手:客戶端發送SYN包(seq=x, ack=y)到伺服器,並進入SYN_SENT狀態,等待伺服器確認。
第二次握手:伺服器收到客戶端的SYN包必須確認,同時伺服器也要發送SYN+ACK包(seq=y, ack=x+1);伺服器進入SYN_RECV狀態。
第三次握手:伺服器收到客戶端的SYN包必須確認,同時伺服器也要發送SYN+ACK包(seq=y, ack=x+1);伺服器進入SYN_RECV狀態。
TCP連接的「三次握手」
2.2. TCP連接釋放
(1)需要經過**「四次揮手」**(Four-Way Wavehand)。由於TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。
(2)TCP 連接釋放的「四次揮手」:
此時,客戶端和伺服器均處於ESTABLISHED狀態。
第一次揮手:客戶端向伺服器發送FIN包(seq=u, ack=v),進入FIN_WAIT_1狀態;u=客戶端上次發送最後一個位元組序號加1。
第二次揮手:伺服器收到FIN包後不回復FIN包,而回復ACK包(seq=v, ack=u+1),v=伺服器上次發送最後一個位元組序號加1;伺服器通知應用程序客戶端要求關閉連接,伺服器進入CLOSE_WAIT狀態,即半關閉狀態,此時客戶端雖沒有數據要發送,但伺服器可能有數據要發送;客戶端進入CLOSE_WAIT_2狀態,且要等待一段時間。
第三次揮手:伺服器將最後的數據發送完畢後,向客戶端發送FIN包(seq=w, ack=u+1),由於在半關閉狀態,伺服器很可能又發送了一些數據,假定此時的序列號為seq=w;伺服器進入LAST_ACK狀態,等待客戶端確認。
第四次揮手:客戶端收到FIN包後,向伺服器發送ACK包(seq=u+1, ack=w+1),表示連接徹底釋放。
在這里插入圖片描述
3. TCP協議流量控制、擁塞控制
(1)TCP不是按傳送的報文段編號。TCP將所要傳送的整個報文(可能包括多個報文段)看成是由一個個位元組組成的數據流,然後對每一個位元組編號。在連接建立時,雙方商定初始序號。TCP將每一次傳送的報文段中的第一個數據位元組的序號放在TCP首部的序號欄位中。TCP的確認是對接收到的數據的最高序號(即收到的數據流中的最後一個序號)表示確認。但返回的確認序號是已收到的數據的最高序號加1。也就是確認序號即表示期望下次收到的第一個數據位元組的序號。
(2)TCP採用滑動窗口方式進行流量控制。窗口大小以位元組為單位。TCP報文段首部窗口欄位的數值是當前設定的接收窗口數值。發送窗口在連接建立時由雙方商定,但在通信的過程中,接收方可根據自己的資源情況,隨時動態地調整接收窗口的大小,然後告訴發送方,使發送方的窗口和自己的接收窗口一致。
在這里插入圖片描述
(3)擁塞控制用於防止由於過多的報文進入網路,而造成路由器與鏈路過載。
擁塞窗口:源端一次最多能發送的數據包數量。
門限窗口:擁塞窗口按指數增長還是線性增長的界限。
擁塞控制技術:
慢開始:每出現一次擁塞超時,擁塞窗口都降低到1。
擁塞避免:當擁塞窗口增大到門限窗口值時,就將擁塞窗口指數增長速度降低為線性增長,避免網路再次出現擁塞。
加速遞減:每出現一次擁塞超時,就將門限窗口值減半。
在這里插入圖片描述
TCP每發送一個報文段,就設置一次定時器。只要定時器設置的重發時間已到而沒有收到確認,就要重發這一報文段。計算往返時延的自適應演算法(加權法):
在這里插入圖片描述
文章知識點與官方知識檔案匹配
網路技能樹跨區域網路的通信學習網路層的作用
22781 人正在系統學習中
打開CSDN APP,看更多技術內容
TCP中的RST標志(Reset)詳解_大葉子不小的博客_rst狀態
RST表示復位,用來異常的關閉連接,在TCP的設計中它是不可或缺的。就像上面說的一樣,發送RST包關閉連接時,不必等緩沖區的包都發出去(不像上面的FIN包),直接就丟棄緩存區的包發送RST包。而接收端收到RST包後,也不必發送ACK包來確認。
繼續訪問
TCP詳解_binary~的博客_tcp 詳解
復位RST(ReSeT) 當 RST=1 時,表明 TCP 連接中出現嚴重差錯(如由於主機崩潰或其他原因),必須釋放連接,然後再重新建立運輸連接 同步SYN(SYNnchronization) 在連接建立時用來同步序號。當 SYN=1 而 ACK=0 時,表明這是一個連接請求報文...
繼續訪問
TCP 四種定時器(重傳定時器,堅持計時器,保活定時器,時間等待計時器)
主要介紹了TCP 四種定時器,重傳定時器,堅持計時器,保活定時器,時間等待計時器的相關資料,需要的朋友可以參考下
TCP協議的RST標志位
TCP首部欄位有6個是flags,每個標志位有特殊的含義,它們可以單獨存在,也可以同時存在。對於接收方,不同的標志位代表不同的意思,需要做正確的處理 Flags 可以在點擊乙太網報文結構查看各協議層協議首部欄位及其含義 TCP協議首部格式 上圖標注的紅圈裡有6個標志位,每個標志位佔用一個比特 URG 緊急指針有效標識。它告訴系統此報文段中有緊急數據,應盡快傳送(相當於高優先順序的數據) ACK 確認序號有效標識。只有當ACK=1時確認號欄位才有效。當ACK=0時,確認號無效 PSH 標識接收方.
繼續訪問
TCP基礎_yao00037的博客_tcp rst位為1時
RST:該位為1時,表示TCP連接中出現異常必須強制斷開連接。 SYN:該位為1時,表示希望建立連接,並在其序列號的欄位進行序列號初始值的設定。 FIN:該位為1時,表示今後不會再有數據發送,希望斷開連接。當通信結束希望斷開連接時,通信雙方...
繼續訪問
TCP的連接狀態標識 (SYN, FIN, ACK, PSH, RST, URG)
TCP層,有個FLAGS欄位,這個欄位有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG.其中,對於我們日常的分析有用的就是前面的五個欄位。它們的含義是:(1)SYN表示建立連接,(2)FIN表示關閉連接,(3)ACK表示響應,(4)PSH表示有 DATA...
繼續訪問
計算機網路
1.網路協議
繼續訪問
最新發布 TCP協議
7.緩沖區:操作系統會給每個進程分配空間,每創建一個套接字就會給套接字分配一個發送和接受緩沖區。sendto就是從發送緩沖區里拷貝數據,recvfrom從接受緩沖區拷貝數據 查看接受緩沖區和發送緩沖區的大小:getsocket(sock,lebvel,optval,optlen);65536 64K sendto:阻塞模式:如果緩沖區里沒有足夠的空間,就等到空間足夠大正在把數據拷貝到發送緩沖區中 非阻塞模式:如果緩沖區沒有足夠的空間就有多少拷貝多少,拷貝完立即返回,返回的是實際拷貝的位元組數 //1.
繼續訪問
計算機網路-TCP/IP_純情程序猿的博客_計算機網路tcp/ip
PSH(Push 推送位):告訴對方收到該報文段後是否立即把數據推送給上層。如果值為 1,表示應當立即把數據提交給上層,而不是緩存起來。 RST(復位):表示是否重置連接。如果 RST=1,說明 TCP 連接出現了嚴重錯誤(如主機崩潰),必須釋放連接,...
繼續訪問
TCP解析_越學習越無知的博客_tcp解析
RST (ReSeT): 當 RST=1 時,表明 TCP 連接中出現嚴重差錯(如由於主機崩潰或其他原因),必須釋放連接,然後再重新建立運輸連接 同步SYN: 同步 SYN = 1 表示這是一個連接請求或連接接受報文 ...
繼續訪問
TCP數據報首部
源埠(Source Port),目標埠(Destination Port) 各2位元組 源埠號,標識主機上發起傳送的應用程序;目的埠標識主機上傳送要到達的應用程序。源端和目的端的埠號,用於尋找發端和收端應用進程。這兩個值加上I P首部中的源端I P地址和目的端I P地址唯一確定一個TCP連接。一個I P地址和一個埠號有時也稱為...
繼續訪問
TCP協議的確認重傳機制
TCP協議是面向連接的傳輸層協議,TCP的傳輸特點具有可靠性,它具有面向連接服務來確保可靠穩定傳輸,而確認重傳機制是TCP協議保證可靠穩定傳輸最重要的機制,他包括累計確認、超時時間計算、快速重傳等幾個方面。 確認重傳機制 在發送一個數據之後,就開啟一個定時器,若是在這個時間內沒有收到發送數據的ACK確認報文,則對該報文進行重傳,在達到一定次數還沒有成功時放棄並發送一個復位信號。 ...
繼續訪問
17-tcp首部分析二_songly_的博客
RST:表示重建或重置,如果RST = 1表示tcp連接出現嚴重的錯誤(主機崩潰或其他原因),必須先釋放連接,然後再重新建立連接。同時RST還可以用於拒絕一個非法報文段或拒絕打開一個連接。 SYN:表示在建立連接時同步序號,如果SYN ...
繼續訪問
【TCP/IP詳解】TCP重置報文段及RST常見場景分析
本文簡單講述了TCP中產生RST的常見場景,指出了產生`RST`的三個條件分別是:1. 目的地為某埠的`SYN`到達,然而在該埠上並沒有正在監聽的伺服器;2. TCP想取消一個已有連接;3. TCP接收到一個根本不存在的連接上的分節。並給出了程序代碼及抓包結果......
繼續訪問
網路相關的面試題
網路相關的面試題 伺服器端不調用accept會發生什麼 不調用accept時,也能建立連接,即三次握手完成。但不能進行API的控制,即不能進行繼續通訊。以及建立好連接的隊列大大小為:backlog。從而在Unix系統伺服器中,若客戶端調用 connect() ,客戶端連接超時失敗。而在Linux系統中,若客戶端調用 connect()。TCP 的連接隊列滿後,Linux 伺服器不會拒絕連...
繼續訪問
網路編程面試題整理(四)
1:重傳機制 TCP每發送一個報文段,就設置一次定時器。只要定時器設置的重發時間到而還沒有收到確認,就要重發這一報文段。 TCP環境報文往返時間不定、有很大差別。 A、B在一個區域網絡,往返時延很小 A、C在一個互聯網內,往返時延很大 因此,A很難確定一個固定的、與B、C通信都適用的定時器時間。 TCP採用了一種自適應演算法。這種演算法記錄每一個報文段發出的時間,以及收到相應的確認報文段的時間。...
繼續訪問
TCP的狀態:SYN, FIN, ACK, PSH, RST, URG 簡介及 ACK確認機制
1、TCP的狀態FLAGS欄位狀態 在TCP層,有個FLAGS欄位,這個欄位有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG. 對於我們日常的分析有用的就是前面的五個欄位:它們的含義是: SYN表示建立連接, FIN表示關閉連接, ACK表示響應, PSH表示有 DATA數據傳輸, RST表示連接重置。 其中,ACK是可能與SYN,FIN等同時使用的,比如:SYN和ACK可能同時為1,它表示的就是建立連接之後的響應,如果只是單個的一個SYN,它表示的只是建立連接。T..
繼續訪問
TCP/IP模型之傳輸層(TCP/UDP協議)
網路層,數據鏈路層與物理層實現了網路中主機之間的數據通信,計算機網路的本質活動是實現分布在不同地理位置的主機之間的進程通信,以實現應用層的各種網路服務功能。1. 傳輸層的功能傳輸層的主要功能是實現分布式進程之間的通信。利用網路層提供的服務,在源主機的應用進程與目的主機的應用進程建立「端—端」連接。傳輸層之間傳輸的報文稱為「傳輸協議數據單元(TPDU)」,TPDU有效載荷稱為應用層的數據。2. 埠...
繼續訪問
TCP選項
TCP首部可以由多達40位元組的可選信息。選項用於把附加信息傳遞給終點,或用來填充對齊其他選項。我們將定義兩大類選項:1位元組選項和多位元組選項。第一類選項包括兩種選項:選項列表結束和誤操作。在大多數實現中,第二類選項包括了五種選項:最大報文段長度、窗口擴大因子、時間戳、允許SACK和SACK,見下圖。 選項結束(EOF) 選項結束(end of optio...
繼續訪問
3.TCP協議頭詳解(包含選項部分)
1.TCP協議頭格式 2.各欄位說明 3.選項部分詳解
繼續訪問
TCP報文段首部中「窗口」欄位
在TCP報文段的首部中有一個「窗口大小」的欄位,該欄位佔16bit=2byte。該欄位主要用於TCP滑動窗口進行流量控制,很多人喜歡把TCP的MSS和「窗口大小」欄位混淆,今天在這了做一個區分說明。 MSS是TCP報文段中數據部分的最大長度,如果上層交付下來的數據超過MSS就要對交付下來的數據進行分段。在TCP連接的第一次、第二次握手中會分別告知對方MSS,從而起到通信雙方協商MSS的效果。
繼續訪問
論TCP/IP協議的體系的結構及其各層協議
目錄 1.1 TCP/IP協議的歷史和發展過程 1.2 TCP/IP協議的體系結構模型 2.1 IP網際層的功能 2.2 IP地址及其轉換 2.2.1 IP地址 2.2.2 IP地址的轉換 2.2.3 子網技術 2.3 IP數據報的格式 2.4 Internet控制報文協議ICMP 3.1 TCP運輸層協議概述 3.2 埠及套接字 3.3
繼續訪問
計算機網路——傳輸層
一、傳輸層提供的服務1.傳輸層的功能(1)提高服務質量(2)多路復用(3)分段與重新組裝。2.傳輸層定址與埠硬體埠是不同硬體設備進行交互的介面,而軟體埠是應用層的各種協議進程與傳輸實體進行層間交互的一種地址。無連接服務與面向連接服務面向連接服務就是在數據交換之前,必須先建立連接,當數據交換結束後,則應該終止這個連接。在無連接服務的情況下,兩個實體之間的通信不需要先建立好一個連接,因此其下層的有
繼續訪問
熱門推薦 TCP序列號和確認號詳解
TCP序列號和確認號詳解在網路分析中,讀懂TCP序列號和確認號在的變化趨勢,可以幫助我們學習TCP協議以及排查通訊故障,如通過查看序列號和確認號可以確定數據傳輸是否亂序。但我在查閱了當前很多資料後發現,它們大多隻簡單介紹了TCP通訊的過程,並沒有對序列號和確認號進行詳細介紹,結合實例的講解就更沒有了。近段時間由於工作的原因,需要對TCP的序列號和確認號進行深入學習,下面便是我學習後的一些知識點總結
繼續訪問
TCP傳輸中序號與確認序號的交互
本實驗通過SSH遠程登錄伺服器,然後使用Wireshark抓包分析。開頭的三次握手已經省略。關於序號的交互過程,需要記住一點:TCP首部中的確認序號表示已成功收到位元組,但還不包含確認序號所指的位元組,希望下一次能收到確認序號所指的位元組。 當在遠程登錄軟體上鍵入命令時,客戶端便開始了數據的發送,TCP頭如下: 初始化序列號ISN = 1,這個序列號是客戶端對發送數據的一個標
繼續訪問
tcp保留欄位重置為rst=1則表示