TCP/IP 以及三次握手四次揮手

Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又名網(wǎng)絡(luò)通訊協(xié)議,是Internet最基本的協(xié)議、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。

TCP/IP 定義了電子設(shè)備如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。協(xié)議的每一層都呼叫它的下一層所提供的協(xié)議來完成自己的需求。通俗而言:TCP負(fù)責(zé)發(fā)現(xiàn)傳輸?shù)膯栴},一有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡?。而IP是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個地址。


TCP/IP參考模型到底是四層還是五層?

標(biāo)準(zhǔn)的是四層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、網(wǎng)絡(luò)接口層。但是網(wǎng)絡(luò)接口層并沒有嚴(yán)格的劃分。所以有時候也有人把網(wǎng)絡(luò)接口層拆分成兩層:數(shù)據(jù)鏈路層、物理層。

當(dāng)然可能各個地方叫法不同,也有把網(wǎng)絡(luò)層叫做互聯(lián)網(wǎng)層。把網(wǎng)絡(luò)接口層叫做網(wǎng)絡(luò)訪問層。

關(guān)于四層、五層、七層模型的大致對應(yīng)關(guān)系如下:

image.png

TCP/IP 只指TCP協(xié)議 + IP協(xié)議么?

TCP/IP協(xié)議不是TCP和IP這兩個協(xié)議的合稱,而是指因特網(wǎng)整個TCP/IP協(xié)議族。TCP/IP是一組協(xié)議的代名詞,它還包括許多協(xié)議,組成了TCP/IP協(xié)議簇。

應(yīng)用層(Application Layer)

應(yīng)用層(Application Layer)包含所有的高層協(xié)議。
應(yīng)用層是所有用戶所面向的應(yīng)用程序的統(tǒng)稱。ICP/IP協(xié)議族在這一層面有著很多協(xié)議來支持不同的應(yīng)用,如我們進(jìn)行萬維網(wǎng)(WWW)訪問用到了HTTP協(xié)議、DNS用于把主機(jī)名映射到網(wǎng)絡(luò)地址、文件傳輸用FTP協(xié)議、電子郵件發(fā)送用SMTP、域名的解析用DNS協(xié)議、 遠(yuǎn)程登錄用Telnet協(xié)議等等,都是屬于TCP/IP應(yīng)用層的. NNTP用于新聞的發(fā)布、檢索和獲??;

包括:虛擬終端協(xié)議(TELNET,TELecommunications NETwork)、文件傳輸協(xié)議(FTP,F(xiàn)ile Transfer Protocol)、電子郵件傳輸協(xié)議(SMTP,Simple Mail Transfer Protocol)、域名服務(wù)(DNS,Domain Name Service)、網(wǎng)上新聞傳輸協(xié)議(NNTP,Net News Transfer Protocol)和超文本傳送協(xié)議(HTTP,HyperText Transfer Protocol)等。

簡單說來:應(yīng)用層是應(yīng)用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。

傳輸層(Tramsport Layer)

這一層的的功能主要是提供應(yīng)用程序間的通信。傳輸層(Tramsport Layer)使源端和目的端機(jī)器上的對等實體可以進(jìn)行會話。

在這一層定義了兩個端到端的協(xié)議:傳輸控制協(xié)議(TCP,Transmission Control Protocol)和用戶數(shù)據(jù)報協(xié)議(UDP,User Datagram Protocol)。

TCP是面向連接的協(xié)議,它提供可靠的報文傳輸和對上層應(yīng)用的連接服務(wù)。為此,除了基本的數(shù)據(jù)傳輸外,它還有可靠性保證、流量控制、多路復(fù)用、優(yōu)先權(quán)和安全性控制等功能。

UDP是面向無連接的不可靠傳輸?shù)膮f(xié)議,主要用于不需要TCP的排序和流量控制等功能的應(yīng)用程序。

互聯(lián)網(wǎng)層 (Internet Layer)

是TCP/IP協(xié)議族中非常關(guān)鍵的一層,主要定義了IP地址格式,從而能夠使得不同應(yīng)用類型的數(shù)據(jù)在Internet上通暢地傳輸,IP協(xié)議就是一個網(wǎng)絡(luò)層協(xié)議。

