TCP/IP 中的OSI分層模型詳解

一 鏈接人與人的計算機網絡

      計算機網絡最初的目的是連續一個個獨立的計算機, 使他們組成一個個更強有力的計算環境。簡而言之,就是爲了提升生產力。從批處理時代到計算機網絡時代, 毋庸置疑,都體現了這一目的。然而,如今卻彷佛有了微妙的變化。       現代計算機網絡的首要目的之一,能夠說是連接人與人。置身於世界各地的人們能夠經過網絡創建聯繫、相互溝通、交流思想       在計算機網絡與信息通訊領域裏,人們常常說起「協議」一詞。互聯網中經常使用的具備表明性的協議有IP, TCP,HTTP等而 LAN(局域網)中經常使用的協議有 IPX/SPX等       「計算機網絡體系結構」 將這些網絡協議進行了系統的概括。TCP/IP就是IP、TCP、HTTP等協議的組合。如今 不少設備都支持TCP/IP。除此以外,還有不少其餘類型的網絡體系結構。例如,Novell公司的IPX/SPX、蘋果公司的AppleTalk(僅限蘋果公司使用)、IBM 公司開發的用於構建大規模的網絡的SNA 以及前DEC公司開發的DECnet等。前端

網絡體系結構 協議 主要用途
TCP/IP IP,ICMP, TCP, UDP, HTTP, TELNET, SNMP, SMTP..... 互聯網、局域網
IPX/SPX IPX,SPX, NPC... 我的電腦局域網
AppleTalk DDP、RTMP、AEP、ATP、ZIP 蘋果公司現有產品的局域網
OSI FTAM,MOTIS, VT, ---
XNS IDP、SPP、PEP..... 施樂公司網絡

二 CPU 與 OS

      CPU 又叫中央處理器。它如同一臺計算機的心臟,每一個程序實際上都由他調度執行的。 CPU的性能很大程度上也決定着一臺計算機的處理性能。 所以人們常說計算機的發展史實際上就是CPU的發展史。       目前人們經常使用的CPU有 Intel Core、 Intela Tom以及 ARM Cortex等產品       OS 譯做操做系統,是一種基礎軟件。它集合了CPU管理,內存管理、計算機外圍設備管理以及程序運行管理等重要功能,一個CPU一般在同一時間只能運行一個程序。爲了讓多個程序同時執行,操做系統採用 CPU時間片輪起色制,在多個程序之間進行切換,合理調度。 這種方式叫作多任務調度。瀏覽器

三 協議的分層

      OSI 參考模型中,將通訊協議中必要的功能 分紅了7層。經過這些分層,使得 那些比較複雜的網絡協議更加簡單化。       這一模型中, 每一個分層都接受由他下一層所提供的特定服務,而且負責爲本身的上一層提供特定的服務。上下層之間進行交互時所遵循的約定叫作「接口」。同一層 之間的交互所遵循的約定叫作「協議」。       協議分層就如同計算機軟件中的模塊化開發。OSI 參考模型的建議是比較理想化的。他但願實現從第一層到第七次的模塊,並將它們組合起來實現網絡通訊。分層能夠將每一個分層獨立使用,即便系統中某些分層發生變化,也不會波及整個系統。所以能夠構建一個擴展性和靈活性都很強的系統。 經過分層可以細分通訊功能,更易於單獨實現每一個分層的協議,並界定每一個分層的具體責任和義務。這些都屬於分層的優勢。       而分層的劣勢可能就在於過度模塊化,是處理變得更加沉重以及每一個模塊都不得不實現類似的處理邏輯等問題 安全

image.png

四 OSI參考模型

      OSI參考模型將這樣一個複雜的協議整理並分爲了易於理解的七層分層markdown

