對(duì)tcp三次握手和四次揮手做個(gè)筆記击纬。
先來張配圖(圖片來自于網(wǎng)絡(luò))
TCP三次握手
所謂三次握手(Three-way Handshake)党远,是指建立一個(gè)TCP連接時(shí)笆环,需要客戶端和服務(wù)器總共發(fā)送3個(gè)包醉者。
1.第一次握手客戶端主動(dòng)啼器,發(fā)送SYN標(biāo)志報(bào)文玛追,相當(dāng)于通知服務(wù)器:我想連接你税课,不知可否闲延。
2.第二次握手服務(wù)器主動(dòng),返回確認(rèn)包ACK標(biāo)志報(bào)文韩玩。相當(dāng)于服務(wù)器反饋客戶端:可以垒玲,你連接吧。
3.第三次握手客戶端主動(dòng)找颓,再次發(fā)送報(bào)文 - ACK標(biāo)志報(bào)文合愈,告訴服務(wù)器:好嘞,我這就開始連接击狮。
三次握手的目的是連接服務(wù)器指定端口佛析,建立TCP連接,并同步連接雙方的序列號(hào)和確認(rèn)號(hào)并交換 TCP 窗口大小信息.在socket編程中,客戶端執(zhí)行connect()時(shí)彪蓬。將觸發(fā)三次握手寸莫。
TCP四次揮手
TCP的連接的拆除需要發(fā)送四個(gè)包,因此稱為四次揮手(four-way handshake)档冬”炀ィ客戶端或服務(wù)器均可主動(dòng)發(fā)起揮手動(dòng)作,在socket編程中酷誓,任何一方執(zhí)行close()操作即可產(chǎn)生揮手操作披坏。
關(guān)閉TCP連接,任意一方均可主動(dòng)盐数。
假設(shè)客戶端主動(dòng):
1.第一次揮手棒拂,客戶端發(fā)送FIN標(biāo)志+ACK標(biāo)志報(bào)文,通知服務(wù)器如果沒有數(shù)據(jù)了我想關(guān)閉連接玫氢。
2.第二次揮手着茸,服務(wù)器發(fā)送ACK標(biāo)志報(bào)文,客戶端收到報(bào)文之后等待服務(wù)器的關(guān)閉通知琐旁,相當(dāng)于服務(wù)器告訴客戶端:稍等一下涮阔,容我檢查檢查。
3.第三次揮手灰殴,服務(wù)器發(fā)送關(guān)閉通知 - FIN標(biāo)志+ACK標(biāo)志報(bào)文敬特,告訴客戶端:OK,關(guān)閉吧沒啥事了牺陶。
4.第四次揮手伟阔,客戶端收到關(guān)閉通知,給服務(wù)器發(fā)送反饋ACK標(biāo)志報(bào)文掰伸,告訴服務(wù)器:OK皱炉,我關(guān)了哈,下次再見狮鸭。
結(jié)束合搅。
筆者能力有限多搀,不足之處歡迎指出!