OSI與TCP/IP各層的結構與功能,都有哪些協議

前言:面試

今天更新一下計算機網絡的一些很是重要的知識,可能不少人都不知學計算機網絡有什麼用,我想說的是它真的比較重要,像我們學校只要是學計算機這個專業都要學習這門課程。另外你們要是去一些像BAT,阿里,蘑菇街,騰訊....這樣的大公司面試的話,TCP/IP知識也是必不可少的。數據庫

七層協議的體系結構

OSI的七層體系結構概念清楚,理論也很完整,可是它比較複雜並且不實用。在這裏順帶提一下以前一直被一些大公司甚至一些國家政府支持的OSI失敗的緣由:緩存

(1),OSI的專家缺少實際經驗,他們在完成OSI標準時缺少商業驅動力微信

(2),OSI的協議實現起來過度複雜,並且運行效率很低網絡

(3),OSI制定標準的週期太長,於是使得按OSI標準生產的設備沒法及時進入市場(20世紀90年代初期,雖然整套的OSI國際標準都已經制定出來,但基於TCP/IP的互聯網已經搶先在全球至關大的範圍成功運行了)oracle

(4),OSI的層次劃分不太合理,有些功能在多個層次中重複出現app

五層協議的體系結構

學習計算機網絡時咱們通常採用折中的辦法,也就是中和OSI和TCP/IP的有點,採用一種只有五層協議的體系結構,這樣既簡潔又能將概念闡述清楚。
這裏寫圖片描述
結合互聯網的狀況,自上而下地,很是簡要的介紹一下各層的做用。分佈式

(1)應用層(application layer)

應用層的任務是經過應用進程間的交互來完成特定網絡應用。應用層協議定義的是應用進程(進程:主機中正在運行的程序)間的通訊和交互的規則。對於不一樣的網絡應用須要不一樣的應用層協議。在互聯網中應用層協議不少,如域名系統DNS,支持萬維網應用的HTTP協議,支持電子郵件的SMTP協議等等。咱們把應用層交互的數據單元稱爲報文。學習

域名系統(Domain Name System縮寫DNS,Domain Name被譯爲域名)

域名系統是因特網的一項核心服務,它做爲能夠將域名和IP地址相互映射的一個分佈式數據庫,可以令人更方便的訪問互聯網,而不用去記住可以被機器直接讀取的IP數串。(百度百科)例如:一個公司的Web網站可看做是它在網上的門戶,而域名就至關於其門牌地址,一般域名都使用該公司的名稱或簡稱。例如上面提到的微軟公司的域名,相似的還有:IBM公司的域名是www.ibm.com、Oracle公司的域名是www.oracle.com、Cisco公司的域名是www.cisco.com等。網站

HTTP協議

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲普遍的一種網絡協議。全部的WWW文件都必須遵照這個標準。設計HTTP最初的目的是爲了提供一種發佈和接收HTML頁面的方法。(百度百科)

(2)運輸層(transport layer)

運輸層的主要任務就是負責向兩臺主機進程之間的通訊提供通用的數據傳輸服務。應用進程利用該服務傳送應用層報文。「通用的」是指並不針對某一個特定的網絡應用,而是多種應用可使用同一個運輸層服務。因爲一臺主機可同時運行多個線程,所以運輸層有複用和分用的功能。所謂複用就是指多個應用層進程可同時使用下面運輸層的服務,分用和複用相反,是運輸層把收到的信息分別交付上面應用層中的相應進程。
運輸層主要使用如下兩種協議:

1,傳輸控制協議TCP(Transmisson Control Protocol)--提供面向鏈接的,可靠的數據傳輸服務。

2,用戶數據協議UDP(User Datagram Protocol)--提供無鏈接的,盡最大努力的數據傳輸服務(不保證數據傳輸的可靠性)。

UDP的主要特色:

1,UDP是無鏈接的;

2,UDP使用盡最大努力交付,即不保證可靠交付,所以主機不須要維持複雜的連接狀態(這裏面有許多參數);

3,UDP是面向報文的;

4,UDP沒有擁塞控制,所以網絡出現擁塞不會使源主機的發送速率下降(對實時應用頗有用,如IP電話,實時視頻會議等);

5,UDP支持一對1、一對多、多對一和多對多的交互通訊;

6,UDP的首部開銷小,只有8個字節,比TCP的20個字節的首部要短。

TCP的主要特色:

