讀書筆記-網(wǎng)絡(luò)技術(shù)的基礎(chǔ)知識(上)(面向不懂技術(shù)的產(chǎn)品狗)

網(wǎng)絡(luò)基礎(chǔ)之協(xié)議棧

在計(jì)算機(jī)網(wǎng)絡(luò)里传透,數(shù)據(jù)傳輸?shù)牧鞒檀笾驴煞譃橐韵聨撞剑?/p>

1、應(yīng)用程序原始數(shù)據(jù)被拆解并編碼韧衣,轉(zhuǎn)化成電信號或光信號盅藻;

2、電信號或光信號通過物理介質(zhì)傳輸汹族;

3萧求、傳輸完成后電信號或光信號還原成應(yīng)用程序數(shù)據(jù)被接收;

整個流程顶瞒,都是通過計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議棧完成的夸政。

而現(xiàn)在的互聯(lián)網(wǎng)采用就是基于OSI七層模型的TCP/IP協(xié)議棧,主要包括五層榴徐,即應(yīng)用層守问、傳輸層、網(wǎng)絡(luò)層坑资、數(shù)據(jù)鏈路層和物理層耗帕,如下圖所示;其中數(shù)據(jù)鏈路層又可以分為兩個子層袱贮,即LLC(邏輯鏈路控制層)和MAC(介質(zhì)訪問控制層)仿便。

應(yīng)用層:為應(yīng)用程序提供數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)接口,常見的是HTTP、Telnet嗽仪、FTP等協(xié)議都工作在這一層荒勇;

傳輸層:傳輸層提供端到端的連接,例如讓A主機(jī)上的程序小紅找到B主機(jī)上的應(yīng)用程序小明闻坚。TCP和UDP都工作在這一層沽翔,端口號的定義也在這一層;

網(wǎng)絡(luò)層:用于尋址窿凤,它能讓互聯(lián)網(wǎng)的兩臺主機(jī)在互聯(lián)網(wǎng)的茫媒鲑耍”機(jī)海“中找到彼此雳殊;

數(shù)據(jù)鏈路層網(wǎng)卡就工作這一層橘沥,負(fù)責(zé)將數(shù)據(jù)信號轉(zhuǎn)化成光信號或者電信號,供物理層傳輸夯秃;

物理層:物理層是信號傳輸?shù)奈锢硗ǖ劳眨W(wǎng)線和配套的接口都屬于物理層。

應(yīng)用程序數(shù)據(jù)寝并,經(jīng)過這五層協(xié)議自上往下逐層分解,最終變成可供物理介質(zhì)可傳輸?shù)男盘柛贡福?dāng)達(dá)到目的地主機(jī)后衬潦,再自下而上還原成應(yīng)用程序數(shù)據(jù)。

image

那么植酥,為什么不能把應(yīng)用程序數(shù)據(jù)直接轉(zhuǎn)化成物理信號镀岛,其實(shí)是因?yàn)榫W(wǎng)絡(luò)棧分層后使得一些特殊功能的網(wǎng)絡(luò)設(shè)備可以只實(shí)現(xiàn)協(xié)議棧的子集,我想言下之意應(yīng)該是說友驮,讓所有的設(shè)備功能都可以解耦單獨(dú)完成自己的工作就可以了漂羊。如路由器,只要實(shí)現(xiàn)網(wǎng)絡(luò)層卸留、數(shù)據(jù)鏈路層和物理層的功能就可以了走越。這樣就保證了每一層都可以單獨(dú)設(shè)計(jì),只要保證上下兩層的接口保持一致就可以了耻瑟。

互聯(lián)網(wǎng)是如何提供服務(wù)的

互聯(lián)網(wǎng)上的主流應(yīng)用旨指,如瀏覽器、在線視頻喳整、社交游戲等類型很多谆构,但其本質(zhì)都是下載。作者舉例說框都,我們想象用戶將一根水管插到水桶里搬素,水經(jīng)過水管流出,我們可以用來做飯(聽歌)、洗手(看視頻)熬尺、洗菜(瀏覽網(wǎng)頁)摸屠,這些水(資源)被下載到本地后,應(yīng)用程序就會按照開發(fā)者的設(shè)計(jì)猪杭,將數(shù)據(jù)進(jìn)行存儲餐塘,和使用。所以皂吮,在C++戒傻、Java等大量編程語言中,流叫做stream蜂筹,被用來形容一個地方從另外一個地方不間斷地獲取數(shù)據(jù)需纳。

