TCP/IP?狀態(tài)機(jī) 在文安等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè),文安網(wǎng)站建設(shè)費(fèi)用合理。 在TCP層,有個(gè)FLAGS字段,這個(gè)字段有以下幾個(gè)標(biāo)識(shí):SYN, FIN, ACK, PSH, RST, URG. 其中,對(duì)于我們?nèi)粘5姆治鲇杏玫木褪乔懊娴奈鍌€(gè)字段。 它們的含義是: SYN表示建立連接, FIN表示關(guān)閉連接, ACK表示響應(yīng), PSH表示有 DATA數(shù)據(jù)傳輸(有真正的TCP數(shù)據(jù)包內(nèi)容被傳遞) RST表示連接重置(是在FIN之后才會(huì)出現(xiàn)為1的情況) |
三次握手主要是要初始化Sequence Number 的初始值。也就是上圖中的 a 和 b。這個(gè)號(hào)在以后的數(shù)據(jù)通信中,在client端按發(fā)送順序遞增,在server端按遞增順序重新組織,以保證應(yīng)用層接收到的數(shù)據(jù)不會(huì)因?yàn)榫W(wǎng)絡(luò)問(wèn)題亂序。 建立一個(gè)穩(wěn)定的雙向連接,最少需要3次通信 以張三給李四打電話為例? |
1、雙方可以同時(shí)主動(dòng)關(guān)閉,也可以由一方主動(dòng)關(guān)閉帶動(dòng)另一方被動(dòng)關(guān)閉只不過(guò),通常以一方主動(dòng)另一方被動(dòng)舉例(如圖,client主動(dòng)server被動(dòng)),所以看上去是所謂的4次揮手。如果兩邊同時(shí)主動(dòng)斷連接,那么雙方都會(huì)進(jìn)入CLOSING狀態(tài),然后到達(dá)TIME_WAIT狀態(tài),最后超時(shí)轉(zhuǎn)到CLOSED狀態(tài) 2、為什么建立連接協(xié)議是三次握手,而關(guān)閉連接卻是四次握手呢? TCP是全雙工的,每個(gè)方向都需要單獨(dú)關(guān)閉(即發(fā)送一個(gè)FIN),發(fā)一個(gè)FIN之后意味著一個(gè)方向沒(méi)有數(shù)據(jù)流動(dòng),但是可以收。 以張三給李四掛電話為例 張三:我要掛電話了【FIN。seq=x】 李四:好的【ack。seq=x+1】 李四:我也掛了【fin,seq=b,ack=X+1】? 張三:好的【ack,seq=b+1】 |
三次握手分析? HTTP 協(xié)議就是建立在TCP鏈接上的 我們通過(guò)訪問(wèn)一個(gè)網(wǎng)頁(yè)。 使用wireshark分析TCP三次握手建立連接的過(guò)程,Wireshark的過(guò)濾規(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) 1、seq=0(每發(fā)一次包seq的值加1) TCP流: |
四次揮手: 1、TCP協(xié)議規(guī)定通過(guò)發(fā)送一個(gè)FIN段(FIN被置位)來(lái)發(fā)起關(guān)閉操作,同時(shí)FIN報(bào)文段還包含著對(duì)最近收到的數(shù)據(jù)進(jìn)行ACK。 2、接收端對(duì)FIN進(jìn)行確認(rèn),發(fā)送ACK=k+1給發(fā)送端 3、接收端將連接關(guān)閉發(fā)送給上層應(yīng)用程序,由應(yīng)用程序發(fā)起連接關(guān)閉操作。此時(shí)接收端由被動(dòng)關(guān)閉連接壯成主動(dòng),并發(fā)送FIN報(bào)文段給發(fā)送端。報(bào)文的序列號(hào)為L(zhǎng)(這里也可看出上一步驟中發(fā)送ACK序列號(hào)一樣,因?yàn)锳CK不占用序列號(hào), 所以這里的FIN的序列號(hào)也為L(zhǎng))。 4、發(fā)送端接收到FIN后,發(fā)送回ACK給接收端后,TCP連接終止。如果FIN丟失,發(fā)送FIN的那端需要重新發(fā)送FIN,直到接收到ACK為止。 |
相對(duì)于的狀態(tài)機(jī) |
12種狀態(tài)機(jī):
歡迎學(xué)習(xí):TCP的狀態(tài)機(jī)與重傳機(jī)制