TCP/IP狀態(tài)機

TCP/IP?狀態(tài)機

在文安等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),文安網(wǎng)站建設(shè)費用合理。

在TCP層,有個FLAGS字段,這個字段有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG.

其中,對于我們?nèi)粘5姆治鲇杏玫木褪乔懊娴奈鍌€字段。

它們的含義是:

SYN表示建立連接,

FIN表示關(guān)閉連接,

ACK表示響應(yīng),

PSH表示有 DATA數(shù)據(jù)傳輸(有真正的TCP數(shù)據(jù)包內(nèi)容被傳遞)

RST表示連接重置(是在FIN之后才會出現(xiàn)為1的情況)

TCP/IP狀態(tài)機

三次握手主要是要初始化Sequence Number 的初始值。也就是上圖中的 a 和 b。這個號在以后的數(shù)據(jù)通信中,在client端按發(fā)送順序遞增,在server端按遞增順序重新組織,以保證應(yīng)用層接收到的數(shù)據(jù)不會因為網(wǎng)絡(luò)問題亂序。

建立一個穩(wěn)定的雙向連接,最少需要3次通信

以張三給李四打電話為例?
打電話?
張三:喂,李四聽得到么【seq=0】??
李四: 嗯,我聽到你說話了【ack=seq+1】,你能聽到我么【seq=0】??
張三:我能聽到你【ack=seq+1】

TCP/IP狀態(tài)機

1、雙方可以同時主動關(guān)閉,也可以由一方主動關(guān)閉帶動另一方被動關(guān)閉只不過,通常以一方主動另一方被動舉例(如圖,client主動server被動),所以看上去是所謂的4次揮手。如果兩邊同時主動斷連接,那么雙方都會進入CLOSING狀態(tài),然后到達TIME_WAIT狀態(tài),最后超時轉(zhuǎn)到CLOSED狀態(tài)


2、為什么建立連接協(xié)議是三次握手,而關(guān)閉連接卻是四次握手呢?

TCP是全雙工的,每個方向都需要單獨關(guān)閉(即發(fā)送一個FIN),發(fā)一個FIN之后意味著一個方向沒有數(shù)據(jù)流動,但是可以收。
這是因為服務(wù)端的LISTEN狀態(tài)下的SOCKET當收到SYN報文的連接請求后,它可以把ACK和SYN(ACK起應(yīng)答作用,而SYN起同步作用)放在一個報文里來發(fā)送。但關(guān)閉連接時,當收到對方的FIN報文通知時,它僅僅表示對方?jīng)]有數(shù)據(jù)發(fā)送給你了;但未必你所有的數(shù)據(jù)都全部發(fā)送給對方了,所以你可能未必會馬上會關(guān)閉SOCKET,也即你可能還需要發(fā)送一些數(shù)據(jù)給對方之后,再發(fā)送FIN報文給對方來表示你同意現(xiàn)在可以關(guān)閉連接了,所以它這里的ACK報文和FIN報文多數(shù)情況下都是分開發(fā)送的。

以張三給李四掛電話為例

張三:我要掛電話了【FIN。seq=x】

李四:好的【ack。seq=x+1】

李四:我也掛了【fin,seq=b,ack=X+1】?

張三:好的【ack,seq=b+1】

三次握手分析?

HTTP 協(xié)議就是建立在TCP鏈接上的

我們通過訪問一個網(wǎng)頁。 使用wireshark分析TCP三次握手建立連接的過程,
Wireshark的過濾規(guī)則,只顯示我們需要的數(shù)據(jù)

(ip.src==10.108.15.43 and ip.dst==10.108.16.3) or (ip.src==10.108.16.3 and ip.dst==10.108.15.43)

TCP/IP狀態(tài)機

1、seq=0(每發(fā)一次包seq的值加1)
2、ack=接收到的seq+1

TCP/IP狀態(tài)機

TCP/IP狀態(tài)機

TCP流:

TCP/IP狀態(tài)機

四次揮手:

TCP/IP狀態(tài)機

TCP/IP狀態(tài)機

1、TCP協(xié)議規(guī)定通過發(fā)送一個FIN段(FIN被置位)來發(fā)起關(guān)閉操作,同時FIN報文段還包含著對最近收到的數(shù)據(jù)進行ACK。

2、接收端對FIN進行確認,發(fā)送ACK=k+1給發(fā)送端

3、接收端將連接關(guān)閉發(fā)送給上層應(yīng)用程序,由應(yīng)用程序發(fā)起連接關(guān)閉操作。此時接收端由被動關(guān)閉連接壯成主動,并發(fā)送FIN報文段給發(fā)送端。報文的序列號為L(這里也可看出上一步驟中發(fā)送ACK序列號一樣,因為ACK不占用序列號,

所以這里的FIN的序列號也為L)。

4、發(fā)送端接收到FIN后,發(fā)送回ACK給接收端后,TCP連接終止。如果FIN丟失,發(fā)送FIN的那端需要重新發(fā)送FIN,直到接收到ACK為止。

相對于的狀態(tài)機

TCP/IP狀態(tài)機

12種狀態(tài)機:

TCP/IP狀態(tài)機

歡迎學習:TCP的狀態(tài)機與重傳機制

分享題目:TCP/IP狀態(tài)機
轉(zhuǎn)載來于:http://bm7419.com/article12/jdcpgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、軟件開發(fā)、域名注冊手機網(wǎng)站建設(shè)、全網(wǎng)營銷推廣云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)