用戶打開網(wǎng)站時,瀏覽器會根據(jù)網(wǎng)址與服務(wù)器建立連接艺挪,從而建立流不翩。網(wǎng)頁的數(shù)據(jù)通過這個管道不斷地流向用戶的瀏覽器,瀏覽器得到這些數(shù)據(jù)后麻裳,立即進(jìn)行解析口蝠、排版、繪制津坑,經(jīng)過整個渲染過程妙蔗,用戶看到了呈現(xiàn)在瀏覽器窗口內(nèi)的網(wǎng)頁。

IP地址

IP地址相當(dāng)于接入互聯(lián)網(wǎng)的所有主機(jī)對應(yīng)的門牌號疆瑰,這個門牌號在互聯(lián)網(wǎng)上是獨(dú)一無二的眉反,否則發(fā)送給指定主機(jī)的數(shù)據(jù)就會走錯門。

我們可以用通過系統(tǒng)屬性或網(wǎng)站提供的服務(wù)頁面查詢本機(jī)的IP地址穆役,嘗試如下圖寸五。

image
image

每一臺連接到網(wǎng)絡(luò)的中的網(wǎng)卡,都有一個IP地址耿币,用來在網(wǎng)絡(luò)中收發(fā)信息梳杏。在IP地址庫中,有三類地址被定義為”私有地址“掰读,如下表所示:

image

私有地址秘狞,就是指這些地址只允許被用在私有網(wǎng)絡(luò)中,不能作為互聯(lián)網(wǎng)接入地址使用蹈集,如果某臺PC接入家庭網(wǎng)絡(luò)或者公司的局域網(wǎng)烁试,他的IP肯定會落到上表中的地址段中。但如果私有網(wǎng)絡(luò)中的設(shè)備拢肆,要訪問互聯(lián)網(wǎng)上的內(nèi)容减响,就需要用到NAT(Network Address Translation靖诗,網(wǎng)絡(luò)地址轉(zhuǎn)換)技術(shù)。

NAT轉(zhuǎn)換技術(shù)支示,主要有三中實(shí)現(xiàn)方式:

1刊橘、靜態(tài)轉(zhuǎn)換(Static NAT)

內(nèi)網(wǎng)地址與外網(wǎng)地址是一一對應(yīng)關(guān)系,如果內(nèi)網(wǎng)中有10臺主機(jī)需要訪問外部網(wǎng)絡(luò)颂鸿,就需要有10個外網(wǎng)IP地址做映射促绵,而且這10個內(nèi)網(wǎng)IP和10個外網(wǎng)IP是固定的映射關(guān)系。如果需要內(nèi)部網(wǎng)絡(luò)的一臺主機(jī)作為外網(wǎng)的服務(wù)器嘴纺,就需要用到靜態(tài)轉(zhuǎn)換败晴。

2、動態(tài)轉(zhuǎn)換(Dynamic NAT)

動態(tài)轉(zhuǎn)換與靜態(tài)轉(zhuǎn)換類似栽渴,但內(nèi)網(wǎng)IP與外網(wǎng)IP不是一一對應(yīng)關(guān)系尖坤,一般ISP會使用這種方式為接入用戶提供訪問外網(wǎng)的能力芍耘。

3蚀腿、端口多路復(fù)用(Overload)

這種方式,就是一個外網(wǎng)的IP可以被內(nèi)網(wǎng)多個IP同步共享盔几,與前兩個方式的區(qū)別在于講端口作為一個映射的維度墅冷,家用路由器一般都是通過端口多路復(fù)用來實(shí)現(xiàn)NAT的纯路。

那么為什么同一臺設(shè)備有兩個不同的IP地址呢,其實(shí)網(wǎng)絡(luò)上查詢的IP是經(jīng)過NAT轉(zhuǎn)化之后的了寞忿,詳細(xì)流程參見下圖:

image

PING和網(wǎng)關(guān)

PING(Packet Internet Groper)是網(wǎng)絡(luò)診斷工具感昼,意為互聯(lián)網(wǎng)包探測器。PING是TCP/IP協(xié)議簇中的一部分罐脊,其原理是向目標(biāo)IP地址發(fā)送一個數(shù)據(jù)包,如果對方返回一個同樣大小的數(shù)據(jù)包蜕琴,則證明聯(lián)通萍桌,并且整個過程能測試時延。