互聯(lián)網(wǎng)層(Internet Layer)是整個體系結(jié)構(gòu)的關(guān)鍵部分,其功能是使主機(jī)可以把分組發(fā)往任何網(wǎng)絡(luò),并使分組獨立地傳向目標(biāo)。這些分組可能經(jīng)由不同的網(wǎng)絡(luò),到達(dá)的順序和發(fā)送的順序也可能不同。高層如果需要順序收發(fā),那么就必須自行處理對分組的排序?;ヂ?lián)網(wǎng)層使用因特網(wǎng)協(xié)議(IP,Internet Protocol)。TCP/IP參考模型的互聯(lián)網(wǎng)層和OSI參考模型的網(wǎng)絡(luò)層在功能上非常相似。

網(wǎng)絡(luò)訪問層(Network Access Layer)

網(wǎng)絡(luò)訪問層(Network Access Layer),即網(wǎng)絡(luò)接口層,負(fù)責(zé)接收IP數(shù)據(jù)包并通過網(wǎng)絡(luò)發(fā)送之,或者從網(wǎng)絡(luò)上接收物理幀,抽出IP數(shù)據(jù)報,交給IP層。

在TCP/IP參考模型中并沒有詳細(xì)描述,只是指出主機(jī)必須使用某種協(xié)議與網(wǎng)絡(luò)相連。 由于沒有詳細(xì)描述,因此網(wǎng)絡(luò)訪問層,有時候也拆分成數(shù)據(jù)鏈路層和物理層。

主要優(yōu)點

(1)TCP/IP協(xié)議不依賴于任何特定的計算機(jī)硬件或操作系統(tǒng),提供開放的協(xié)議標(biāo)準(zhǔn),即使不考慮Internet,TCP/IP協(xié)議也獲得了廣泛的支持。所以TCP/IP協(xié)議成為一種聯(lián)合各種硬件和軟件的實用系統(tǒng)。 (2)TCP/IP協(xié)議并不依賴于特定的網(wǎng)絡(luò)傳輸硬件,所以TCP/IP協(xié)議能夠集成各種各樣的網(wǎng)絡(luò)。用戶能夠使用以太網(wǎng)(Ethernet)、令牌環(huán)網(wǎng)(Token Ring Network)、撥號線路(Dial-up line)、X.25網(wǎng)以及所有的網(wǎng)絡(luò)傳輸硬件。 (3)統(tǒng)一的網(wǎng)絡(luò)地址分配方案,使得整個TCP/IP設(shè)備在網(wǎng)中都具有惟一的地址 (4)標(biāo)準(zhǔn)化的高層協(xié)議,可以提供多種可靠的用戶服務(wù)。

TCP/IP協(xié)議與低層的數(shù)據(jù)鏈路層和物理層無關(guān),這也是TCP/IP的重要特點

協(xié)議的優(yōu)勢

在長期的發(fā)展過程中,IP逐漸取代其他網(wǎng)絡(luò)。這里是一個簡單的解釋。IP傳輸通用數(shù)據(jù)。數(shù)據(jù)能夠用于任何目的,并且能夠很輕易地取代以前由專有數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)。下面是一個普通的過程:

一個專有的網(wǎng)絡(luò)開發(fā)出來用于特定目的。如果它工作很好,用戶將接受它。

為了便利提供IP服務(wù),經(jīng)常用于訪問電子郵件或者聊天,通常以某種方式通過專有網(wǎng)絡(luò)隧道實現(xiàn)。隧道方式最初可能非常沒有效率,因為電子郵件和聊天只需要很低的帶寬。

通過一點點的投資IP 基礎(chǔ)設(shè)施逐漸在專有數(shù)據(jù)網(wǎng)絡(luò)周邊出現(xiàn)。

用IP取代專有服務(wù)的需求出現(xiàn),經(jīng)常是一個用戶要求。

IP替代品過程遍布整個因特網(wǎng),這使IP替代品比最初的專有網(wǎng)絡(luò)更加有價值(由于網(wǎng)絡(luò)效應(yīng))。

專有網(wǎng)絡(luò)受到壓制。許多用戶開始維護(hù)使用IP替代品的復(fù)制品。

IP包的間接開銷很小,少于1%,這樣在成本上非常有競爭性。人們開發(fā)了一種能夠?qū)P帶到專有網(wǎng)絡(luò)上的大部分用戶的不昂貴的傳輸媒介。

大多數(shù)用戶為了削減開銷,專有網(wǎng)絡(luò)被取消。

主要缺點

