TCP/IP協議棧模型
阿新 • • 發佈:2017-08-28
路由 會話管理 add 網絡設備 源地址 解密 發的 傳輸協議 認證 OSI七層模型介紹:
下面4層(物理層、數據鏈路層、網絡層和傳輸層)主要提供數據傳輸和交換功能,即以節點到節點之間的通信為主;第4層作為上下兩部分的橋梁,是整個網絡體系結構中最關鍵的部分;而上3層(會話層、表示層和應用層)則以提供用戶與應用程序之間的信息和數據處理功能為主。 物理層的主要功能是:利用傳輸介質為數據鏈路層提供物理連接,實現比特流的透明傳輸,盡可能屏蔽掉具體傳輸介質和物理設備的差異。 數據鏈路層主要功能:建立和管理節點間的鏈路。通過各種控制協議,通過差錯控制、流量控制方法,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。 該層通常又被分為介質訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層。MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制;LLC子層的主要任務是建立和維護網絡連接,執行差錯校驗、流量控制和鏈路控制。 具體工作是接收來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為位流形式的數據轉發到物理層;並且,還負責處理接收端發回的確認幀的信息,以便提供可靠的數據傳輸。 網絡層主要任務是:通過路由選擇算法,為報文或分組通過通信子網選擇最適當的路徑。該層控制數據鏈路層與傳輸層之間的信息轉發,建立、維持和終止網絡的連接。具體地說,數據鏈路層的數據在這一層被轉換為數據包,然後通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。 路由算法:當源節點和目的節點之間存在多條路徑時,本層可以根據路由算法,通過網絡為數據分組選擇最佳路徑,並將信息從最合適的路徑由發送端傳送到接收端。 傳輸層主要任務: 傳輸連接管理:提供建立、維護和拆除傳輸連接的功能。傳輸層在網絡層的基礎上為高層提供“面向連接”和“面向無接連”的兩種服務。 處理傳輸差錯:提供可靠的“面向連接”和不太可靠的“面向無連接”的數據傳輸服務、差錯控制和流量控制。在提供“面向連接”服務時,通過這一層傳輸的數據將由目標設備確認,如果在指定的時間內未收到確認信息,數據將被重發。 監控服務質量。 會話層主要任務: 會話管理:允許用戶在兩個實體設備之間建立、維持和終止會話,並支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,並管理會話中的發送順序,以及會話所占用時間的長短。 會話流量控制:提供會話流量控制和交叉會話功能。 尋址:使用遠程地址建立會話連接。l 出錯控制:從邏輯上講會話層主要負責數據交換的建立、保持和終止,但實際的工作卻是接收來自傳輸層的數據,並負責糾正錯誤。會話控制和遠程過程調用均屬於這一層的功能。 表示層主要功能:處理用戶信息的表示問題,如數據編碼、數據格式轉換、加密解密、壓縮和解壓縮等 應用層主要功能: 用戶接口:應用層是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶能夠與網絡進行交互式聯系。 實現各種服務:該層具有的各種應用程序可以完成和實現用戶請求的各種服務。
TCP/IP協議的工作流程如下: ●在源主機上,應用層將一串應用數據流傳送給傳輸層。 ●傳輸層將應用層的數據流截成分組,並加上TCP報頭形成TCP段,送交網絡層。 ●在網絡層給TCP段加上包括源、目的主機IP地址的IP報頭,生成一個IP數據包,並將IP數據包送交鏈路層。 ●鏈路層在其MAC幀的數據部分裝上IP數據包,再加上源、目的主機的MAC地址和幀頭,並根據其目的MAC地址,將MAC幀發往目的主機或IP路由器。 ●在目的主機,鏈路層將MAC幀的幀頭去掉,並將IP數據包送交網絡層。 ●網絡層檢查IP報頭,如果報頭中校驗和與計算結果不一致,則丟棄該IP數據包;若校驗和與計算結果一致,則去掉IP報頭,將TCP段送交傳輸層。 ●傳輸層檢查順序號,判斷是否是正確的TCP分組,然後檢查TCP報頭數據。若正確,則向源主機發確認信息;若不正確或丟包,則向源主機要求重發信息。 ●在目的主機,傳輸層去掉TCP報頭,將排好順序的分組組成應用數據流送給應用程序。這樣目的主機接收到的來自源主機的字節流,就像是直接接收來自源主機的字節流一樣。 ********************************************************************
既然每個以太網設備在出廠時都有一個唯一的MAC地址了,那為什麽還需要為每臺主機再分配一個IP地址呢?或者說為什麽每臺主機都分配唯一的IP地址了,為什麽還要在網絡設備(如網卡,集線器,路由器等)生產時內嵌一個唯一的MAC地址呢?主要原因有以下幾點:(1)IP地址的分配是根據網絡的拓樸結構,而不是根據誰制造了網絡設置。若將高效的路由選擇方案建立在設備制造商的基礎上而不是網絡所處的拓樸位置基礎上,這種方案是不可行的。(2)當存在一個附加層的地址尋址時,設備更易於移動和維修。例如,如果一個以太網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網絡移到另一個網絡,可以給它一個新的IP地址,而無須換一個新的網卡。(3)無論是局域網,還是廣域網中的計算機之間的通信,最終都表現為將數據包從某種形式的鏈路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。數據包在這些節點之間的移動都是由ARP(Address Resolution Protocol:地址解析協議)負責將IP地址映射到MAC地址上來完成的。下面我們來通過一個例子看看IP地址和MAC地址是怎樣結合來傳送數據包的。
IP地址和MAC地址相同點是它們都唯一,不同的特點主要有:
1. 對於網絡上的某一設備,如一臺計算機或一臺路由器,其IP地址可變(但必須唯一),而MAC地址不可變。
2. 長度不同。IP地址為32位,MAC地址為48位。 3. 分配依據不同。IP地址的分配是基於網絡拓樸,MAC地址的分配是基於制造商。
4. 尋址協議層不同。IP地址應用於OSI第三層,即網絡層,而MAC地址應用在OSI第二層,即數據鏈路層。
********************************************************************
TCP/IP協議棧四層模型介紹:
鏈路層
UDP(User Datagram Protocol)用戶數據報協議
主要特點有:
下面4層(物理層、數據鏈路層、網絡層和傳輸層)主要提供數據傳輸和交換功能,即以節點到節點之間的通信為主;第4層作為上下兩部分的橋梁,是整個網絡體系結構中最關鍵的部分;而上3層(會話層、表示層和應用層)則以提供用戶與應用程序之間的信息和數據處理功能為主。 物理層的主要功能是:利用傳輸介質為數據鏈路層提供物理連接,實現比特流的透明傳輸,盡可能屏蔽掉具體傳輸介質和物理設備的差異。 數據鏈路層主要功能:建立和管理節點間的鏈路。通過各種控制協議,通過差錯控制、流量控制方法,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。 該層通常又被分為介質訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層。MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制;LLC子層的主要任務是建立和維護網絡連接,執行差錯校驗、流量控制和鏈路控制。 具體工作是接收來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為位流形式的數據轉發到物理層;並且,還負責處理接收端發回的確認幀的信息,以便提供可靠的數據傳輸。 網絡層主要任務是:通過路由選擇算法,為報文或分組通過通信子網選擇最適當的路徑。該層控制數據鏈路層與傳輸層之間的信息轉發,建立、維持和終止網絡的連接。具體地說,數據鏈路層的數據在這一層被轉換為數據包,然後通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。 路由算法:當源節點和目的節點之間存在多條路徑時,本層可以根據路由算法,通過網絡為數據分組選擇最佳路徑,並將信息從最合適的路徑由發送端傳送到接收端。 傳輸層主要任務: 傳輸連接管理:提供建立、維護和拆除傳輸連接的功能。傳輸層在網絡層的基礎上為高層提供“面向連接”和“面向無接連”的兩種服務。 處理傳輸差錯:提供可靠的“面向連接”和不太可靠的“面向無連接”的數據傳輸服務、差錯控制和流量控制。在提供“面向連接”服務時,通過這一層傳輸的數據將由目標設備確認,如果在指定的時間內未收到確認信息,數據將被重發。 監控服務質量。 會話層主要任務: 會話管理:允許用戶在兩個實體設備之間建立、維持和終止會話,並支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,並管理會話中的發送順序,以及會話所占用時間的長短。 會話流量控制:提供會話流量控制和交叉會話功能。 尋址:使用遠程地址建立會話連接。l 出錯控制:從邏輯上講會話層主要負責數據交換的建立、保持和終止,但實際的工作卻是接收來自傳輸層的數據,並負責糾正錯誤。會話控制和遠程過程調用均屬於這一層的功能。 表示層主要功能:處理用戶信息的表示問題,如數據編碼、數據格式轉換、加密解密、壓縮和解壓縮等 應用層主要功能: 用戶接口:應用層是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶能夠與網絡進行交互式聯系。 實現各種服務:該層具有的各種應用程序可以完成和實現用戶請求的各種服務。
TCP/IP協議的工作流程如下: ●在源主機上,應用層將一串應用數據流傳送給傳輸層。 ●傳輸層將應用層的數據流截成分組,並加上TCP報頭形成TCP段,送交網絡層。 ●在網絡層給TCP段加上包括源、目的主機IP地址的IP報頭,生成一個IP數據包,並將IP數據包送交鏈路層。 ●鏈路層在其MAC幀的數據部分裝上IP數據包,再加上源、目的主機的MAC地址和幀頭,並根據其目的MAC地址,將MAC幀發往目的主機或IP路由器。 ●在目的主機,鏈路層將MAC幀的幀頭去掉,並將IP數據包送交網絡層。 ●網絡層檢查IP報頭,如果報頭中校驗和與計算結果不一致,則丟棄該IP數據包;若校驗和與計算結果一致,則去掉IP報頭,將TCP段送交傳輸層。 ●傳輸層檢查順序號,判斷是否是正確的TCP分組,然後檢查TCP報頭數據。若正確,則向源主機發確認信息;若不正確或丟包,則向源主機要求重發信息。 ●在目的主機,傳輸層去掉TCP報頭,將排好順序的分組組成應用數據流送給應用程序。這樣目的主機接收到的來自源主機的字節流,就像是直接接收來自源主機的字節流一樣。 ********************************************************************
- 將數據封裝為幀(frame),幀是數據鏈路層的傳送單位;
- 控制幀的傳輸,包括處理傳輸差錯,調節發送速率與接收方相匹配;
- 在兩個網絡實體之間提供數據鏈路通路的建立、維持和釋放的管理。
- 每一端必須知道對端的 IP 地址,沒有辦法把本端 IP 地址傳遞給對端;
- 數據幀中無類型字段,當一條串行線路使用 SLIP 時則不能使用其他協議;
- SLIP 數據幀中無 checksum,只能依靠上層協議來發現和糾正錯誤。
- 不可靠:IP 協議不能保證數據包能成功地到達目的地,它僅提供傳輸服務。當發生某種錯誤時,IP 協議會丟棄該數據包。傳輸的可靠性全由上層協議(如TCP)來提供。
- 無連接:IP 協議對每個數據包的處理是相互獨立的。這也說明, IP 數據包可以不按發送順序接收。
- 1、搜索路由表,如果能找到和目的 IP 地址完全一致的主機,則將 IP 數據報發向該主機;
- 2、搜索路由表,如果匹配主機失敗,則匹配同子網的路由器(這需要子網掩碼的協助)。如果找到路由器,則將 IP 該數據報發向該路由器;
- 3、搜索路由表,如果匹配同子網路由器失敗,則匹配同網絡號路由器,如果找到路由器,則將該 IP 數據報發向該路由器;
- 4、如果以上都失敗了,就搜索默認路由,如果默認路由存在,則發報;
- 6、如果都失敗了,就丟掉這個包;
- 7、接收到數據報的路由器再按照它自己的路由表繼續轉發,直到數據報被轉發到目的主機;
- 8、如果在轉發過程中,IP 數據報的 TTL(生命周期)已經被減為 0,則該 IP 數據報就被拋棄。
- 當主機要發送一個 IP 數據報的時候,會首先查詢一下自己的 ARP 緩存表;
- 如果在 ARP 緩存表中找到對應的 MAC 地址,則將 IP 數據報封裝為數據幀,把 MAC 地址放在幀首部,發送數據幀;
- 如果查詢的 IP-MAC 值對不存在,那麽主機就向網絡中廣播發送一個 ARP 請求數據幀,ARP 請求中包含待查詢 IP 地址;
- 網絡內所有收到 ARP 請求的主機查詢自己的 IP 地址,如果發現自己符合條件,就回復一個 ARP 應答數據幀,其中包含自己的 MAC 地址;
- 收到 ARP 應答後,主機將其 IP - MAC 對應信息存入自己的 ARP 緩存,然後再據此封裝 IP 數據報,再發送數據幀。
- 常見的應用程序占用的系統端口號:
應用層協議: | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
系統端口號: | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
- (1).UDP 是無連接的,發送數據之前不需要建立連接(而 TCP 需要),減少了開銷和時延。
- (2).UDP盡最大努力交付,不保證交付可靠性。
- (3).UDP 是面向報文的,對於應用層交付的數據,只做很簡單的封裝(8 字節 UDP 報頭),首部開銷小。
- (4).UDP 沒有擁塞控制,出現網絡擁塞時發送方也不會降低發送速率。這種特性對某些實時應用是很重要的,比如 IP 電話,視頻會議等,它們允許擁塞時丟失一些數據,因為如果不拋棄這些數據,極可能造成時延的累積。
- (5).UDP 支持一對一、一對多、多對一和多對多的交互通信。
- (1) TCP 提供 可靠的 數據傳輸服務,TCP 是 面向連接的 。應用程序在使用 TCP 通信之前,先要建立連接,TCP建立連接三次握手,釋放連接四次握手。
- (2) TCP 連接是 點對點 的,一條 TCP 連接只能連接兩個端點。
- (3) TCP 提供可靠傳輸,無差錯、不丟失、不重復、按順序。
- (4) TCP 提供 全雙工 通信,允許通信雙方任何時候都能發送數據,因為 TCP 連接的兩端都設有發送緩存和接收緩存。
- (5) TCP 面向 字節流 。TCP 並不知道所傳輸的數據的含義,僅把數據看作一連串的字節序列,它也不保證接收方收到的數據塊和發送方發出的數據塊具有大小對應關系。
- (1) 客戶端發出請求連接報文段,其中報頭控制位 SYN=1,初始序號 seq=x。客戶端進入 SYN-SENT(同步已發送)狀態。
- (2) 服務端收到請求報文段後,向客戶端發送確認報文段。確認報文段的首部中 SYN=1,ACK=1,確認號是 ack=x+1,同時為自己選擇一個初始序號 seq=y。服務端進入 SYN-RCVD(同步收到)狀態。
- (3) 客戶端收到服務端的確認報文段後,還要給服務端發送一個確認報文段。這個報文段中 ACK=1,確認號 ack=y+1,而自己的序號 seq=x+1。這個報文段已經可以攜帶數據,如果不攜帶數據則不消耗序號,則下一個報文段序號仍為 seq=x+1。
- (1) 此時 TCP 連接兩端都還處於 ESTABLISHED 狀態,客戶端停止發送數據,並發出一個 FIN 報文段。首部 FIN=1,序號 seq=u(u 等於客戶端傳輸數據最後一字節的序號加 1)。客戶端進入 FIN-WAIT-1(終止等待 1)狀態。
- (2) 服務端回復確認報文段,確認號 ack=u+1,序號 seq=v(v 等於服務端傳輸數據最後一字節的序號加 1),服務端進入 CLOSE-WAIT(關閉等待)狀態。現在 TCP 連接處於半開半閉狀態,服務端如果繼續發送數據,客戶端依然接收。
- (3) 客戶端收到確認報文,進入 FIN-WAIT-2 狀態,服務端發送完數據後,發出 FIN 報文段,FIN=1,確認號 ack=u+1,然後進入 LAST-ACK(最後確認)狀態。
- (4) 客戶端回復確認確認報文段,ACK=1,確認號 ack=w+1(w 為半開半閉狀態時,收到的最後一個字節數據的編號) ,序號 seq=u+1,然後進入 TIME-WAIT(時間等待)狀態。
- (1) TCP 報文段的長度可變,根據收發雙方的緩存狀態、網絡狀態而調整。
- (2) 當 TCP 收到發自 TCP 連接另一端的數據,它將發送一個確認。
- (3) 當 TCP 發出一個段後,它啟動一個定時器,等待目的端確認收到這個報文段,如果不能及時收到一個確認,將重發這個報文段。這就是稍後介紹的超時重傳。
- (4) TCP 將保持它首部和數據的檢驗和。如果通過檢驗和發現報文段有差錯,這個報文段將被丟棄,等待超時重傳。
- (5) TCP 將數據按字節排序,報文段中有序號,以確保順序的正確性。
- (6) TCP 還能提供流量控制。TCP 連接的每一方都有收發緩存。TCP 的接收端只允許另一端發送接收端緩沖區所能接納的數據。這將防止較快主機致使較慢主機的緩沖區溢出。
- FTP 只提供文件傳輸的基本服務,它采用 客戶端—服務器 的方式,一個 FTP 服務器可同時為多個客戶端提供服務。
- 在進行文件傳輸時,FTP 的客戶端和服務器之間會建立兩個 TCP 連接:21 號端口建立控制連接,20 號端口建立數據連接。
- FTP 的傳輸有兩種方式:ASCII 傳輸模式和二進制數據傳輸模式。
- 點擊一個鏈接後,瀏覽器向服務器發起 TCP 連接;
- 連接建立後瀏覽器發送 HTTP 請求報文,然後服務器回復響應報文;
- 瀏覽器將收到的響應報文內容顯示在網頁上;
- 報文收發結束,關閉 TCP 連接。
- 1xx 表示通知信息,如收到或正在處理。
- 2xx 表示成功接收。
- 3xx 表示重定向。
- 4xx 表示客戶的差錯,如 404 表示網頁未找到。
- 5xx表示服務器的差錯,如常見的 502 Bad Gateway。
- TFTP 可用於 UDP 環境;比如當需要將程序或者文件同時向許多機器下載時就往往需要使用到 TFTP 協議。
- TFTP 代碼所占的內存較小,這對於小型計算機或者某些特殊用途的設備來說是很重要的,TFTP 具有更多的靈活性,也減少了開銷。
TCP/IP協議棧模型