1,TCP是面向鏈接的。(就好像打電話同樣,通話前須要先撥號創建鏈接,通話結束後要掛機釋放鏈接);

2,每一條TCP鏈接只能有兩個端點,每一條TCP鏈接只能是點對點的(一對一);

3,TCP提供可靠交付的服務。經過TCP鏈接傳送的數據,無差錯、不丟失、不重複、而且按序到達;

4,TCP提供全雙工通訊。TCP容許通訊雙方的應用進程在任什麼時候候都能發送數據。TCP鏈接的兩端都設有發送緩存和接收緩存,用來臨時存放雙方通訊的數據;

5,面向字節流。TCP中的「流」(stream)指的是流入進程或從進程流出的字節序列。「面向字節流」的含義是:雖然應用程序和TCP的交互是一次一個數據塊(大小不等),但TCP把應用程序交下來的數據僅僅當作是一連串的無結構的字節流。

(3)網絡層(network layer)

網絡層負責爲分組交換網上的不一樣主機提供通訊服務。在發送數據時,網絡層把運輸層產生的報文段或用戶數據報封裝成分組和包進行傳送。在TCP/IP體系結構中,因爲網絡層使用IP協議,所以分組也叫IP數據報,簡稱數據報
這裏要注意:不要把運輸層的「用戶數據報UDP」和網絡層的「IP數據報」弄混。另外,不管是哪一層的數據單元,均可籠統地用「分組」來表示。
網絡層的另外一個任務就是選擇合適的路由,使源主機運輸層所傳下來的分株,能經過網絡層中的路由器找到目的主機。
這裏強調指出,網絡層中的「網絡」二字已經不是咱們一般談到的具體網絡,而是指計算機網絡體系結構模型中第三層的名稱.
互聯網是由大量的異構(heterogeneous)網絡經過路由器(router)相互鏈接起來的。互聯網使用的網絡層協議是無鏈接的網際協議(Intert Prococol)和許多路由選擇協議,所以互聯網的網絡層也叫作網際層IP層

(4)數據鏈路層(data link layer)

數據鏈路層一般簡稱爲鏈路層。兩臺主機之間的數據傳輸,老是在一段一段的鏈路上傳送的,這就須要使用專門的鏈路層的協議。 在兩個相鄰節點之間傳送數據時,數據鏈路層將網絡層交下來的IP數據報組裝程幀,在兩個相鄰節點間的鏈路上傳送幀。每一幀包括數據和必要的控制信息(如同步信息,地址信息,差錯控制等)。
在 接收數據時,控制信息使接收端可以知道一個幀從哪一個比特開始和到哪一個比特結束。這樣,數據鏈路層在收到一個幀後,就可從中提出數據部分,上交給網絡層。
控制信息還使接收端可以檢測到所收到的幀中有偏差錯。若是發現差錯,數據鏈路層就簡單地丟棄這個出了差錯的幀,以免繼續在網絡中傳送下去白白浪費網絡資源。若是須要改正數據在鏈路層傳輸時出現差錯(這就是說,數據鏈路層不只要檢錯,並且還要糾錯),那麼就要採用可靠性傳輸協議來糾正出現的差錯。這種方法會使鏈路層的協議複雜些。

(5)物理層(physical layer)

在物理層上所傳送的數據單位是比特。
物理層的做用是實現相鄰計算機節點之間比特流的透明傳送,儘量屏蔽掉具體傳輸介質和物理設備的差別。使其上面的數據鏈路層沒必要考慮網絡的具體傳輸介質是什麼。「透明傳送比特流」表示經實際電路傳送後的比特流沒有發生變化,對傳送的比特流來講,這個電路好像是看不見的。

在互聯網使用的各類協議找那個,最重要和最著名的就是TCP/IP兩個協議。如今人們常常提到的TCP/IP並不必定單指TCP和IP這兩個具體的協議,而每每表示互聯網所使用的整個TCP/IP協議族。

上面咱們對計算機網絡的五層體系結構有了初步的瞭解,下面附送一張七層體系結構圖總結一下。圖片來源:https://blog.csdn.net/yaopeng...
七層體系結構圖

參考:

《計算機網絡》第七版 謝希仁

歡迎關注個人微信公衆號:"Java面試通關手冊"(堅持原創,分享美文,分享各類Java學習資源,面試題,以及企業級Java實戰項目回覆關鍵字免費領取):
微信公衆號

相關文章
相關標籤/搜索