計算機基礎知識 TCP

2021-07-26 23:28:05 字數 3124 閱讀 6686

tcp(傳輸控制協議)

tcp是面向連線的,在通訊前需要首先建立連線,通訊結束時需要釋放連線。

tcp特點

tcp提供可靠交付服務:tcp傳送的資料無重複,無丟失,無錯誤,與傳送端順序一致

tcp是面向位元組流的:tcp以位元組為單位

tcp提供全雙工通訊:tcp的兩端既可作為傳送端也可作為接收端

一條tcp連線的兩端只能有兩個端點:tcp只能提供點到點的通訊

tcp的識別符號tcp有7種識別符號,用於表示tcp報文的性質。它們的值只能為0或1

這裡主要介紹常見的幾種識別符號

*urg=1

當urg=1時,表示本資料報的資料部分包涵緊急資訊,此時緊急指標有效

ack=1

ack被置為1後確認號字段才有效

此外,tcp規定,在連線建立後傳送的所有報文段都必須把ack置1

rst=1

當該值為1時,表示當前tcp連線出現嚴重問題,必須釋放重新連線

syn=1

syn在建立連線時使用

當syn=1,ack=0時,表示當前報文段是乙個連線請求報文

當syn=1,ack=1時,表示當前報文段是乙個同意建立連線的應答報文

fin=1

fin=1,表示此報文段是乙個釋放連線的請求報文

起初,服務端和客戶端都為closed狀態,在通訊開始前,客戶端和服務端都要建立各自的傳輸控制塊(tcb)。

伺服器建立完tcb後便進入listen狀態,此時準備接受客戶端傳送來的鏈結請求。

第一次握手

客戶端向服務端傳送請求連線報文,該報文段的頭部中syn=1,ack=0,seq=x。請求傳送後,客戶端便進入syn-sent狀態。

syn=1, ack=0表示該報文為請求連線報文

seq=x,表示本次tcp通訊的位元組流的初始序號

tcp規定syn=1的報文段不能有資料部分,但是要消耗掉乙個序號

第二次握手服務端收到連線請求報文後,如果同意連線,則會傳送乙個應答:syn=1, ack=1, seq=y,ack=x+1,該應答報文傳送完成後,服務端便進入syn-rcvd狀態

syn=1, ack=1,表示該報文為同意連線的應答報文

seq=y,表示服務端作為傳送者時,傳送位元組流的初始序號

ack=x+1,表示服務端希望下乙個資料報傳送序號是從x+1開始的位元組流

第三次握手當客戶端接收到同意連線的應答報文時,還需向服務端傳送乙個確認報文段,表示:服務端傳送過來的同意連線的應答報文已成功接收到。

該報文段的頭部為:ack=1,seq=x+1,ack=y+1

客戶端傳送完這個報文段後,便進入了established狀態,服務端收到這個應答報文後,也進入established狀態,此時整個連線建立完成。

答案是不行

三次握手的目的是:防止實效的請求連線報文段被服務端接收,從而產生錯誤

如果連線只建立兩次握手,客戶端並無大的改變,仍然需要獲得服務端的應答報文後進入established狀態,而此時,服務端在接收到請求連線報文後就進入established狀態;

如果網路堵塞,客戶端傳送的請求連線報文遲遲無法到達服務端,客戶端請求超時就會重新傳送連線請求,此時,如果服務端正確的接受了該次連線請求,並正確應答,雙發便開始通訊,接收通訊時釋放連線;

如果此時那個實效的連線請求到達了服務端,由於只有兩次握手,服務端接收到請求連線報文後就進入established狀態,等待客戶端傳送資料,或者主動傳送資料,但是此時,客戶端早已進入closed狀態,服務端就會一直等待下去,造成服務端連線資源的浪費。

tcp連線是雙向的,其釋放連線需要四步 。

在四次揮手中,前兩次揮手用於斷開乙個方向的連線,後兩次揮手用於斷開另乙個方向的連線

第一次揮手

fin=1; 表示該報文段是乙個鏈結釋放請求

seq=u; 表示a向b傳送的最後乙個位元組序號為u-1

第二次揮手b收到a的連線釋放請求後,會通知相應的應用程式,告訴它a向b方向的鏈結已經釋放,此時b進入close-wait狀態,並向a傳送鏈結釋放的應答,其報文頭包含:ack=1,seq=v,ack=u+1

ack=1;除tcp鏈結請求報文外,tcp通訊過程中所有的資料報的ack都為1,表示應答

seq=v;表示b向a傳送的最後乙個位元組序號為v-1

ack=u+1;表示希望收到從第u+1個位元組開始的報文段,並已經成功接收前u個位元組

a收到該應答,便進入fin-wait-2狀態,等待b傳送連線釋放請求

第二次揮手完成後,a到b方向的鏈結已經釋放,b不會再接受資料,a也不會再向b傳送資料;但是b向a方向的鏈結仍然存在,b可以繼續向a傳送資料

* 第三次揮手*

報文頭中的識別符號含義同上

第四次揮手a收到釋放請求報文後,向b傳送確認應答,此時,a進入time-wait狀態,該狀態會持續2msl時間,若該時間段內,b沒有重新傳送請求的話,a便進入closed狀態,撤銷tcb。當b受到確認應答後,也進入closed狀態,撤銷tcb

目的: 為了確保b收到a的確認應答

如果當a傳送完確認應答之後,直接進入closed狀態,如果該應答丟失,b等待超時,就會重新傳送鏈結釋放請求,但是此時a已經關閉,不會作出任何響應,因此b永遠無法正確關閉。

計算機基礎知識 計算機基礎知識彙總

計算機專業的那六大件 組成原理,作業系統,資料庫,編譯原理,計算機網路,資料結構,其次還得加上分布式的基礎知識,因為現在的系統都變成分布式的了。如果你是做應用層開發的,那幾門課程中的有些內容和日常工作關聯度不大,我挑那些最重要的來說一說,也算是乙個最小集合吧!1,計算機組成原理 如果你不是做作業系統...

計算機基礎知識 關於計算機的基礎知識

一 計算機發展 世界計算機 1 第一台計算機 eniac,1946年,美國研製的世界上第一台計算機,開闢了計算機技術的新紀元。2 計算機之父 馮 諾依曼參與eniac研究,提出計算機的二進位制 五大組成部分 程式控制。3 計算機發展階段 第一代電子管計算機 1946 1958年。第二代電晶體計算機 ...

計算機基礎知識

計算機5大組成單元 輸入單元 輸出單元 cpu內部的控制單元 算術邏輯單元 記憶體。單有cpu是無法運作計算機的,所以計算機還需要其他的介面裝置才能夠實際執行。很顯然,主機板是必不可少的,因為主機板負責把所有的裝置連線起來,讓所有的裝置能夠進行協調通訊。而主機板上面最重要的元件就是主板晶元組了!這個...