計算機體系網路結構分層概述物理層
物理層上傳送的單位為位元,規定了網路的一些電器特定,主要負責0,1位元流與電子訊號之間的轉換,如果沒有物理層,0,1 構成的位元
流將會無法在物理介質中傳播。
鏈路層資料鏈路層,又稱作為鏈路層,單純的0和1是沒有任何意義的,必須規定其解讀方式,多少個電訊號算一組,每個電訊號又有什麼意義,這就是資料鏈路層的作用,資料鏈路層,規定主要有三個功能,分別是封裝成幀、透明傳輸、差錯控制。將會依次解釋這三個內容。
封裝成幀在一段資料的前後分別新增首部和尾部,來對幀與幀之間實現一個定界。定界如下
透明傳輸由於不管什麼資料,所傳送的都應該能在鏈路上傳送,因此透明傳輸會帶來一個問題,當資料中的位元組合恰好一致的時候,如果採用不適當的措施,將會造成資料被切分。如下圖所示。
這裡使用位元組填充法實現透明傳輸的問題,傳送端的資料在鏈路層中出現控制字元SOH或者ETO的時候,在前面新增一個跳脫字元ESC,如果ESC也出現的話,這裡就在ESC之前繼續新增一個ESC實現轉義,如下所示。
差錯控制在資料傳輸的過程中,如果出現丟失,或者幀損壞,這裡就需要差錯控制來進行檢測和糾正,這個協議將會在網路層中進行說明。
MAC地址資料幀準備好了,這裡還有一個問題,計算機A和計算機B之間資料相互發送,但是誰傳給誰,如何區分,這裡MAC地址便出現了。MAC地址,連人網路的每一個計算機都會有網絡卡介面,每一個網絡卡都會有一個唯一的地址,這個地址稱作為MAC地址,計算機網路之間相互傳送的時候,都會使用MAC地址進行相互的傳送。
傳輸層透過網路層,A已經發送到了B,在這裡就有了傳輸層,傳輸層的主要作用,為互相通訊的應用程序,提供資料傳輸服務,當計算機A與計算機B通訊時,在傳輸層上,還需要指定一個埠,來給特定的應用程式,即,傳輸層功能是建立埠到埠的通訊,相比網路層的功能是建立主機到主機的通訊。
在傳輸層中,主要使用TCP/UDP協議。
TCP 傳輸控制協議,在資料傳輸的時候,會建立會話,同時會把需要傳輸的檔案進行分段,提供可靠傳輸和流量控制,例如下載影片,當資料較大的時,用的是TCP協議。
UDP 協議,一個數據包就能完成資料通訊,也就是說不需要建立會話,不需要流量控制,同時也是不可靠傳輸,例如DNS域名解析,螢幕廣播,這裡使用的就是UDP協議。
應用層當資料傳輸到了傳輸層的資料之後,接下來需要解讀,因為網際網路開放式的,應用層作用規定應用的資料格式,例如TCP協議可以傳輸Email,WWW,FTP等,這些協議的資料格式。例如域名的DNS,全球資訊網的HTTP協議,電子郵件的SMTP協議等等。這些資料單元稱之為報文。
TCP/IP基礎具體含義TCP/IP這裡指的是一些協議群,具體來說,這裡指的是IP或者ICMP,TCP,UDP,FTP等,這些協議,以及HTTP等的TCP/IP協議,等等這些協議都統統稱之為TCP/IP網際協議群。在網際網路進行通訊的時候,需要相應的網路協議,TCP/IP原本就是為網際網路開發定製的協議,這裡網際網路協議就是TCP/IP,TCP/IP就是網際網路的一些協議。這裡協議如下圖所示
基本工作原理TCP/IP模型有四層,分別是應用層,網際層,網路介面層,這四層,每層分別具有不同的功能,TCP/IP協議協議是一組在不同層上的多個協議的組合,每層在實現自身的情況下直接提供服務,同時也為上層提供服務其圖示如下
進行封裝和拆解的過程如下圖
在這裡,將會加入相關的資料報,以及相關的資料資訊,達到傳送資料的目的。
資料包在這裡,指的是TCP/IP協議資料通訊中的資料單位,即,資料包, 即,從最上層,一層層的封裝,直到網路層,最後藉由資料鏈路層傳送的資料單元。即。資料包為一個完整的資料單元,如果超過了MTU,這個時候,會和多個幀組合在一起,然後形成一個完整的資料包。
資料包的分層如下
在網路傳輸中,資料包由兩個部分組成,一個是協議所需要用的首部,另一部分是上一層傳過啦的資料,首部的結構由協議的具體規範進行定義,在資料包的首部,明確標明瞭協議應該如何讀取資料,即,看到首部,就能明確的直到該協議所需要的資訊和所需要處理的資料。
傳輸中和TCP和UDP埠埠,英語為port,稱之為連線埠,埠,協議埠, 位於傳輸層的通訊協議通常需要指定埠號,例如在TCP/IP協議族之下的TCP與UDP協議。在應用層中,使用主從式架構的通訊協議,在每個埠上提供多路複用服務(multiplexing service)。經由公認埠號(well-known port numbers),通常可以辨認出這個連線使用的通訊協議,其中具代表性的是最基礎的1024個公認埠號(well-known port numbers),例如Telnet協議預設使用23埠來連線,Secure Shell協議預設使用22埠,HTTP協議預設使用80埠,HTTPS協議預設使用443埠。
源埠號源埠號一般是由系統自己動態生成的一個從1024-65535的號碼,當一臺計算機A透過網路訪問計算機B時,如果它需要對方返回資料的話,它也會隨機建立一個大於1023的埠,告訴B返回資料時把資料送到自己的哪個埠,然後軟體開始偵聽這個埠,等待資料返回。而B收到資料後會讀取資料包的源埠號和目的埠號,然後記錄下來,當軟體建立了要返回的資料後就把原來資料包中的原埠號作為目的埠號,而把自己的埠號作為原埠號,也就是說把收到的資料包中的原和目的反過來,然後再送回A,A再重複這個過程如此反覆直到資料傳輸完成。當資料全部傳輸完A就把源埠釋放出來,所以同一個軟體每次傳輸資料時不一定是同一個源埠號。
UDPUDP全稱為使用者資料報協議,是一個簡單的面向資料報的通訊協議,位於OSI模型的傳輸層,UDP為不可靠傳輸,
具有以下幾個特點
面向無連線 UDP不需要和TCP一樣在資料傳送前進行三次握手進行連線,只是資料的搬運工,不會對資料進行相關的處理。具體來說, 在傳送端,應用層把資料傳輸為UDP協議,UDP只會給資料增加一個UDP頭標識標識是UDP協議。在接收端,網路層把資料傳送給傳輸層,不會做任何的拼接操作。功能點具有單播,多播,廣播等功能。
面向報文UDP是面向報文的,既不合並,也不拆分,因此應用程式需要選擇合適的報文,進行傳送。
不可靠性UDP會發生資料的丟失,由於沒有相關的資料的確認過程。
傳輸效率高由於頭部開銷小,傳輸資料的時候報文效率相當的高。
TCP當一臺計算機與另一臺計算機通訊的時候,兩臺計算機需要通訊暢通,並且可靠,這樣才能保證收發資料,所以就有了一個三次握手,四次揮手,實現資料的連線。
三次握手第一次握手(SYN=1, seq=x):客戶端傳送一個 TCP 的 SYN 標誌位置1的包,指明客戶端打算連線的伺服器的埠,以及初始序號 X,儲存在包頭的序列號(Sequence Number)欄位裡。
傳送完畢後,客戶端進入 SYN_SEND 狀態。
第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):伺服器發回確認包(ACK)應答。即 SYN 標誌位和 ACK 標誌位均為1。伺服器端選擇自己 ISN 序列號,放到 Seq 域裡,同時將確認序號(Acknowledgement Number)設定為客戶的 ISN 加1,即X+1。傳送完畢後,伺服器端進入 SYN_RCVD 狀態。
第三次握手(ACK=1,ACKnum=y+1)客戶端再次傳送確認包(ACK),SYN 標誌位為0,ACK 標誌位為1,並且把伺服器發來 ACK 的序號欄位+1,放在確定欄位中傳送給對方,並且在資料段放寫ISN的+1
傳送完畢後,客戶端進入 ESTABLISHED 狀態,當伺服器端接收到這個包時,也進入 ESTABLISHED 狀態,TCP 握手結束。
四次揮手第一次揮手(FIN=1,seq=x)假設客戶端想要關閉連線,客戶端傳送一個 FIN 標誌位置為1的包,表示自己已經沒有資料可以傳送了,但是仍然可以接受資料。
傳送完畢後,客戶端進入 FIN_WAIT_1 狀態。
第二次揮手(ACK=1,ACKnum=x+1)伺服器端確認客戶端的 FIN 包,傳送一個確認包,表明自己接受到了客戶端關閉連線的請求,但還沒有準備好關閉連線。
傳送完畢後,伺服器端進入 CLOSE_WAIT 狀態,客戶端接收到這個確認包之後,進入 FIN_WAIT_2 狀態,等待伺服器端關閉連線。
第三次揮手(FIN=1,seq=y)伺服器端準備好關閉連線時,向客戶端傳送結束連線請求,FIN 置為1。
傳送完畢後,伺服器端進入 LAST_ACK 狀態,等待來自客戶端的最後一個ACK。
第四次揮手(ACK=1,ACKnum=y+1)客戶端接收到來自伺服器端的關閉請求,傳送一個確認包,並進入 TIME_WAIT狀態,等待可能出現的要求重傳的 ACK 包。
伺服器端接收到這個確認包之後,關閉連線,進入 CLOSED 狀態。
客戶端等待了某個固定時間(兩個最大段生命週期,2MSL,2 Maximum Segment Lifetime)之後,沒有收到伺服器端的 ACK ,認為伺服器端已經正常關閉連線,於是自己也關閉連線,進入 CLOSED 狀態。