【大話存儲】學習筆記(7章),OSI

任何系統(tǒng)之間吱涉,如果需要通信刹泄,都需要一套自己的協(xié)議系統(tǒng)。這個協(xié)議系統(tǒng)一般要定義互相通信的語言怎爵,以及硬件特石。

OSI是被提取抽象出來的系統(tǒng)間通信模型,中文意思是“開放式系統(tǒng)互聯(lián)”鳖链,是描述多個系統(tǒng)之間交流的通用模型姆蘸。

OSI模型

OSI初步

在講OSI之間,我們首先看一個例子,PC a向PC b發(fā)送數(shù)據(jù)包的過程如下:

  • a在內存中通過定義的語言生成數(shù)據(jù)包

  • 將數(shù)據(jù)包通過總線傳給TCP/IP協(xié)議處理單元乞旦,告訴對方的IP地址贼穆、UDP還是TCP、端口號

  • TCP/IP處理模塊收到包之后兰粉,封裝故痊,通過總線發(fā)送給以太網(wǎng)卡

  • 以太網(wǎng)卡再進行編碼,變成高低電平震蕩發(fā)給交換機

  • 交換機將數(shù)據(jù)包交換到b的接口

  • b輸送到以太網(wǎng)卡的解碼芯片玖姑,去掉以太網(wǎng)頭然后產生中斷愕秫,將數(shù)據(jù)包送到內存

  • TCP/IP處理模塊提取IP頭和TCP頭,以便區(qū)分應該輸送到哪個應用程序的緩沖區(qū)內存焰络。

  • 送到b的應用程序緩沖區(qū)內存

可以發(fā)現(xiàn)里面最重要的就是三個元素

  • 連:通信雙方需要連通起來戴甩。

  • 找:指的是通信雙方必須能區(qū)分自己和對方。

  • 發(fā):定義了如何將數(shù)據(jù)發(fā)到對方闪彼。

OSI的七個層次

OSI模型將系統(tǒng)通信劃分為了7個層次甜孤,最上面的三個層次可以歸屬到應用層。這個層不需要關心如何將數(shù)據(jù)傳送到對方畏腕,只關心如何組織和表達數(shù)據(jù)缴川。

應用層

應用層是OSI的最上層,表示一個系統(tǒng)對另一個系統(tǒng)要傳達的最終消息描馅。

只關注數(shù)據(jù)把夸, 不關注指令如何發(fā)送

表示層

表示層就是對應用層數(shù)據(jù)的一種表示。

發(fā)送方必須用雙方規(guī)定好的格式來表示信息:可以嵌入在實體數(shù)據(jù)中铭污。

會話層

會話層:建立會話交互機制恋日。實際是雙方的應用程序之間的交互。

應用層嘹狞、表示層岂膳、會話層的數(shù)據(jù)內容都被封裝起來,交給押運員傳輸層磅网。

TCP/IP只有4層:應用層闷营、傳輸層、網(wǎng)絡層知市、物理鏈路層傻盟,它將OSI的應用層、表示層嫂丙、會話層合并為一層娘赴,即應用訪問層。意思是這個層全部與應用程序相關的邏輯跟啤,與網(wǎng)絡通信無關诽表。應用程序只需要調用下層的接口就可以完成通信唉锌。

下四層的作用是把上三層的數(shù)據(jù)成功送到目的地。

傳輸層

