從OSI網絡模型到TCP/IP協議族

 

 

 

OSI(開放式互聯模型)七層網絡模型成爲了開放式互聯繫統參考模型,被定義爲通用了的網絡通訊規範。咱們的數據在傳輸的過程,其實就是在不一樣的封裝和解包的過程具體來講就是  發送方經過各類封裝的處理,把數據轉換成比特流的形式,比特流在信號傳輸的硬件媒介中傳輸,接收方再把比特流解封裝處理還原成數據。緩存

1.物理層服務器

  規定了如何爲網絡通訊實現最底層的物理鏈接,以及物理設備的機械、電氣、功能和過程特性。網絡

2.數據鏈路層學習

  規定了如何進行物理地址尋址、如何在物理線路上進行數據(幀frame)的可靠傳遞以及流量控制。blog

3.網絡層排序

  規定了經過哪些網絡節點、什麼樣的網絡路徑來將數據(數據包)從發送方發送到接收方。接口

4.傳輸層同步

  負責整體的數據傳輸和數據控制,提供端到端的交換數據的機制。io

5.會話層互聯網

  在網絡中的兩個節點之間創建、維持和終止通訊。

6.表示層

  在應用程序和網絡之間對數據進行格式化,使之可以被另外一方理解。

7.應用層

  最頂層的OSI層,爲應用程序提供網絡服務。如爲電子郵件、文件傳輸功能提供協議支持。

  應用層協議有HTTP協議、FTP協議、SMTP協議等。

TCP/IP協議

CP/IP協議定義了今天的電子設備如何連入internet網絡,以及數據如何在他們之間傳輸的標準。在今天的基於TCP/IP的互聯網誕生以前,可以使用接口通訊處理實現互聯互通的電腦並很少,並且大部分電腦之間信息的交換並不兼容。

各層的協議:

 TCP/IP——網絡接口層

  主要做用一:數據封裝/解封裝成幀(frame)。

       主要做用二:控制幀傳輸

       主要做用三:流量控制

 

  TCP/IP——網絡層

    說到網絡層不得不提的就是IP協議,它是TCP/IP協議族中最爲核心的協議。全部的TCP、UDP、ICMP、IGMP協議數據都以IP數據報格式傳輸。IP協議提供的是不可靠的、無鏈接的數據報傳輸服務。不可靠是指IP協議不會保證數據報可否成功到達目的地,僅提供傳輸服務,傳輸出錯,則會丟棄出錯的數據報。無鏈接是指IP協議對數據報的處理是獨立的,這也意味着接收方不必定會按照發送順序接收數據報。

  TCP/IP——傳輸層

 如下經常使用端口號:

UDP協議:

  UDP(User Datagram Protocol)即用戶數據報協議,其傳輸機制決定了它的最大優勢——快,同時也決定了它最大的缺點——不可靠、不穩定。

  UDP是無鏈接的,發送數據以前不須要創建鏈接(TCP須要)。減小了開銷和延時。

  UDP是面向報文的,對IP數據報只作簡單封裝(8字節UDP報頭)。減小報頭開銷。

  UDP沒有阻塞機制,寧願阻塞時丟棄數據不傳,也不阻塞形成延時。

  UDP支持一對1、一對多、多對1、多對多通訊。

TCP協議:

  TCP(Transmission Control Protocol)傳輸控制協議,相對於UDP,TCP是面向鏈接的、提供可靠的數據傳輸服務。同時也是較UDP開銷較大的、傳輸速度較慢的。

TCP 提供可靠傳輸,無差錯、不丟失、不重複、按順序。

  TCP 提供全雙工通訊,容許通訊雙方任什麼時候候都能發送數據,發送方設有發送緩存,接收方設有接收緩存。

  TCP 面向字節流 。TCP 並不知道所傳輸的數據的含義,僅把數據看做一連串的字節序列,它也不保證接收方收到的數據塊和發送方發出的數據塊具備大小對應關係。

TCP創建鏈接的三次握手:

 

 

 (1)Client首先向Server發送鏈接請求報文段,同步本身的seq(x),Client進入SYN_SENT狀態。

  (2)Server收到Client的鏈接請求報文段,返回給Client本身的seq(y)以及ack(x+1),Server進入SYN_REVD狀態。

  (3)Client收到Server的返回確認,再次向服務器發送確認報文段ack(y+1),這個報文段已經能夠攜帶數據了。Client進入ESTABLISHED狀態。

  (4)Server再次收到Client的確認信息後,進入ESTABLISHED狀態。

TCP斷開鏈接的四次揮手:

(1)Client向Server發送斷開鏈接請求的報文段,seq=m(m爲Client最後一次向Server發送報文段的最後一個字節序號加1),Client進入FIN-WAIT-1狀態。

  (2)Server收到斷開報文段後,向Client發送確認報文段,seq=n(n爲Server最後一次向Client發送報文段的最後一個字節序號加1),ack=m+1,Server進入CLOSE-WAIT狀態。此時這個TCP鏈接處於半開半閉狀態,Server發送數據的話,Client仍然能夠接收到。

  (3)Server向Client發送斷開確認報文段,seq=u(u爲半開半閉狀態下Server最後一次向Client發送報文段的最後一個字節序號加1),ack=m+1,Server進入LAST-ACK狀態。

  (4)Client收到Server的斷開確認報文段後,向Server發送確認斷開報文,seq=m+1,ack=u+1,Client進入TIME-WAIT狀態。

  (5)Server收到Client的確認斷開報文,進入CLOSED狀態,斷開了TCP鏈接。

  (6)Client在TIME-WAIT狀態等待一段時間(時間爲2*MSL((Maximum Segment Life)),確認Client向Server發送的最後一次斷開確認到達(若是沒有到達,Server會重發步驟(3)中的斷開確認報文段給Client,告訴Client你的最後一次確認斷開沒有收到)。若是Client在TIME-WAIT過程當中沒有再次收到Server的報文段,就進入CLOSES狀態。TCP鏈接至此斷開。

 TCP鏈接可靠性的體現:

  (1)TCP報文段的長度可變,根據收發雙方的緩存狀態、網絡狀態而調整。

  (2)當TCP收到發自TCP鏈接另外一端的數據,它將發送一個確認。

  (3)當TCP發出一個段後,它啓動一個定時器,等待目的端確認收到這個報文段,若是不能及時收到一個確認,將重發這個報文段。

  (4)TCP將保持它首部和數據的檢驗和。若是經過檢驗和發現報文段有差錯,這個報文段將被丟棄,等待超時重傳。

  (5)TCP將數據按字節排序,報文段中有序號,以確保順序的正確性。

  (6)TCP還能提供流量控制。TCP鏈接的每一方都有收發緩存。TCP的接收端只容許另外一端發送接收端緩衝區所能接納的數據。這將防止較快主機導致較慢主機的緩衝區溢出。

***************當你發現本身的才華撐不起野心時,就請安靜下來學習吧****************

相關文章
相關標籤/搜索