TCP、UDP、HTTP及Socket的簡(jiǎn)單講解

難得閑下來(lái),看看自己未掌握的開(kāi)發(fā)知識(shí),所以抓緊時(shí)間在網(wǎng)絡(luò)上搜了一些相關(guān)的文章,隨筆記錄一下。

1、TCP/IP是個(gè)協(xié)議組,可分為三個(gè)層次:網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。

在網(wǎng)絡(luò)層有IP協(xié)議、ICMP協(xié)議、ARP協(xié)議、RARP協(xié)議和BOOTP協(xié)議。

在傳輸層中有TCP協(xié)議與UDP協(xié)議。

在應(yīng)用層有FTP、HTTP、TELNET、SMTP、DNS等協(xié)議。

因此,HTTP本身就是一個(gè)協(xié)議,是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。

2、HTTP協(xié)議是建立在請(qǐng)求/響應(yīng)模型上的。首先由客戶(hù)建立一條與服務(wù)器的TCP鏈接,并發(fā)送一個(gè)請(qǐng)求到服務(wù)器,請(qǐng)求中包含請(qǐng)求方法、URI、協(xié)議版本以及相關(guān)的MIME樣式的消息。服務(wù)器響應(yīng)一個(gè)狀態(tài)行,包含消息的協(xié)議版本、一個(gè)成功和失敗碼以及相關(guān)的MIME式樣的消息。

HTTP/1.0為每一次HTTP的請(qǐng)求/響應(yīng)建立一條新的TCP鏈接,因此一個(gè)包含HTML內(nèi)容和圖片的頁(yè)面將需要建立多次的短期的TCP鏈接。一次TCP鏈接的建立將需要3次握手。

另外,為了獲得適當(dāng)?shù)膫鬏斔俣?,則需要TCP花費(fèi)額外的回路鏈接時(shí)間(RTT)。每一次鏈接的建立需要這種經(jīng)常性的開(kāi)銷(xiāo),而其并不帶有實(shí)際有用的數(shù)據(jù),只是保證鏈接的可靠性,因此HTTP/1.1提出了可持續(xù)鏈接的實(shí)現(xiàn)方法。HTTP/1.1將只建立一次TCP的鏈接而重復(fù)地使用它傳輸一系列的請(qǐng)求/響應(yīng) 消息,因此減少了鏈接建立的次數(shù)和經(jīng)常性的鏈接開(kāi)銷(xiāo)。

3、結(jié)論:雖然HTTP本身是一個(gè)協(xié)議,但其最終還是基于TCP的。

TCP三次、四次握手?

相對(duì)于SOCKET開(kāi)發(fā)者,TCP創(chuàng)建過(guò)程和連接拆除過(guò)程是由TCP/IP協(xié)議棧自動(dòng)創(chuàng)建的。因此開(kāi)發(fā)者并不需要控制這個(gè)過(guò)程。但是對(duì)于理解TCP底層運(yùn)作機(jī)制,相當(dāng)有幫助。

所謂三次握手(Three-way Handshake),是指建立一個(gè)TCP連接時(shí),需要客戶(hù)端和服務(wù)器總共發(fā)送3個(gè)包。具體流程網(wǎng)上有,在次我不再贅述。三次握手的目的是連接服務(wù)器指定端口,建立TCP連接,并同步連接雙方的序列號(hào)和確認(rèn)號(hào)并交換 TCP 窗口大小信息.在socket編程中,客戶(hù)端執(zhí)行connect()時(shí)。將觸發(fā)三次握手。

TCP的連接的拆除需要發(fā)送四個(gè)包,因此稱(chēng)為四次揮手(four-way handshake)??蛻?hù)端或服務(wù)器均可主動(dòng)發(fā)起揮手動(dòng)作

TCP與UDP的區(qū)別?

附上一張圖片,簡(jiǎn)單明了??

TCP與UDP的區(qū)別

Socket是什么呢?

Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門(mén)面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對(duì)用戶(hù)來(lái)說(shuō),一組簡(jiǎn)單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。

相對(duì)于SOCKET開(kāi)發(fā)者,TCP創(chuàng)建過(guò)程和連接拆除過(guò)程是由TCP/IP協(xié)議棧自動(dòng)創(chuàng)建的。因此開(kāi)發(fā)者并不需要控制這個(gè)過(guò)程。但是對(duì)于理解TCP底層運(yùn)作機(jī)制,相當(dāng)有幫助。

最后,本文大多參考網(wǎng)絡(luò)上各博主所寫(xiě)的,加上個(gè)人歸納,如有侵犯還往諒解。本人提倡資源共享和相互學(xué)習(xí)交流。也希望自己今后不再是一個(gè)資源消耗者。

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

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

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