典型的傳輸層程序如下:

  • TCP協(xié)議的作用是保證上層數(shù)據(jù)能傳輸?shù)侥康牡馗妥唷n愃曝涍\公司的押運員袄简,不管通過什么渠道(直達還是下一跳),不管物理鏈路的類型泛啸,只要送到即可绿语。

  • 如果出現(xiàn)錯誤,需要重新發(fā)送候址。每件貨物到了目的地必須找收件人簽字(TCP的ACK應答包)或者一批貨物到了以后一次性簽收吕粹。(滑動窗口

  • 最后回公司登記

TCP主要處理擁塞和流量控制。路由器是調度中心岗仑,它可以決定走哪條路匹耕。TCP不能調度,它只是在發(fā)生了擁擠就只能通知后續(xù)的貨物慢點發(fā)荠雕。如果道路暢通稳其,則通知后面的貨物加速發(fā)送。

那么TCP是怎么知道鏈路是否擁塞呢炸卑?它可以通過接收方返回的ACK應答來判斷鏈路擁擠的既鞠。如果半天都沒收到對方的簽字,說明擁塞矾兜,有丟失

** 傳輸層的程序一定運行在通信雙方的終端設備上。**而不是在中間的互聯(lián)設備上患久。

因為傳輸層是一種端到端的保障機制椅寺,必須保證成功收到了并成功處理數(shù)據(jù),才算發(fā)送成功了蒋失。如果只到了對方的網(wǎng)卡返帕,但是斷電了,也不叫端到端保障篙挽。

具體的可以再看從輸入網(wǎng)址到瀏覽器返回內容(二)荆萤,TCP/IP篇

網(wǎng)絡層

上面說到了傳輸層其實只是一個押運員,它并不能進行調度铣卡,那么如何選路就交給了網(wǎng)絡層链韭。

同樣以客戶寄貨物為例,當客戶把貨物交給貨運公司的時候煮落,會填寫目的地址敞峭,至于應該走哪條路,統(tǒng)統(tǒng)不管蝉仇,全部交給網(wǎng)絡層處理旋讹。

  • 貨運公司為每件貨物貼上IP頭地址標簽

  • 貨運公司掌握了全球范圍的地址信息(路由表

  • 選擇了一條路就上路殖蚕。

  • 貨物每中轉到一個地方就交給那個地方的調度,由調度來決定下一站到哪里沉迹。

  • 舊調度不必告訴新調度最終的目的怎么走睦疫,因為所有調度都知道最終的目的。

總結一下就是鞭呕,客戶寄送貨物的時候需要給出最終的目的地址蛤育,不管這個貨物途徑哪個中轉站,所有的中轉站都會知道最終的目的地址琅拌。

比如缨伊,要從新疆將貨物寄到青島,但是新疆到青島沒有直到的火車进宝,所以只能去北京轉出刻坊。

那么新疆的調度會去查找路由表,發(fā)現(xiàn)必須先到北京党晋。注意此時在貨物上貼上的還是青島的標簽谭胚,而不是北京的標簽,但是會將貨物發(fā)到去北京的火車上未玻。

貨物到北京灾而,查看最終的目的地,會查找北京調度中心的路由表扳剿,此路由表與新疆的表不同旁趟。于是將貨物送到去青島的火車。

可以看出** 路由器就是調度的角色**

比如從青島訪問北京的服務器庇绽,具體步驟如下:

  • 首先必須知道服務器的IP地址锡搜,用這個IP地址作為最終目的地址組裝成數(shù)據(jù)包,發(fā)送給青島的Internet提供商(下面叫運營商)的路由器

  • 運營商的路由器解析目的IP地址瞧掺,發(fā)現(xiàn)應該從1號端口發(fā)送出耕餐,于是發(fā)到了河北的另一臺路由器。

  • 河北路由器根據(jù)目的IP查找路由表辟狈,發(fā)現(xiàn)需要從8口出

  • 多次中轉以后肠缔,發(fā)到了北京的路由器。

  • 最終到了北京的服務器哼转,將這個包傳送到這臺服務器的網(wǎng)卡明未,并提交到TCP/IP協(xié)議處理的內存空間。

  • 發(fā)現(xiàn)是一個TCP握手數(shù)據(jù)包壹蔓,所以返回一個確認包亚隅,三次握手完成后,就可以向服務器發(fā)送HTTP請求來獲取網(wǎng)頁資源庶溶。

在中轉的過程中煮纵,目的IP并不會改變懂鸵,改變的只是MAC地址,也就是說會將MAC地址改為下一站的地址行疏。

數(shù)據(jù)鏈路層

數(shù)據(jù)鏈路層:連通兩個設備之間的鏈路匆光,將上層的數(shù)據(jù)包再次打包成對應鏈路特定的格式。按照對應鏈路的規(guī)則在鏈路上傳輸給對方酿联。

數(shù)據(jù)鏈路就好比交通規(guī)則:上路之前還需要看公路的質量怎么樣终息,和對方商量傳輸?shù)氖乱恕?/p>

鏈路層的作用:

  • 協(xié)商鏈路參數(shù):雙工、速率贞让、鏈路質量

  • 打包成周崭,加上同步頭,一次傳輸一句或者一個字符一個字符(取決于上層的選擇)

  • 鏈路層程序調用物理層提供的接口喳张,將幀交給物理層续镇。

  • 提供一些保障機制,在每個幀之后加一個校驗字段销部。如果不符說明鏈路干擾摸航,直接丟棄,不過不會報告錯誤舅桩,因為上層對鏈路層的錯誤不關心酱虎。接收方的傳輸層會感知某個包沒有到達,重新傳送不完整的包擂涛。鏈路層只偵錯读串,不糾錯。

兩臺PC之間的通信和兩個路由器之間通信是有區(qū)別的撒妈。

路由間的通信:

簡單的路由設備工作在OSI的第三層恢暖,即網(wǎng)絡層,沒有上4層的處理邏輯踩身。

所以收到包之后胀茵,只檢查包中的IP地址社露,不改變IP頭之上的其他內容挟阻。

如果有NAT功能的路由器,會對IP包的源或者目的IP地址做修改峭弟。

下圖為通信路徑上各個設備所作用的層次示意圖:


image.png
  • PC A上的瀏覽器要訪問PC B上的Web服務附鸽,首先調用WinSock接口,訪問OS內核中的TCP/IP協(xié)議棧瞒瘸,將目的IP和目的端口以及數(shù)據(jù)(HTTP GET請求)告訴TCP/IP協(xié)議棧

  • 協(xié)議棧發(fā)現(xiàn)與PC B不存在鏈接坷备,所以通過三次握手與B的協(xié)議棧建立連接。
    (A的協(xié)議棧組裝第一次握手包情臭,發(fā)給OS的內核緩沖區(qū)省撑,調用網(wǎng)卡驅動從緩沖區(qū)將IP包編碼并傳遞出去赌蔑,因為握手包很小,所以只需要一個幀竟秫。)

  • 幀到達路由器A的緩沖區(qū)娃惯,產生中斷信號,去掉以太網(wǎng)頭肥败,發(fā)送到路由器A的內存趾浅,等待IP轉發(fā)邏輯塊處理(IP路由協(xié)議計算模塊),分析出IP包的頭部目的IP地址馒稍,查找路由表確定出去的端口號

  • 查找出后皿哨,從網(wǎng)卡2出發(fā)送到路由器B的網(wǎng)卡2.通過同樣的過程,發(fā)送到PC B的網(wǎng)卡緩沖區(qū)纽谒,網(wǎng)卡產生中斷证膨,通過總線傳送到TCP/IP的協(xié)議棧緩沖區(qū)內存。

  • PC B的協(xié)議棧分析出IP是自己的佛舱,端口號是80椎例,同時握手標識位是二進制1,就知道是從源設備向Web服務程序所監(jiān)聽的端口發(fā)起的握手連接请祖。所以回復IP包給PC A订歪,PC A再回一個最終確認的包。

  • 握手成功肆捕,PC A的協(xié)議棧將緩沖區(qū)中有瀏覽器發(fā)送過來的HTTP GET請求數(shù)據(jù)組裝成TCP/IP數(shù)據(jù)包發(fā)送給PC B刷晋。PC B獲得數(shù)據(jù)包之后,分析TCP 端口號慎陵,根據(jù)對應關系將數(shù)據(jù)放到監(jiān)聽這個端口的應用程序的緩沖區(qū)內存眼虱。

  • 應用程序收到GET請求后,觸發(fā)Web服務邏輯流程席纽,返回Web數(shù)據(jù)捏悬。同樣由B的協(xié)議棧發(fā)送給PC機 A

未收到確認的包會放到緩沖區(qū)中润梯,不會刪除过牙,直到收到對方的確認。

所以即使中途的設備把包丟棄了纺铭,運行在兩端的TCP/IP協(xié)議依然會重傳寇钉,這就是端到端的保障,因為設備中途網(wǎng)絡設備不會緩存發(fā)送的數(shù)據(jù)舶赔,更不會自動重傳扫倡。

現(xiàn)在我們來對比一下IP頭和TCP頭的區(qū)別:

  • IP頭是個標簽,用來查看是誰發(fā)的貨物竟纳。

  • TCP頭是用來確認由哪個上層應用程序來處理收到的包撵溃。(用端口號來決定)

物理層

物理層:在一種介質上將數(shù)據(jù)編碼發(fā)送給對方疚鲤。

注意鏈路層是控制物理層的。

我們可以把物理層看做傳送帶缘挑,不會進行貨物分批石咬,所以需要鏈路層給每批貨物加標志性的頭,接收方看到標志了以后就知道新一批貨物來了卖哎。

經(jīng)過物理層編碼后鬼悠,最終變成了一串bit流。通過電路振蕩傳輸給對方亏娜,收到bit流之后焕窝,提交給鏈路層程序,剝去鏈路層同步頭维贺、幀頭幀尾它掂、控制字符。

MTU ,最大傳輸單元:每種鏈路都有自己最合適的分批大小

如果一次傳輸傳送大于這個大小的貨物溯泣,超過了鏈路接收放的處理吞吐量虐秋,會造成緩沖區(qū)溢出。

不過TCP和IP協(xié)議都會給貨物分批垃沦。TCP會首先給貨物分批客给,到了IP層,會按照鏈路層的分批大小來進行分批肢簿,如果TCP的分批大小已經(jīng)小于鏈路層的分批靶剑,不會再分。

被IP層分批的貨物池充,最終會由接受方的IP層再組裝桩引,但是由TCP分批的貨物,接收方的TCP層不會合并收夸。對貨物的處理分析全部交由上層的應用程序來處理

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末坑匠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子卧惜,更是在濱河造成了極大的恐慌厘灼,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件序苏,死亡現(xiàn)場離奇詭異手幢,居然都是意外死亡捷凄,警方通過查閱死者的電腦和手機忱详,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跺涤,“玉大人匈睁,你說我怎么就攤上這事监透。” “怎么了航唆?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵胀蛮,是天一觀的道長。 經(jīng)常有香客問我糯钙,道長粪狼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任任岸,我火速辦了婚禮再榄,結果婚禮上,老公的妹妹穿的比我還像新娘享潜。我一直安慰自己困鸥,他們只是感情好,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布剑按。 她就那樣靜靜地躺著疾就,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艺蝴。 梳的紋絲不亂的頭發(fā)上猬腰,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音猜敢,去河邊找鬼漆诽。 笑死,一個胖子當著我的面吹牛锣枝,可吹牛的內容都是我干的厢拭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼撇叁,長吁一口氣:“原來是場噩夢啊……” “哼供鸠!你這毒婦竟也來了?” 一聲冷哼從身側響起陨闹,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤楞捂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后趋厉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寨闹,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年君账,在試婚紗的時候發(fā)現(xiàn)自己被綠了繁堡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖椭蹄,靈堂內的尸體忽然破棺而出闻牡,到底是詐尸還是另有隱情,我是刑警寧澤绳矩,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布罩润,位于F島的核電站,受9級特大地震影響翼馆,放射性物質發(fā)生泄漏割以。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一应媚、第九天 我趴在偏房一處隱蔽的房頂上張望拳球。 院中可真熱鬧,春花似錦珍特、人聲如沸祝峻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莱找。三九已至,卻和暖如春嗜桌,著一層夾襖步出監(jiān)牢的瞬間奥溺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工骨宠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浮定,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓层亿,卻偏偏與公主長得像桦卒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子匿又,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內容