TCP/IP 協(xié)議分層模型.

大學(xué)教科書中有說分成7層,也有說分成4層的,筆者覺得4層更合適一些,像七層中的第5、6層完全不是必須的,就算有也是各自制定協(xié)議,而制定協(xié)議的人基本不會(huì)去考慮第5層叫會(huì)話層第6層叫表示層,在私有應(yīng)用層協(xié)議中,更多的是會(huì)私定一個(gè)握手互信協(xié)議,以表示通訊雙方是互信的.

TCP/ IP 協(xié)議,是一組協(xié)議簇.而不是兩種協(xié)議,其范圍以其分層模型來進(jìn)行分類

圖片.png
  • 應(yīng)用層:
    程序員所編寫好的網(wǎng)絡(luò)程序,就是應(yīng)用層.qq,微信,瀏覽器等等.基于網(wǎng)絡(luò)編程的,都屬于應(yīng)用層的范濤.

應(yīng)用層協(xié)議:
常見與常用的 http協(xié)議,ftp協(xié)議,telnet,smpp,xmpp等共有協(xié)議. 還有諸如六毛的私有協(xié)議.

  • 傳輸層
    什么是傳輸層,傳輸層是干嘛的,傳輸層,是用來做數(shù)據(jù)傳輸?shù)?數(shù)據(jù)是什么,數(shù)據(jù)就是我們?cè)谑褂脩?yīng)用層網(wǎng)絡(luò)程序時(shí)產(chǎn)生的一系列數(shù)據(jù),這些數(shù)據(jù)需要在網(wǎng)絡(luò)上流動(dòng),傳輸,才能實(shí)現(xiàn)數(shù)據(jù)在通過網(wǎng)絡(luò)在各客戶端程序之間的交互與傳輸.怎么傳輸這些數(shù)據(jù),就需要使用到傳輸層的傳輸協(xié)議:TCP/UDP協(xié)議.傳輸層就只有這兩種公有標(biāo)準(zhǔn)傳輸協(xié)議

tcp/udp 協(xié)議不僅指定了數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn),同時(shí)也代表著兩種截然不同的數(shù)據(jù)傳輸方式.應(yīng)用與不同的數(shù)據(jù)傳輸場(chǎng)景與需求.他們各自有各自的優(yōu)點(diǎn)與針對(duì)點(diǎn),也各有不足.我們?cè)谶x擇何種傳輸協(xié)議的時(shí)候.需要按數(shù)據(jù)傳輸?shù)念愋秃托枨髞磉x擇合適的傳輸協(xié)議.

  • tcp協(xié)議的主要實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,需要知道彼此都在家呆著,(通過四次握手建立連接)數(shù)據(jù)發(fā)送需要進(jìn)行確認(rèn).是數(shù)據(jù)安全的.由客戶端發(fā)起連接,向服務(wù)端請(qǐng)求數(shù)據(jù).

  • UDP協(xié)議,客戶端知道服務(wù)器的家在哪,而不需要卻定其是否在家.直接發(fā)送數(shù)據(jù)包過去.如果服務(wù)器不在.則信息丟失.數(shù)據(jù)的傳輸不可靠,不安全.具有一定的風(fēng)險(xiǎn)性.

應(yīng)用層在將數(shù)據(jù)傳輸給傳輸層后,傳輸成為數(shù)據(jù)貼上相關(guān)信息,發(fā)往指定的地址.

傳輸層傳輸?shù)臄?shù)據(jù),是應(yīng)用層數(shù)據(jù)進(jìn)行一次包裝后的整體數(shù)據(jù)包.(就相當(dāng)于一個(gè)快遞包裹).傳輸層協(xié)議貼上的標(biāo)記信息,就是頭部數(shù)據(jù).

  • 網(wǎng)絡(luò)層
    ip,icmparp,rarp協(xié)議等.

對(duì)于普通編程人員來說,做需要關(guān)注,與最容易涉及到的,無疑就是應(yīng)用層,與傳輸層.我們?cè)诰帉懢W(wǎng)絡(luò)程序的時(shí)候,一定會(huì)有各種不同場(chǎng)景下的數(shù)據(jù)交互需求,因此,應(yīng)用層協(xié)議與傳輸層協(xié)議是我們必須得詳細(xì)的學(xué)習(xí)和運(yùn)用的.

應(yīng)用層與傳輸層之間的關(guān)系也是十分緊密.

  • 以http協(xié)議來說:
    http協(xié)議是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議.我們最常使用的通過瀏覽器瀏覽網(wǎng)站,網(wǎng)頁.大多都是基于這類協(xié)議的(http,https,總之一定是請(qǐng)求-響應(yīng)協(xié)議).

http協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用層協(xié)議.我們?cè)谠L問一個(gè)網(wǎng)站的時(shí)候.瀏覽器會(huì)通過TCP協(xié)議發(fā)送如下字符串到服務(wù)器的應(yīng)用層:

GET /test/abtest HTTP/1.1
    Host: 127.0.0.1
    Connection: keep-alive
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
    Cookie: PHPSESSID=970260278652571648
圖片.png

我們隨意訪問一個(gè)網(wǎng)站,進(jìn)入開發(fā)模式,即可查看到相關(guān)的消息頭與參數(shù).這些字符串就是應(yīng)用層數(shù)據(jù),應(yīng)用層數(shù)據(jù)是按照一定格式來組織的.這個(gè)格式就是應(yīng)用協(xié)議.譬如http協(xié)議.

傳輸層在往應(yīng)用層傳遞數(shù)據(jù)的時(shí)候,并不保證每次傳遞的數(shù)據(jù)都是一個(gè)完整的應(yīng)用層數(shù)據(jù)包.(以http協(xié)議為例,并不能保證應(yīng)用層收到的一定是一個(gè)完整的http數(shù)據(jù)包)這就是半包與粘包,傳輸層只負(fù)責(zé)傳遞buye[]數(shù)據(jù),應(yīng)用層需要自己對(duì)byte[]數(shù)據(jù)進(jìn)行解碼.


2020.1.19

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1. 協(xié)議分層與OSI參考模型 協(xié)議分層就如同計(jì)算機(jī)軟件中的模塊化開發(fā),OSI參考模型的建議是比較理想化的。 OS...
    公子七閱讀 2,213評(píng)論 4 38
  • TCP/IP 與 OSI 參考模型 硬件(物理層) ?TCP/IP的最底層是負(fù)責(zé)數(shù)據(jù)傳輸?shù)挠布?,相?dāng)于以太網(wǎng)或電話...
    one_zheng閱讀 1,777評(píng)論 1 0
  • 硬件物理層tcp/ip 最底層是負(fù)責(zé)從數(shù)據(jù)傳輸?shù)挠布?網(wǎng)絡(luò)接口層- 數(shù)據(jù)鏈路層網(wǎng)絡(luò)接口層利用以太網(wǎng)中的數(shù)據(jù)鏈路層進(jìn)...
    Yix1a閱讀 596評(píng)論 0 0
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,215評(píng)論 0 8
  • 她是一個(gè)漂亮的女孩,在她四歲的時(shí)候,因?yàn)橐粓?chǎng)車禍?zhǔn)チ怂碾p腿,因?yàn)榧依餂]錢換不了假肢,所以他每天只能呆在房子里出...
    bc66119ed7f7閱讀 163評(píng)論 0 0

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