TCP的3次握手,4次揮手
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是面向連接的協(xié)議,也可是說是對“傳輸、發(fā)送、通信”進(jìn)行“控制”的協(xié)議。
TCP作為一種面向有連接的協(xié)議,只有在確認(rèn)通信對端存在時(shí)才會發(fā)送數(shù)據(jù),從而可以控制通信流量的浪費(fèi)。且TCP實(shí)現(xiàn)了數(shù)據(jù)傳輸時(shí)各種控制功能,可以進(jìn)行丟包時(shí)的重發(fā)控制,還可以對次序亂掉的分包進(jìn)行順序控制。TCP通過檢驗(yàn)和、序列號、確認(rèn)應(yīng)答、重發(fā)控制、連接管理以及窗口控制等機(jī)制實(shí)現(xiàn)可靠性傳輸。
1、TCP建立連接的3次握手過程
- 主機(jī)A通過向主機(jī)B發(fā)送一個(gè)含有同步序列號的標(biāo)志位的數(shù)據(jù)段給主機(jī)B,向主機(jī)B請求建立連接,通過這個(gè)數(shù)據(jù)段,主機(jī)A告訴主機(jī)B兩件事:我想要和你通信;你可以用哪個(gè)序列號作為起始數(shù)據(jù)段來回應(yīng)我;
- 主機(jī)B收到主機(jī)A的請求后,用一個(gè)帶有確認(rèn)應(yīng)答(ACK)和同步序列號(SYN)標(biāo)志位的數(shù)據(jù)段響應(yīng)主機(jī)A,也告訴主機(jī)A兩件事:我已經(jīng)收到你的請求了,你可以傳輸數(shù)據(jù)了;你要用哪個(gè)序列號作為起始數(shù)據(jù)段來回應(yīng)我;
- 主機(jī)A收到這個(gè)數(shù)據(jù)段后,再發(fā)送一個(gè)確認(rèn)應(yīng)答,確認(rèn)已收到主機(jī)B的數(shù)據(jù)段:“我已收到回復(fù),我現(xiàn)在要開始傳輸實(shí)際數(shù)據(jù)了”。
這樣3次握手就完成了,主機(jī)A和主機(jī)B就可以傳輸數(shù)據(jù)了。

2、TCP斷開連接的4次確認(rèn)
- 當(dāng)主機(jī)A完成數(shù)據(jù)傳輸后,將控制位FIN置1,提出停止TCP連接的請求;
- 主機(jī)B收到FIN后對其作出響應(yīng),確認(rèn)這一方向上的TCP連接將關(guān)閉,將ACK置1;
- 由B端再提出反方向的關(guān)閉請求,將FIN置1;
主機(jī)A對主機(jī)B的請求進(jìn)行確認(rèn),將ACK置1,雙方向的關(guān)閉結(jié)束。

由TCP的3次握手和4次斷開確認(rèn)可以看出,TCP使用面向連接的通信方式,大大提高了數(shù)據(jù)通信的可靠性,使發(fā)送數(shù)據(jù)端和接收端在數(shù)據(jù)正式傳輸前就有了交互,為數(shù)據(jù)正式傳輸打下了可靠的基礎(chǔ)。


