第一,它在服務(wù)、接口與協(xié)議的區(qū)別上就不是很清楚。一個好的軟件工程應(yīng)該將功能與實現(xiàn)方法區(qū)分開來,TCP/IP恰恰沒有很好地做到這點,就使得TCP/IP參考模型對于使用新的技術(shù)的指導(dǎo)意義是不夠的。TCP/IP參考模型不適合于其他非TCP/IP協(xié)議簇。

第二,主機(jī)-網(wǎng)絡(luò)層(網(wǎng)絡(luò)接口層)本身并不是實際的一層,它定義了網(wǎng)絡(luò)層與數(shù)據(jù)鏈路層的接口。物理層與數(shù)據(jù)鏈路層的劃分是必要和合理的,一個好的參考模型應(yīng)該將它們區(qū)分開,而TCP/IP參考模型卻沒有做到這點。

說說TCP傳輸?shù)娜挝帐炙拇螕]手策略

三次握手

為了準(zhǔn)確無誤地把數(shù)據(jù)送達(dá)目標(biāo)處,TCP協(xié)議采用了三次握手策略。用TCP協(xié)議把數(shù)據(jù)包送出去后,TCP不會對傳送后的情況置之不理,它一定會向?qū)Ψ酱_認(rèn)是否成功送達(dá)。
握手過程中使用了TCP的標(biāo)志:SYN和ACK。

發(fā)送端首先發(fā)送一個帶SYN標(biāo)志的數(shù)據(jù)包給對方。接收端收到后,回傳一個帶有SYN/ACK標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息。 最后,發(fā)送端再回傳一個帶ACK標(biāo)志的數(shù)據(jù)包,代表“握手”結(jié)束。 若在握手過程中某個階段莫名中斷,TCP協(xié)議會再次以相同的順序發(fā)送相同的數(shù)據(jù)包。

四次握手

斷開一個TCP連接則需要“四次握手”:

§ 第一次揮手:主動關(guān)閉方發(fā)送一個FIN,用來關(guān)閉主動方到被動關(guān)閉方的數(shù)據(jù)傳送,也就是主動關(guān)閉方告訴被動關(guān)閉方:我已經(jīng)不 會再給你發(fā)數(shù)據(jù)了(當(dāng)然,在fin包之前發(fā)送出去的數(shù)據(jù),如果沒有收到對應(yīng)的ack確認(rèn)報文,主動關(guān)閉方依然會重發(fā)這些數(shù)據(jù)),但是,此時主動關(guān)閉方還可 以接受數(shù)據(jù)。

§ 第二次揮手:被動關(guān)閉方收到FIN包后,發(fā)送一個ACK給對方,確認(rèn)序號為收到序號+1(與SYN相同,一個FIN占用一個序號)。

§ 第三次揮手:被動關(guān)閉方發(fā)送一個FIN,用來關(guān)閉被動關(guān)閉方到主動關(guān)閉方的數(shù)據(jù)傳送,也就是告訴主動關(guān)閉方,我的數(shù)據(jù)也發(fā)送完了,不會再給你發(fā)數(shù)據(jù)了。

§ 第四次揮手:主動關(guān)閉方收到FIN后,發(fā)送一個ACK給被動關(guān)閉方,確認(rèn)序號為收到序號+1,至此,完成四次揮手。

TCP和UDP的區(qū)別

TCP(Transmission Control Protocol,傳輸控制協(xié)議)是基于連接的協(xié)議,也就是說,在正式收發(fā)數(shù)據(jù)前,必須和對方建立可靠的連接。一個TCP連接必須要經(jīng)過三次“對話”才能建立起來

UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議)是與TCP相對應(yīng)的協(xié)議。它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去!
UDP適用于一次只傳送少量數(shù)據(jù)、對可靠性要求不高的應(yīng)用環(huán)境。

建立連接的時候為什么不是兩次握手或者四次握手
image.png
image.png
為什么連接的時候是三次握手,關(guān)閉的時候卻是四次握手?

答:因為當(dāng)Server端收到Client端的SYN連接請求報文后,可以直接發(fā)送SYN+ACK報文。其中ACK報文是用來應(yīng)答的,SYN報文是用來同步的。但是關(guān)閉連接時,當(dāng)Server端收到FIN報文時,很可能并不會立即關(guān)閉SOCKET,所以只能先回復(fù)一個ACK報文,告訴Client端,"你發(fā)的FIN報文我收到了"。只有等到我Server端所有的報文都發(fā)送完了,我才能發(fā)送FIN報文,因此不能一起發(fā)送。故需要四步握手。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容