網(wǎng)關(guān)凌简,就是兩個網(wǎng)絡(luò)之間的門上炎,在物理上網(wǎng)關(guān)是一個網(wǎng)絡(luò)設(shè)備,擁有IP地址雏搂,在家庭網(wǎng)絡(luò)里通常就是路由器的IP地址藕施。網(wǎng)關(guān)具有轉(zhuǎn)接和過濾的功能。

端口

端口是終端留給外部的接口凸郑,是不同設(shè)備之間通信的橋梁裳食,物理設(shè)備是通過物理端口實(shí)現(xiàn)溝通的,比如網(wǎng)口芙沥、USB等都是物理端口或接口诲祸。計(jì)算機(jī)內(nèi)部有很多數(shù)據(jù)服務(wù)都是要通過一個物理端口與其他設(shè)備產(chǎn)生聯(lián)系的浊吏,外部的數(shù)據(jù)包也是需要通過物理端口反饋回來的,但是計(jì)算機(jī)內(nèi)部各種各種的服務(wù)數(shù)以萬計(jì)救氯,每個服務(wù)怎么知道回來的數(shù)據(jù)包是自己需要的找田,這樣便有了”虛擬端口“,一個服務(wù)想和外界聯(lián)系就要綁定一個端口號着憨,同時制定目標(biāo)服務(wù)的端口號墩衙,這個端口便是虛擬端口,這樣便把相應(yīng)的服務(wù)數(shù)據(jù)包放在對應(yīng)服務(wù)生命端口的緩沖區(qū)中甲抖,等待服務(wù)取走自己的數(shù)據(jù)包漆改。

另外,還有一個概念惧眠,就是服務(wù)進(jìn)程拿了一部分?jǐn)?shù)據(jù)后開始處理籽懦,但是還沒有處理完又有新的數(shù)據(jù)來了,當(dāng)緩沖區(qū)數(shù)據(jù)過多氛魁,可能就會造成數(shù)據(jù)溢出丟失暮顺。解決辦法就是在進(jìn)程中設(shè)計(jì)了一個特殊的監(jiān)聽線程負(fù)責(zé)監(jiān)聽綁定的端口,如果有數(shù)據(jù)過來秀存,監(jiān)聽線程就會把這個數(shù)據(jù)從緩沖區(qū)取走捶码,讓其他的線程處理。作者給的例子非常顯淺易懂或链,比如把公司比作是一個進(jìn)程惫恼,前臺比作一個監(jiān)控線程,而其他的人則可比做處理數(shù)據(jù)包的其他線程澳盐,當(dāng)快遞源源不斷的寄到公司的時候祈纯,監(jiān)控線程是可以隨時通知其他線程來拿走數(shù)據(jù)包進(jìn)行處理的,而不用等到一個完成才能叫下一個線程叼耙。

TCP和UDP

TCP(Transmission Control Protocol)即傳輸控制協(xié)議腕窥,IP(Internet Protocol)即因特網(wǎng)互聯(lián)協(xié)議。TCP/IP是一個協(xié)議簇筛婉,也就是許多協(xié)議的集合簇爆,包含了很多不同的協(xié)議,并定義好了整個互聯(lián)網(wǎng)連接和協(xié)商的最基礎(chǔ)原則爽撒。

TCP和UDP處于整個網(wǎng)絡(luò)協(xié)議棧的應(yīng)用層入蛆,是兩個不同的通信協(xié)議,其作用都是傳輸數(shù)據(jù)硕勿,常見的網(wǎng)絡(luò)數(shù)據(jù)都是基于這兩種協(xié)議進(jìn)行傳輸?shù)摹?/p>

TCP是應(yīng)答式通信方式哨毁,UDP是只管發(fā)送而不管是否接收成功的通信方式。TCP的數(shù)據(jù)傳輸需要一個邏輯上的私有通道源武,當(dāng)連接兩端成功后挑庶,所有的數(shù)據(jù)都在這條通道上傳輸言秸,發(fā)送方也會收到數(shù)據(jù)被成功接收的回執(zhí)。另外迎捺,為保證這條通道的正確建立举畸,客戶端和服務(wù)端需要進(jìn)行”三次握手<傳輸兩端需要三次確認(rèn),才能開始通信>“凳枝,保證了數(shù)據(jù)的可靠性抄沮,但是降低的效率。

TCP保證可靠性的手段:順序編號岖瑰、確認(rèn)機(jī)制和超時重傳叛买。

