与TCP/IP协议的初次见面(一)
引言
?
最近LZ有了一點(diǎn)時(shí)間,于是便拿出TCP/IP的書本開始啃。開始的時(shí)候,啃起來枯燥無味,現(xiàn)在好不容易有點(diǎn)開竅,于是趕忙記錄一下,生怕自己一轉(zhuǎn)眼就給忘了。不過計(jì)算機(jī)系統(tǒng)原理就有點(diǎn)可惜了,最近一直沒時(shí)間看,選來選去,還是覺得TCP更加重要一些,或者說現(xiàn)階段更加重要一些。
好了,廢話不多說,我們開始記錄吧。
?
TCP/IP是什么
?
要討論tcp/ip,就必須知道它究竟是什么東西。這是開始逐漸深入一個(gè)東西的前提,tcp/ip也不例外。
LZ用自己的話回答一下這個(gè)問題,tcp/ip是什么?
簡單的說,tcp/ip就是一套規(guī)矩。兩個(gè)計(jì)算機(jī)要互相通信,就得有規(guī)矩,一個(gè)非常普遍的例子就是發(fā)信件。想像一下,如果信件上面的地址和郵編等信息是隨便寫的,那么目的地的郵遞員收到信件時(shí),一定會(huì)一頭霧水,不知道到底要送到哪。同樣的,如果收件人是“額買瑞肯”,而你寫的字是“拆泥漬”,對(duì)方肯定是看不懂的,所以雙方的語言也要相通。
計(jì)算機(jī)之間要通信,也需要規(guī)矩,于是tcp/ip就出現(xiàn)了。tcp和ip分別是兩個(gè)協(xié)議,而tcp/ip一般泛指一個(gè)協(xié)議族。這個(gè)協(xié)議族一共包含四層,分別是鏈路層,網(wǎng)絡(luò)層,傳輸層以及應(yīng)用層。其中tcp是傳輸層的協(xié)議,ip則是網(wǎng)絡(luò)層的協(xié)議。
之所以分層,原因就像mvc框架的作用一樣,是為了讓專業(yè)的人做專業(yè)的事。還記得設(shè)計(jì)模式當(dāng)中的單一職責(zé)原則嗎,這里其實(shí)也正是這個(gè)原則的體現(xiàn)。每一層都只做自己應(yīng)該做的事情,并且把它做好,這樣有利于擴(kuò)展和維護(hù)。
四層簡介
?
接下來,LZ就自己的理解,給大家簡單介紹一下各個(gè)分層。
鏈路層:這是最接近硬件的一層,也是俗稱的“底層”。它主要指我們俗稱的網(wǎng)卡和網(wǎng)卡驅(qū)動(dòng)程序,網(wǎng)卡是硬件,驅(qū)動(dòng)程序則負(fù)責(zé)控制網(wǎng)卡。鏈路層主要負(fù)責(zé)與傳輸介質(zhì)(比如光纖)配合完成實(shí)際的數(shù)據(jù)傳輸工作。你可以把它想像成高速公路上可惡的收費(fèi)站,每一條公路的入口和出口都有一個(gè)收費(fèi)站,而這些收費(fèi)站之間是有協(xié)議的,比如按路程收費(fèi)。這些收費(fèi)站就像網(wǎng)絡(luò)接口一樣,而公路則像光纖一樣。
網(wǎng)絡(luò)層:這一層凌駕于鏈路層之上,主要負(fù)責(zé)數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中的活動(dòng),比如該往哪走。這一層就像高速公路上的路標(biāo),路標(biāo)決定了你每到一個(gè)路口應(yīng)該怎么走。網(wǎng)絡(luò)層恰恰就是做這件事,比如ip協(xié)議,其實(shí)就是制定一套規(guī)則,讓數(shù)據(jù)按照這套規(guī)則可以找到目的地。
傳輸層:這一層已經(jīng)比較接近我等屌絲了,它負(fù)責(zé)應(yīng)用程序之間端到端的通信,這么說可能比較難理解。這個(gè)比較像物流中的一個(gè)場景,比如現(xiàn)在LZ在北京,并且在上海買了一個(gè)女朋友要送過來,那么過程應(yīng)該是這樣的。首先由上海的快遞小哥把LZ的女朋友拿走,然后交給向北京出發(fā)運(yùn)送貨物的司機(jī),接下來LZ的女朋友到北京后會(huì)被交給物流公司的統(tǒng)一發(fā)貨處,最終由快遞小哥負(fù)責(zé)把女朋友送到LZ手中。請(qǐng)注意,這個(gè)過程中,貨車司機(jī)并不關(guān)心貨物到底送到哪,他只管送到北京,而最終快遞小哥需要把貨物送給具體的收貨人。這和網(wǎng)絡(luò)層與傳輸層的關(guān)系類似,網(wǎng)絡(luò)層只管把數(shù)據(jù)報(bào)從一個(gè)計(jì)算機(jī)送給另外一個(gè)計(jì)算機(jī),具體是哪個(gè)進(jìn)程的數(shù)據(jù),網(wǎng)絡(luò)層可不管,這便是傳輸層負(fù)責(zé)的事了。這里的端到端通信,其實(shí)就是指端口到端口的通信。
應(yīng)用層:這一層與我等屌絲已經(jīng)有肌膚之親,可謂是再熟悉不過了。比如你天天要用的http協(xié)議,它就是應(yīng)用層的一個(gè)協(xié)議。http定義了各種協(xié)議頭,什么請(qǐng)求協(xié)議頭,響應(yīng)協(xié)議頭,亂七八糟的。這些協(xié)議頭都是干嘛的呢,既然是應(yīng)用層,當(dāng)然是給應(yīng)用程序用的了。比如響應(yīng)協(xié)議頭中有文本格式這個(gè)頭,它就定義了瀏覽器應(yīng)該如何展示web服務(wù)器發(fā)回來的響應(yīng)信息,比如xml,html還是什么其它的玩意。
四層小結(jié)
?
這么一看,其實(shí)tcp/ip協(xié)議族挺好理解的,接下來LZ還用上面物流的例子來說明。
鏈路層就是負(fù)責(zé)運(yùn)輸LZ女朋友的那個(gè)司機(jī),他是實(shí)際負(fù)責(zé)運(yùn)輸工作的(也就是實(shí)際傳輸數(shù)據(jù)的工作)。網(wǎng)絡(luò)層就是高速路上的路標(biāo),負(fù)責(zé)指引司機(jī)在高速上該如何走(也就是在網(wǎng)絡(luò)上的活動(dòng)),并讓司機(jī)正確到達(dá)目的地。傳輸層則是快遞小哥,負(fù)責(zé)在具體的發(fā)貨人和收獲人之間(也就是發(fā)送端口和接收端口)的接收。應(yīng)用層就像是LZ女朋友的使用說明,這就是LZ和賣家之間(也就是應(yīng)用程序之間)的事了。
文章花絮
?
本篇就到此為止吧,畢竟內(nèi)容不在多,有精就行。只是為了更好的說明本文的內(nèi)容,LZ犧牲了自己的形象,只是希望媳婦不要看到這篇文章。LZ發(fā)誓,本文中的所有例子都純屬虛構(gòu)。
待續(xù)待續(xù)吧!
總結(jié)
以上是生活随笔為你收集整理的与TCP/IP协议的初次见面(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团前期运营模式(怎么吸引商家入驻?怎么
- 下一篇: iOS开发系列文章(持续更新……)