分層名稱 功能
應用層 爲應用程序提供服務並規定應用程序中通訊相關的細節
表示層 將應用層處理的信息轉換爲適合網絡傳輸的格式,或未來自下一層的數據轉換爲上層可以處理的格式。所以它主要負責數據格式的轉換。 具體來講,就是將設備固有的數據抓換爲網絡標準傳輸格式。不一樣的設備對同一比特流解釋的結果可能不一樣。所以,使他們保持一致是這一層的主要做用
會話層 負責創建和斷開通訊鏈接(數據流動的邏輯通路)以及數據的分割等數據傳輸相關的管理
傳輸層 起着可靠傳輸的做用,只在通訊雙方結點上進行處理,而無需在路由器上處理
網絡層 將數據傳輸到目標地址。目標地址能夠是多個網絡經過路由器鏈接而成的某個地址。所以這一層主要負責尋址和路由選擇
數據鏈路層 負責物理層面上互聯、節點之間的通訊傳輸。例如與1 個以太網相連的2個節點之間的通訊
物理層 負責 0、1鼻涕流與電壓的高低,光的閃滅之間的互換

網絡層與傳輸層的關係: 在不一樣的網絡體系結構下,網絡層有時也不能保證數據的可達性。例如 在至關於TCP\IP 網絡層的IP協議中,就不能保證數據必定會發送到對端地址。所以,數據傳送過程當中出現數據丟失、順序混亂等問題可能性會大大增長。像這樣的沒有可靠性傳輸要求的網絡層中,能夠有傳輸層負責提供「正確傳輸數據的處理」 TCP/IP中,網路層與傳輸層相互協作以確保數據包可以傳送到世界各地,實現可靠傳輸。網絡

五 TCP/IP 中的 OSI

      從字面意義上講,有人可能會認爲 TCP/IP 是指 TCP與IP兩種協議。實際生活當中有時也確實是指着兩種協議。而後再不少狀況下,他只是利用了IP進行通訊時所必須用到的協議羣的統稱。具體來講,IP或ICMP、TCP與UDP 、HTTP等等都屬於TCP/IP的協議。他們與TCP或IP的關係緊密,是互聯網必不可少的組成部分。TCP/IP 一詞泛指這些協議,所以,有時也稱TCP/IP 爲國際協議族。架構

      咱們上邊寫到的OSI參考模型中各個分層的做用,TCP/IP 誕生以來的各類協議其實也能對應到OSI參考模型中。以下圖 模塊化

image.png

5.1 硬件(物理層)

      TCP/IP 的最底層是負責數據傳輸的硬件。這種硬件就至關於以太網或電話線路等物理層的設備。關於他的內容一直沒法統必定義。由於只要人們在物理層面上所使用的傳輸媒介不一樣,網絡的寬帶、可靠性、安全性、延遲等都會有所不一樣,而在這些方面又沒有一個既定的標準。總之,TCP/IP 是在網絡互連的設備之間可以通訊的前提下才被提出的協議。性能

5.2 網絡接口層(數據鏈路層)

      網絡接口層利用以太網中的數據鏈路層進行通訊,所以屬於接口層。也就是說把它當作 NIC 起做用的 「驅動程序」也無妨。驅動程序是在操做系統與硬件之間起橋樑做用的軟件。計算機的外圍附加設備或擴展卡,不是直接插到電腦上或電腦的擴展槽上就能立刻使用的,還須要響應的驅動程序的支持。例如換了一個NIC網卡,不只須要硬件,還須要軟件才能真正投入使用。所以,人們經常還須要在操做系統的基礎上安裝一些驅動軟件以便使用這些附加硬件。編碼

5.3 互聯網層(網絡層)

      互聯網層使用IP協議,它至關於OSI 模型中的第三層網絡層。IP協議基於IP地址轉發分包數據。       TCP/IP 協議 分層中的互聯網層與傳輸層的功能一般有操做系統提供。尤爲是路由器,他必須實現經過互聯網層轉發分組數據包的功能。此外 連接互聯網的全部主機跟路由器必須實現IP的功能。其餘連接互聯網的網絡設備就不必必定實現IP或TCP的功能。       IP 是跨越網絡傳送數據包,使整個互聯網都能收到數據的協議。IP協議使數據可以發送到地球的另外一端,這期間他使用IP 地址做爲主機的標識。 IP還隱藏着數據鏈路層的功能。 經過IP 相互通訊的主機之間不論通過怎樣的底層數據鏈路都能實現通訊。 雖然IP 也是分組交換的一種協議,可是他不具備重發機制。即便分組數據包未能到達對端主機也不會重發。所以 屬於非可靠傳輸協議spa