UDP則比較簡單粗暴,不管對方的狀態(tài)蹋订,直接發(fā)送數(shù)據(jù)不需要建立通道率挣,所以保障的數(shù)據(jù)傳輸?shù)男剩莵G失了可靠性露戒。

但是每種場景應(yīng)用哪一種傳輸協(xié)議椒功,應(yīng)結(jié)合實(shí)際情況考慮,不能一概而論智什。

反向代理

一般意義上的代理动漾,都是指客戶端向外界發(fā)送請求時,并不直接與目標(biāo)服務(wù)器連接荠锭,而是將所有的請求交給一個代理服務(wù)器旱眯,他負(fù)責(zé)對外連接外界的目標(biāo)服務(wù)器。同時证九,外界從服務(wù)器返回的數(shù)據(jù)也是先經(jīng)過代理服務(wù)器返回客戶端删豺。在外界看來,所有的客戶端都隱藏在代理服務(wù)器后面愧怜,起到了保護(hù)客戶端的作用吼鳞。

反向代理,則恰好相反叫搁,是針對服務(wù)器的一種代理技術(shù),可以接受客戶端的請求供炎,然后把他們分發(fā)給被代理的后端服務(wù)器上渴逻,等這些服務(wù)器處理完請求后,再將結(jié)果轉(zhuǎn)發(fā)給客戶端音诫,他是將服務(wù)器都隱藏在身后惨奕,對客戶端來說也許只有一臺服務(wù)器,但是反代理服務(wù)器也許服務(wù)了成千上外臺的后端服務(wù)器竭钝。

那么梨撞,反向代理服務(wù)器的意義則是實(shí)現(xiàn)了負(fù)載均衡雹洗,因?yàn)闀泻芏嗯_服務(wù)器提供服務(wù),但是每一臺服務(wù)器的負(fù)荷可能不一樣卧波,如果請求被發(fā)送到負(fù)荷較高的服務(wù)器时肿,他的處理時間可能較長,但是客戶端不知道那臺服務(wù)器比較清閑港粱,而反向代理服務(wù)器知道每臺服務(wù)器的負(fù)載量螃成,會將請求轉(zhuǎn)發(fā)到相對空閑的服務(wù)器。

同時查坪,反向代理服務(wù)器還可以減輕后端服務(wù)器的壓力寸宏,比如一些靜態(tài)資源或者緩存數(shù)據(jù),可以直接放在反向代理服務(wù)器上偿曙,不用將這些請求放到后端服務(wù)器氮凝,這樣就可以直接服務(wù)前臺應(yīng)用了。反向代理服務(wù)器還能為后端服務(wù)器阻擋一些網(wǎng)絡(luò)攻擊望忆,提升后臺服務(wù)器的安全性罩阵,反向代理服務(wù)器對于后端服務(wù)器而言,如同產(chǎn)品經(jīng)理和研發(fā)同學(xué)炭臭,能過濾掉不必要的需求永脓,減輕工程師的對接壓力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鞋仍,一起剝皮案震驚了整個濱河市常摧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌威创,老刑警劉巖落午,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肚豺,居然都是意外死亡溃斋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門吸申,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梗劫,“玉大人,你說我怎么就攤上這事截碴∈崆龋” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵日丹,是天一觀的道長走哺。 經(jīng)常有香客問我,道長哲虾,這世上最難降的妖魔是什么丙躏? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任择示,我火速辦了婚禮,結(jié)果婚禮上晒旅,老公的妹妹穿的比我還像新娘栅盲。我一直安慰自己,他們只是感情好敢朱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布剪菱。 她就那樣靜靜地躺著,像睡著了一般拴签。 火紅的嫁衣襯著肌膚如雪孝常。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天蚓哩,我揣著相機(jī)與錄音构灸,去河邊找鬼。 笑死岸梨,一個胖子當(dāng)著我的面吹牛喜颁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播曹阔,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼半开,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赃份?” 一聲冷哼從身側(cè)響起寂拆,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抓韩,沒想到半個月后纠永,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谒拴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年尝江,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片英上。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡炭序,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苍日,到底是詐尸還是另有隱情惭聂,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布易遣,位于F島的核電站,受9級特大地震影響嫌佑,放射性物質(zhì)發(fā)生泄漏豆茫。R本人自食惡果不足惜侨歉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揩魂。 院中可真熱鬧幽邓,春花似錦、人聲如沸火脉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倦挂。三九已至畸颅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間方援,已是汗流浹背没炒。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犯戏,地道東北人送火。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像先匪,于是被迫代替她去往敵國和親种吸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容