網絡7層架構+TCP/IP原理

7 層模型主要包括:
1.  物理層:主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率
等。它的主要作用是傳輸比特流(就是由 1、0 轉化爲電流強弱來進行傳輸,到達目的地後在轉化爲
1、0,也就是我們常說的模數轉換與數模轉換)。這一層的數據叫做比特。
2.  數據鏈路層:主要將從物理層接收的數據進行 MAC 地址(網卡的地址)的封裝與解封裝。常把這
一層的數據叫做幀。在這一層工作的設備是交換機,數據通過交換機來傳輸。
3.  網絡層:主要將從下層接收到的數據進行 IP 地址(例 192.168.0.1)的封裝與解封裝。在這一層工
作的設備是路由器,常把這一層的數據叫做數據包。
4.  傳輸層:定義了一些傳輸數據的協議和端口號(WWW 端口 80 等),如:TCP(傳輸控制協議,
傳輸效率低,可靠性強,用於傳輸可靠性要求高,數據量大的數據),UDP(用戶數據報協議,
與 TCP 特性恰恰相反,用於傳輸可靠性要求不高,數據量小的數據,如 QQ 聊天數據就是通過這
種方式傳輸的)。 主要是將從下層接收的數據進行分段進行傳輸,到達目的地址後在進行重組。
常常把這一層數據叫做段。
5.  會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數據傳輸的通路。主要在你的系統之間
發起會話或或者接受會話請求(設備之間需要互相認識可以是 IP 也可以是 MAC 或者是主機名)
6.  表示層:主要是進行對接收的數據進行解釋、加密與解密、壓縮與解壓縮等(也就是把計算機能夠
識別的東西轉換成人能夠能識別的東西(如圖片、聲音等))
7.  應用層 主要是一些終端的應用,比如說FTP(各種文件下載),WEB(IE瀏覽),QQ之類的(你
就把它理解成我們在電腦屏幕上可以看到的東西.就 是終端應用)。

 

TCP/IP  原理
TCP/IP 協議不是 TCP 和 IP 這兩個協議的合稱,而是指因特網整個 TCP/IP 協議族。從協議分層
模型方面來講,TCP/IP 由四個層次組成:網絡接口層、網絡層、傳輸層、應用層。

網絡 訪問層(Network Access Layer)
1.  網絡訪問層(Network Access Layer)在 TCP/IP 參考模型中並沒有詳細描述,只是指出主機
必須使用某種協議與網絡相連。


網絡層(Internet Layer)
2.  網絡層(Internet Layer)是整個體系結構的關鍵部分,其功能是使主機可以把分組發往任何網
絡,並使分組獨立地傳向目標。這些分組可能經由不同的網絡,到達的順序和發送的順序也
可能不同。高層如果需要順序收發,那麼就必須自行處理對分組的排序。互聯網層使用因特
網協議(IP,Internet Protocol)。


 傳輸層(Tramsport Layer-TCP/UDP)
3.  傳輸層(Tramsport Layer)使源端和目的端機器上的對等實體可以進行會話。在這一層定義了
兩個端到端的協議:傳輸控制協議(TCP,Transmission Control Protocol)和用戶數據報協
議(UDP,User Datagram Protocol)。TCP 是面向連接的協議,它提供可靠的報文傳輸和對
上層應用的連接服務。爲此,除了基本的數據傳輸外,它還有可靠性保證、流量控制、多路
複用、優先權和安全性控制等功能。UDP 是面向無連接的不可靠傳輸的協議,主要用於不需
要 TCP 的排序和流量控制等功能的應用程序。


 應用層(Application Layer)
4.  應用層(Application Layer)包含所有的高層協議,包括:虛擬終端協議(TELNET,
TELecommunications NETwork)、文件傳輸協議(FTP,File Transfer Protocol)、電子郵件
傳輸協議(SMTP,Simple Mail Transfer Protocol)、域名服務(DNS,Domain Name

Service)、網上新聞傳輸協議(NNTP,Net News Transfer Protocol)和超文本傳送協議
(HTTP,HyperText Transfer Protocol)等

 

TCP  三次握手/ 四次揮手
TCP 在傳輸之前會進行三次溝通,一般稱爲“三次握手”,傳完數據斷開的時候要進行四次溝通,一般
稱爲“四次揮手”。

 

數據包說明

1.  源端口號( 16 位):它(連同源主機 IP 地址)標識源主機的一個應用進程。
2.  目的端口號( 16 位):它(連同目的主機 IP 地址)標識目的主機的一個應用進程。這兩個值
加上 IP 報頭中的源主機 IP 地址和目的主機 IP 地址唯一確定一個 TCP 連接。
3.  順序號 seq( 32 位):用來標識從 TCP 源端向 TCP 目的端發送的數據字節流,它表示在這個
報文段中的第一個數據字節的順序號。如果將字節流看作在兩個應用程序間的單向流動,則
TCP 用順序號對每個字節進行計數。序號是 32bit 的無符號數,序號到達 2 的 32 次方 - 1 後
又從 0 開始。當建立一個新的連接時, SYN 標誌變 1 ,順序號字段包含由這個主機選擇的該
連接的初始順序號 ISN ( Initial Sequence Number )。
4.  確認號 ack( 32 位):包含發送確認的一端所期望收到的下一個順序號。因此,確認序號應當
是上次已成功收到數據字節順序號加 1 。只有 ACK 標誌爲 1 時確認序號字段纔有效。 TCP 爲
應用層提供全雙工服務,這意味數據能在兩個方向上獨立地進行傳輸。因此,連接的每一端必
須保持每個方向上的傳輸數據順序號。
5.  TCP 報頭長度( 4 位):給出報頭中 32bit 字的數目,它實際上指明數據從哪裏開始。需要這
個值是因爲任選字段的長度是可變的。這個字段佔 4bit ,因此 TCP 最多有 60 字節的首部。然
而,沒有任選字段,正常的長度是 20 字節。
6.  保留位( 6 位):保留給將來使用,目前必須置爲 0 。
7.  控制位( control flags , 6 位):在 TCP 報頭中有 6 個標誌比特,它們中的多個可同時被設
置爲 1 。依次爲:
 URG :爲 1 表示緊急指針有效,爲 0 則忽略緊急指針值。