5.4 傳輸層

      TCP/IP 的傳輸層有兩個具備表明性的協議。該層的功能自己與OSI 參考模型中的傳輸層相似。       傳輸層最主要的功能就是可以讓應用程序之間實現通訊。計算機內部,一般同一時間運行着多個程序。爲此 必須分清是哪些程序與哪些程序 在進行通訊。識別 這些應用程序的是端口號

  • TCP       TCP 是一種 面向有連接的傳輸層協議。他能夠保證兩端通訊主機之間的通訊可達。 TCP 可以正確處理在傳輸過程當中丟包、傳輸順序亂掉等異常狀況。 此外,TCP 還可以 有效利用寬帶,緩解網絡擁堵。 然而爲了 創建與斷開鏈接,有時他須要至少7次的發包收包,致使網絡流量的浪費。此外 爲了提升網絡的利用率,TCP 協議中 定義了各類各樣複雜的規範,所以不利於視頻會議等場合使用。
  • UDP       UDP 有別於TCP, 他是一種面向無鏈接的傳輸層協議,UDP 不會關注對端是否真的收到傳送過去的數據, 若是須要檢查對端是否收到分組數據包,或者對端是否鏈接到網絡,則須要在應用程序中實現。 UDP 經常使用於分組數據較少或多播、廣通播信以及視頻通訊等多媒體領域。
5.5 應用層(會話層以上的分層)

      TCP/IP 的分層中,將OSI 參考模型中的會話層、表示層和應用層的功能都集中到了應用程序中實現。這些功能有時由一個單一的程序實現,有時也可能會由多個程序實現。所以 細看TCP/IP 的應用程序功能會實現,他不只實現OSI模型中應用層的內容,還要實現會話層與表示層的功能。       TCP/IP 應用的架構絕大多數屬於客戶端/服務端模型。提供服務的程序叫服務端,接受服務的程序叫客戶端。在這種通訊模式中, 提供服務的程序會預先被部署在主機上,等待接收任什麼時候刻客戶可能發送的請求。客戶端能夠隨時發送請求給服務端, 有時服務端 可能會處理異常、超出負載等狀況,這時客戶端能夠在等待片刻後重發一次請求。       瀏覽器與服務端之間通訊所用的協議是HTTP。所傳輸的數據的主要格式是HTML,WWW中的HTTP屬於OSI應用層的協議, 而HTML 屬於表示層。

六 TCP分層模型與 通訊示例。

TCP/IP 到底若是在媒介上進行傳輸的呢

6.1 數據包首部

      每一個分層中都會對所發送的數據附加一個首部,在這個首部中包含了該層必要的信息,如發送的目標地址以及協議相關信息。一般,爲協議提供的信息爲包首部,所要發送的內容爲數據。如圖,在下一層的角度看,從上一分層收到的包所有都被認爲是本層的數據。

image.png

6.2 發動數據包

      從TCP/IP 通訊上看,甲給乙發送一封郵件, 咱們用過這個例子來降價一個TCP/IP 通訊的過程。

  • ① 應用程序處理       啓動應用程序新建郵件,而後點擊發送按鈕就開始TCP/IP 的通訊了。 首先,應用程序會進行編碼處理。編碼轉化後,應用在發送郵件的那一刻創建TCP/IP 連接, 從而利用這個TCP 連接發送數據。她的過程首先是將應用的數據發送給下一層的TCP,在作實際的轉發處理。
  • ② TCP模塊的處理       TCP根據應用的指示,負責創建連接、發送數據以及斷開連接。TCP提供將應用層發來的數據順利發送至對端的可靠傳輸。 爲了實現TCP的這一個功能,須要在應用層的數據的前端附加一個TCP首部。TCP首部包括源端口號和目標端口號、序號以及校驗和。隨後將附加了TCP首部的包在發送給IP
  • ③ IP模塊的處理       IP將TCP傳過來的TCP首部和TCP 數據合起來當作本身的數據,並在TCP首部的前端在加上本身的IP首部。所以,IP數據包中IP首部後面緊跟着TCP首部,而後纔是應用的數據首部和數據自己。IP首部中包含接收端IP地址以及發送端IP地址。緊隨IP首部的還有用來判斷其後面數據是TCP仍是UDP的信息。       IP包生成後,參考路由控制表決定接受此IP包的路由或主機。隨後,IP包將被髮送給連接這些路由器或主機網絡接口的驅動程序,以實現真正的發送數據。       若是尚不知道接收端的MAC地址,能夠利用ARP查找,只要知道了對端的MAC地址,就能夠將MAC地址和IP地址交給以太網的驅動程序,實現數據傳輸
  • ④ 網絡接口的處理       從IP傳過來的IP包,對於以太網驅動來講不過就是數據。給這些數據附加上以太網首部並進行發送處理。以太網首部中包含接收端的MAC地址、發送端MAC地址以及標誌以太網類型的數據的協議。根據以上信息產生的以太網數據包將經過物理層傳輸給接收端。發送處理中的FCS 由硬件計算, 添加到包的最後。設置FCS的目的是爲了判斷數據包是否因爲噪聲而被破壞。

