|
一. 面向連接
TCP是一個(gè)面向連接的協(xié)議,面向連接是指任何一方向?qū)Ψ桨l(fā)送數(shù)據(jù)前必須先建立通道,比如像打電話(huà)一樣:必須要等到對(duì)方的手機(jī)響鈴,并且對(duì)方接聽(tīng)電話(huà)時(shí),才能與對(duì)方通信。而UDP則不是面向連接的協(xié)議,基于UDP協(xié)議的通信雙方不需要事先與對(duì)方協(xié)商建立連接,也不管對(duì)方的IP地址與端口號(hào)是否存在,就發(fā)送數(shù)據(jù),這個(gè)處理方式有點(diǎn)像手機(jī)發(fā)短信,不管對(duì)方手機(jī)是否欠費(fèi)或關(guān)機(jī),我們就只管發(fā)送信息。
二. 三次握手
第一次握手:客戶(hù)端發(fā)送SYN包(序列號(hào)seq=100),等待服務(wù)器的確認(rèn)。
第二次握手:服務(wù)器收到SYN包之后,必須確認(rèn)客戶(hù)端,所以就要發(fā)送ACK包(ACK=101),同時(shí),服務(wù)器必須還必須發(fā)送SYN包(序列號(hào)seq=300)等客戶(hù)端的確認(rèn)。
第三次握手:客戶(hù)端接收到SYN+ACK包之后,向服務(wù)器發(fā)送確認(rèn)包(ACK=301),次包發(fā)送完畢之后,兩者就可以進(jìn)行數(shù)據(jù)交換了。
簡(jiǎn)單的來(lái)說(shuō):
C(客戶(hù)端) S(服務(wù)器)
C:發(fā)送SYN給S
S:如果成功,返回給C(SYN+ACK)
C:如果成功,返回給S(ACK)
還可用個(gè)形象的例子說(shuō)下:TCP的三次握手過(guò)程可以看成是某男生追某女生的過(guò)程。第一次握手就好比是:男生向女生告白,說(shuō)我喜歡你,然后男生等待女生的回應(yīng),第二次握手就好比是:女生收到男生的告白,而且該女生也喜歡次男生,她就可以給男生回應(yīng),說(shuō):我也喜歡你。第三次握手:男生收到該女生的回應(yīng),大喜,又發(fā)送消息過(guò)去,那我們正式交往吧!
三 .四次斷開(kāi)
1. 客戶(hù)端發(fā)送數(shù)據(jù)完畢之后,提出要斷開(kāi)連接
2. 服務(wù)器收到FIN包后,對(duì)其作出反應(yīng),發(fā)送ACK包,確認(rèn)這一方向的連接將關(guān)閉,
3. 等服務(wù)器的應(yīng)用程序做好關(guān)閉準(zhǔn)備時(shí),服務(wù)器反方向發(fā)送FIN包,請(qǐng)求關(guān)閉連接請(qǐng)求,
4. 客戶(hù)機(jī)對(duì)服務(wù)器發(fā)送的請(qǐng)求進(jìn)行確認(rèn),并發(fā)送ACK包
也可簡(jiǎn)單的概述:
C(客戶(hù)端) S(服務(wù)器)
C:發(fā)送FIN給S
S:如果成功,返回給C(ACK)
S:應(yīng)用程序做好關(guān)閉程序準(zhǔn)備,發(fā)送FIN給C
C:如果成功,返回給S(ACK)
同樣也可以用個(gè)形象的例子說(shuō)明:這個(gè)過(guò)程相當(dāng)于男女雙方分手的過(guò)程:
1,女方向男方提出分手,等待男方的回應(yīng)
2,男方聽(tīng)到這個(gè)消息后,就給女方回應(yīng)說(shuō):好吧!分就分
3,過(guò)段時(shí)間,男方突然覺(jué)得很沒(méi)面子,想:“我一個(gè)大老爺們,應(yīng)該是我提出分手”,于是,男方跟女方說(shuō):我們分手吧!
4,這時(shí),女方就直接罵了句“神經(jīng)病”。
|
|