TCP/IP協(xié)議定義了一個在因特網(wǎng)上進(jìn)行傳輸?shù)陌Q為ip數(shù)據(jù)報劈猿,
ip數(shù)據(jù)報文包含 ip首部和ip數(shù)據(jù)部分
ip首部: 源Ip地址和目的IP地址屈芜、數(shù)據(jù)報文長度、IP版本號等
ip數(shù)據(jù)部分:保存?zhèn)鬏攲拥臄?shù)據(jù),如保存TCP蟆融、UDP、ICMP等數(shù)據(jù)
一共有URG唯卖、ACK、PSH躬柬、PST拜轨、SYN、FIN 6個標(biāo)志位允青,主要關(guān)注三個重要標(biāo)志位:
- SYN:序列發(fā)生器橄碾;音序器(sequencer),同步比特SYN=1表示這是一個連接請求或者一個連接接受報文
- ACK:命令正確應(yīng)答颠锉;確認(rèn)字符(acknowledgement character)法牲,為1時確認(rèn)號字段才有效,為0時無效
- FIN:final終止琼掠,釋放一個連接拒垃,當(dāng)FIN=1,表示此報文段的發(fā)送端的數(shù)據(jù)已經(jīng)發(fā)送完畢瓷蛙,并要求釋放運輸連接
三次握手
- 客戶端向服務(wù)端發(fā)送一個連接請求和請求序列號悼瓮,SYN = 1,Seq=X
- 服務(wù)端回復(fù)確認(rèn)報文和確認(rèn)序號 ACK=1艰猬,ACKnum = x+1横堡,SYN=1, SEQ=Y
- 客戶端收到服務(wù)端的確認(rèn)報文之后冠桃,需要回復(fù)一個確認(rèn)報文和一個序列號 ACK = 1命贴,ACKnum=Y+1
為什么需要三次握手呢
通過前兩次握手,客戶端知道服務(wù)器可以發(fā)送和接受報文腊满。但是服務(wù)器不知道客戶端是否能收到套么,所以需要客戶端發(fā)送一個確認(rèn)報文
四次揮手
- 客戶端向服務(wù)端發(fā)送一個FIN=1的包,F(xiàn)IN=1碳蛋,Seq=X
- 服務(wù)端回復(fù)確認(rèn)報文和- 客戶端向服務(wù)端發(fā)送一個連接請求和請求序列號胚泌,SYN=1,Seq=X肃弟,但是此時還沒有準(zhǔn)備好關(guān)閉連接
- 服務(wù)端準(zhǔn)備好關(guān)閉連接時玷室,向客戶端發(fā)送結(jié)束連接請求 FIN=1,Seq=Y
- 客戶端收到服務(wù)端的關(guān)閉情趣笤受,發(fā)送一個確認(rèn)報文 ACK=1穷缤,ACKnum=Y+1服務(wù)器接收到確認(rèn)包之后,就會關(guān)閉連接箩兽,進(jìn)入closed狀態(tài)津肛,不再回應(yīng)客戶端,客戶端在一段時間之后沒有收到回應(yīng)就自動關(guān)閉