TCP/IP 各層對郵件的收發處理.png

6.3 通過數據鏈路的包

分層中包的結構.png

      分組數據包通過以太網的數據鏈路時的大體流程如上圖,不過該圖對各個包首部作了簡化。       包流動的時,從前日後依次被附加了以太網首部、IP包首部、TCP包首部以及應用本身的包首部和數據。而包的最後則追加了以太網包尾。       每一個包首部中至少都會包含兩個信息:一個是發送端和接收端,另外一個是上一層的協議類型。       通過每一個協議分層時,都必須有識別包發送端和接收端的信息。以太網會用MAC地址,IP會用IP地址,而TCP/UDP 則會用端口號做爲識別兩端主機的地址。即便是在應用程序中,像電子郵件地址這樣的信息也是一種地址標識。這些地址信息都在每一個包經由各個分層,附加到協議對應的包首部裏邊。       此外,每一個分層的包首部中還包含一個識別位,它是用來標識上一層協議的種類信息,例如 以太網的包首部中的以太網類型,IP 中的協議類型以及TCP/UDP 中的兩個端口的端口號等都起着識別協議類型的做用。

6.4 數據包接收處理

包的接收流程是發送流程的逆序過程

  • ⑤ 網絡接口的處理       主機收到以太網包之後,首先從以太網的包首部找到MAC 地址判斷是否爲發給本身的包,若是接收到的包切好是發給本身的包,就查找以太網包首部中的類型域從而肯定以太網協議所傳送過來的數據。在這個例子中數據類型顯然是IP包,由於再將數據傳給處理IP的子程序。
  • ⑥ IP模塊的處理       IP模塊收到IP包首部及後面的數據部分之後,也作相似的處理。若是判斷的出包首部中的IP地址與本身的IP地址匹配,則可接受數據並從中查找上一層的協議。若是上一層是TCP就將IP包首部以後的部分傳給TCP處理;若是是UDP則將IP包首部後面的部分傳給UDP處理。對於有路由器的狀況下,接收端地址每每不是本身的地址,此時,須要藉助路由控制表,在調查應該送達的主機或路由器之後再轉發數據
  • ⑦ TCP模塊的處理 在TCP模塊中,首先會計算一下校驗和,判斷數據是否被破壞。最後檢查是否按照序號接收數據。最後檢查端口號,肯定具體的應用程序。數據接收完畢後,接收端則發送一個「確認回執」給發送單。數據被完整的接收之後,會傳給由端口號識別的應用程序。
  • ⑧ 應用程序的處理       接收端應用程序會直接接收發送端發送的數據。經過解析數據能夠得到郵件的收件人地址是乙的地址。若是主機B上沒有乙的郵件信箱,那麼主機B返回給發送端一個「無效收件地址」的報錯信息。       但在這個例子中,主機B上剛好有乙的收件箱,因此主機B和收件人乙可以收到電子郵件的正文。郵件會被保存到本機的硬盤上。若是保存也能正常進行,那麼接收端會返回一個「處理正常」的回執給發送端。反之,一旦出現磁盤滿、郵件未能保存成功等問題,就會發送一個處理異常的的回執給發送端。
相關文章
相關標籤/搜索