ACK :爲 1 表示確認號有效,爲 0 表示報文中不包含確認信息,忽略確認號字段。
PSH :爲 1 表示是帶有 PUSH 標誌的數據,指示接收方應該儘快將這個報文段交給應用層
而不用等待緩衝區裝滿。 RST :用於復位由於主機崩潰或其他原因而出現錯誤的連接。它還可以用於拒絕非法的報
文段和拒絕連接請求。一般情況下,如果收到一個 RST 爲 1 的報文,那麼一定發生了某些
問題。
 SYN :同步序號,爲 1 表示連接請求,用於建立連接和使順序號同步( synchronize )。
 FIN :用於釋放連接,爲 1 表示發送方已經沒有數據發送了,即關閉本方數據流。
8.  窗口大小( 16 位):數據字節數,表示從確認號開始,本報文的源方可以接收的字節數,即源
方接收窗口大小。窗口大小是一個 16bit 字段,因而窗口大小最大爲 65535 字節。
9.  校驗和( 16 位):此校驗和是對整個的 TCP 報文段,包括 TCP 頭部和 TCP 數據,以 16 位字
進行計算所得。這是一個強制性的字段,一定是由發送端計算和存儲,並由接收端進行驗證。
10. 緊急指針( 16 位):只有當 URG 標誌置 1 時緊急指針纔有效。TCP 的緊急方式是發送端向另
一端發送緊急數據的一種方式。

11. 選項:最常見的可選字段是最長報文大小,又稱爲 MSS(Maximum Segment Size) 。每個連
接方通常都在通信的第一個報文段(爲建立連接而設置 SYN 標誌的那個段)中指明這個選項,
它指明本端所能接收的最大長度的報文段。選項長度不一定是 32 位字的整數倍,所以要加填充
位,使得報頭長度成爲整字數。
12. 數據: TCP 報文段中的數據部分是可選的。在一個連接建立和一個連接終止時,雙方交換的報
文段僅有 TCP 首部。如果一方沒有數據要發送,也使用沒有任何數據的首部來確認收到的數
據。在處理超時的許多情況中,也會發送不帶任何數據的報文段

 

三次握手
第一次握手:主機 A 發送位碼爲 syn=1,隨機產生 seq number=1234567 的數據包到服務器,主機 B
由 SYN=1 知道,A 要求建立聯機;
第二次握手:主機 B 收到請求後要確認聯機 信息,向 A 發 送 ack number=( 主機 A 的
seq+1),syn=1,ack=1,隨機產生 seq=7654321 的包
第三次握手:主機 A 收到後檢查 ack number 是否正確,即第一次發送的 seq number+1,以及位碼
ack 是否爲 1,若正確,主機 A 會再發送 ack number=(主機 B 的 seq+1),ack=1,主機 B 收到後確認

seq 值與 ack=1 則連接建立成功。

四次揮手
TCP 建立連接要進行三次握手,而斷開連接要進行四次。這是由於 TCP 的半關閉造成的。因爲 TCP 連
接是全雙工的(即數據可在兩個方向上同時傳遞)所以進行關閉時每個方向上都要單獨進行關閉。這個單
方向的關閉就叫半關閉。當一方完成它的數據發送任務,就發送一個 FIN 來向另一方通告將要終止這個
方向的連接。
1) 關閉客戶端到服務器的連接:首先客戶端 A 發送一個 FIN,用來關閉客戶到服務器的數據傳送,
然後等待服務器的確認。其中終止標誌位 FIN=1,序列號 seq=u
2) 服務器收到這個 FIN,它發回一個 ACK,確認號 ack 爲收到的序號加 1。
3) 關閉服務器到客戶端的連接:也是發送一個 FIN 給客戶端。
4) 客戶段收到 FIN 後,併發回一個 ACK 報文確認,並將確認序號 seq 設置爲收到序號加 1。
首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

主機 A 發送 FIN 後,進入終止等待狀態, 服務器 B 收到主機 A 連接釋放報文段後,就立即
給主機 A 發送確認,然後服務器 B 就進入 close-wait 狀態,此時 TCP 服務器進程就通知高
層應用進程,因而從 A 到 B 的連接就釋放了。此時是“半關閉”狀態。即 A 不可以發送給
B,但是 B 可以發送給 A。此時,若 B 沒有數據報要發送給 A 了,其應用進程就通知 TCP 釋
放連接,然後發送給 A 連接釋放報文段,並等待確認。A 發送確認後,進入 time-wait,注
意,此時 TCP 連接還沒有釋放掉,然後經過時間等待計時器設置的 2MSL 後,A 才進入到
close 狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章