新聞中心
建立TCP需要三次握手才能建立,而斷開連接則需要四次握手,本篇將為大家詳細的講解一下TCP的三次握手與四次揮手

成都創(chuàng)新互聯(lián)公司服務(wù)項目包括吳起網(wǎng)站建設(shè)、吳起網(wǎng)站制作、吳起網(wǎng)頁制作以及吳起網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,吳起網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到吳起省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
TCP報文段的首部格式
**序列號seq:**占4個字節(jié),用來標(biāo)記數(shù)據(jù)段的順序,TCP把連接中發(fā)送的所有數(shù)據(jù)字節(jié)都編上一個序號,第一個字節(jié)的編號由本地隨機產(chǎn)生;給字節(jié)編上序號后,就給每一個報文段指派一個序號;序列號seq就是這個報文段中的第一個字節(jié)的數(shù)據(jù)編號。
**確認號ack:**占4個字節(jié),期待收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號;序列號表示報文段攜帶數(shù)據(jù)的第一個字節(jié)的編號;而確認號指的是期望接收到下一個字節(jié)的編號;因此當(dāng)前報文段最后一個字節(jié)的編號+1即為確認號。
**確認ACK:**占1位,僅當(dāng)ACK=1時,確認號字段才有效。ACK=0時,確認號無效。TCP規(guī)定,在連接建立后所有傳送的報文段都必須把ACK置為1。
**同步SYN:**連接建立時用于同步序號。當(dāng)SYN=1,ACK=0時表示:這是一個連接請求報文段。若同意連接,則在響應(yīng)報文段中使得SYN=1,ACK=1。因此,SYN=1表示這是一個連接請求,或連接接受報文。SYN這個標(biāo)志位只有在TCP建產(chǎn)連接時才會被置1,握手完成后SYN標(biāo)志位被置0。
**終止FIN:**用來釋放一個連接。FIN=1表示:此報文段的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢,并要求釋放運輸連接
**PS:**ACK、SYN和FIN這些大寫的單詞表示標(biāo)志位,其值要么是1,要么是0;ack、seq小寫的單詞表示序號。
| 字段 | 含義 |
|---|---|
| URG | 緊急指針是否有效。為1,表示某一位需要被優(yōu)先處理 |
| ACK | 確認號是否有效,一般置為1。 |
| PSH | 提示接收端應(yīng)用程序立即從TCP緩沖區(qū)把數(shù)據(jù)讀走。 |
| RST | 對方要求重新建立連接,復(fù)位。 |
| SYN | 請求建立連接,并在其序列號的字段進行序列號的初始值設(shè)定。建立連接,設(shè)置為1 |
| FIN | 希望斷開連接。 |
TCP三次握手
TCP的三次握手與四次揮手TCP的三次握手與四次揮手
**第一次握手:**建立連接時,客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進入SYN_SENT狀態(tài),等待服務(wù)器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
**第二次握手:**服務(wù)器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務(wù)器進入SYN_RECV狀態(tài);
**第三次握手:**客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手
TCP四次揮手
TCP的三次握手與四次揮手TCP的三次握手與四次揮手
1)客戶端進程發(fā)出連接釋放報文,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報文首部,F(xiàn)IN=1,其序列號為seq=u(等于前面已經(jīng)傳送過來的數(shù)據(jù)的最后一個字節(jié)的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態(tài)。 TCP規(guī)定,F(xiàn)IN報文段即使不攜帶數(shù)據(jù),也要消耗一個序號。
2)服務(wù)器收到連接釋放報文,發(fā)出確認報文,ACK=1,ack=u+1,并且?guī)献约旱男蛄刑杝eq=v,此時,服務(wù)端就進入了CLOSE-WAIT(關(guān)閉等待)狀態(tài)。TCP服務(wù)器通知高層的應(yīng)用進程,客戶端向服務(wù)器的方向就釋放了,這時候處于半關(guān)閉狀態(tài),即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了,但是服務(wù)器若發(fā)送數(shù)據(jù),客戶端依然要接受。這個狀態(tài)還要持續(xù)一段時間,也就是整個CLOSE-WAIT狀態(tài)持續(xù)的時間。
3)客戶端收到服務(wù)器的確認請求后,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態(tài),等待服務(wù)器發(fā)送連接釋放報文(在這之前還需要接受服務(wù)器發(fā)送的最后的數(shù)據(jù))。
4)服務(wù)器將最后的數(shù)據(jù)發(fā)送完畢后,就向客戶端發(fā)送連接釋放報文,F(xiàn)IN=1,ack=u+1,由于在半關(guān)閉狀態(tài),服務(wù)器很可能又發(fā)送了一些數(shù)據(jù),假定此時的序列號為seq=w,此時,服務(wù)器就進入了LAST-ACK(最后確認)狀態(tài),等待客戶端的確認。
5)客戶端收到服務(wù)器的連接釋放報文后,必須發(fā)出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態(tài)。注意此時TCP連接還沒有釋放,必須經(jīng)過2??MSL(最長報文段壽命)的時間后,當(dāng)客戶端撤銷相應(yīng)的TCB后,才進入CLOSED狀態(tài)。
6)服務(wù)器只要收到了客戶端發(fā)出的確認,立即進入CLOSED狀態(tài)。同樣,撤銷TCB后,
網(wǎng)站題目:細說TCP的三次握手與四次揮手
文章起源:http://m.fisionsoft.com.cn/article/dhsocoh.html


咨詢
建站咨詢
