最近看了《圖解TCP/IP》這本書,於是將這本書中的精髓做一個歸總,以便之后查閱。
1.何為協議?
1.1 介紹
協議就是計算機與計算機之間通過網絡實現通信事先達成的一種“約定”。這種“約定”使那些由不同廠商的設備、不同的CPU以及不同的操作系統組成的計算機之間,只要遵循相同的協議就能夠實現通信。反之,如果使用的協議不同,就無法通信。
Windows操作系統的平板電腦和Mac操作系統的一體機電腦,雖然操作系統不同,硬件組成不同,但是只要事先達成一個詳細的約定,並遵循這一約定進行處理方可建立通信。
2 協議分層與OSI參考模型
2.1 OSI參考模型
協議分層就如同計算機軟件中的模塊化開發,OSI參考模型的建議是比較理想化的一種分層模型。
- OSI參考模型中定義了每一層的“作用”
- 定義每一層作用的是“協議”
- “協議”是約定,其具體內容為“規范”
- 我們日常所使用的就是遵循各個協議具體“規范”的產品和通信手段
2.2 OSI參考模型中各層作用
2.2.1 物理層
信號和介質
比特流與電子信號之間的切換
物理層(Physical Layer)是計算機網絡OSI模型中最低的一層。物理層規定:為傳輸數據所需要的物理鏈路創建、維持、拆除,而提供具有機械的,電子的,功能的和規范的特性。簡單的說,物理層確保原始的數據可在各種物理媒體上傳輸。局域網與廣域網皆屬第1、2層。
物理層是OSI的第一層,它雖然處於最底層,卻是整個開放系統的基礎。物理層為設備之間的數據通信提供傳輸媒體及互連設備,為數據傳輸提供可靠的環境。
2.2.2 數據鏈路層
數據幀與比特流之間的轉換
數據鏈路層是OSI參考模型中的第二層,介乎於物理層和網絡層之間。數據鏈路層在物理層提供的服務的基礎上向網絡層提供服務,其最基本的服務是將源自網絡層來的數據可靠地傳輸到相鄰節點的目標機網絡層。
2.2.3 網絡層
路徑選擇、路由及邏輯尋址
網絡層是OSI參考模型中的第三層,介於傳輸層和數據鏈路層之間,它在數據鏈路層提供的兩個相鄰端點之間的數據幀的傳送功能上,進一步管理網絡中的數據通信,將數據設法從源端經過若干個中間節點傳送到目的端,從而向運輸層提供最基本的端到端的數據傳送服務。
2.2.4 傳輸層
管理兩個節點之間的數據傳輸
關鍵層次之一,TCP/UDP運行在傳輸層
傳輸層是整個網絡體系結構中的關鍵層次之一,主要負責向兩個主機中進程之間的通信提供服務。由於一個主機同時運行多個進程,因此運輸層具有有復用和分用功能。傳輸層在終端用戶之間提供透明的數據傳輸,向上層提供可靠的數據傳輸服務。傳輸層在給定的鏈路上通過流量控制、分段/重組和差錯控制來保證數據傳輸的可靠性。傳輸層的一些協議是面向鏈接的,這就意味着傳輸層能保持對分段的跟蹤,並且重傳那些失敗的分段。
2.2.5 會話層
為會話實體間建立連接👉數據傳輸階段👉連接釋放
會話層(Session)是建立在傳輸層之上,利用傳輸層提供的服務,使應用建立和維持會話,並能使會話獲得同步。會話層使用校驗點可使通信會話在通信失效時從校驗點繼續恢復通信。這種能力對於傳送大的文件極為重要。
2.2.6 表示層
數據的壓縮、解壓、加密、解密
語法轉換、語法協商、連接管理
表示層向上對應用層服務,向下接受來自會話層的服務。表示層為在應用過程之間傳送的信息提供表示方法的服務,它只關心信息發出的語法和語義。
表示層位於OSI分層結構的第六層,它的主要作用之一是為異種機通信提供一種公共語言,以便能進行互操作。這種類型的服務之所以需要,是因為不同的計算機體系結構使用的數據表示法不同。與第五層提供透明的數據運輸不同,表示層是處理所有與數據表示及運輸有關的問題,包括轉換、加密和壓縮。每台計算機可能有它自己的表示數據的內部方法,例如,ASCII碼與EBCDIC碼,所以需要表示層協定來保證不同的計算機可以彼此理解。
通過前面的介紹,我們可以看出,會話層以下5層完成了端到端的數據傳送,並且是可靠,無差錯的傳送.但是數據傳送只是手段而不是目的,最終是要實現對數據的使用.由於各種系統對數據的定義並不完全相同,最易明白的例子是鍵盤,其上的某些鍵的含義在許多系統中都有差異.這自然給利用其它系統的數據造成了障礙.表示層和應用層就擔負了消除這種障礙的任務.
2.2.7 應用層
直接為應用進程提供應用服務
每個應用有不同的應用協議
應用層直接和應用程序接口並提供常見的網絡應用服務。應用層也向表示層發出請求。
應用層是開放系統的最高層,是直接為應用進程提供服務的。其作用是在實現多個系統應用進程相互通信的同時,完成一系列業務處理所需的服務.其服務元素分為兩類:公共應用服務元素CASE和特定應用服務元素SASE.
2.3 OSI 7層模型應用通信實例
至上而下和至下而上
附加首部信息
封裝和解封裝
- 發送方從模型的第七層到第一層至上而下傳輸數據,接收方則至下而上從第一層到第七層傳輸數據
- 發送端發送信息的過程中,每個分層上,在處理上一層傳過來的數據時,都會在數據中附上當前協議需要包含的“首部信息”
- 接收端對收到的數據進行數據“首部”與“內容”的分離,再轉發給上一分層,並最終將發送端的數據恢復為原裝。
3 TCP/IP協議
3.1 介紹
協議“簇”
TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/網際協議)是指能夠在多個不同網絡間實現信息傳輸的協議簇。TCP/IP協議不僅僅指的是TCP 和IP兩個協議,而是指一個由FTP、SMTP、TCP、UDP、IP等協議構成的協議簇, 只是因為在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱為TCP/IP協議。
3.2 TCP/IP協議分層模型
TCP/IP分層模型將OSI參考模型的應用程、表示層、會話層統一歸為應用層
TCP/IP更強調“在計算機上實現協議應該開發哪種程序
由於TCP/IP盡早地制定了可行性較強的協議,提出了應對技術快速革新的協議,並及時進行后期改良的方案,因此打敗了OSI模型,成為了事實上的標准。
由上圖可見👆,OSI和TCP/IP在分層模塊上稍有區別,TCP/IP分層模型將應用程、表示層、會話層統一划入應用層,OSI參考模型注重“通信協議必要的功能是什么”,而TCP/IP則更強調“在計算機上實現協議應該開發哪種程序”。
3.3 TCP/IP分層模型應用通信實例
3.4 通信過程數據變化
幀和數據包都是數據的傳輸形式。
-
數據鏈路層:Frame(幀)
-
網絡層:Packet(數據包)
-
傳輸層:
- TCP的叫做Segment(數據段)
- UDP的叫做Datagram(數據報)
-
應用層:Message(消息)
-
Frame(幀),工作在二層,數據鏈路層傳輸的是數據幀,包含數據包,並且增加相應MAC地址與二層信息;
-
Packet(數據包),工作在三層,網絡層傳輸的是數據包,包含數據報文,並且增加傳輸使用的IP地址等三層信息。
Packet(數據包):封裝的基本單元,它穿越網絡層和數據鏈路層的分解面。通常一個Packet映射成一個Frame,但也有例外:即當數據鏈路層執行拆分或將幾個Packet合成一個Frame的時候。
通信過程數據結構變化大致如下:
3.4.1 傳輸層報頭解析
加入端口信息
TCP\UDP協議
每台電腦都有可能同時運行着很多個應用程序,所以當數據包被發送到主機上以后,是無法確定哪個應用程序要接收這個包,所以需要在數據包中加入端口信息。
TCP數據報頭👇:
UDP數據報頭👇:
常見端口信息👇:
應用進程 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
端口號 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
關於TCP/UDP等協議的異同點將在另一篇博客中專門介紹
3.4.2 網絡層數據報頭解析
IP數據報
IP協議
源IP地址、目標IP地址
3.4.3 數據鏈路層報頭解析
MAC幀
LLC幀
3.4.5 數據封裝過程總結
上層數據→→在傳輸層添加TCP頭(包含端口信息等)→→在網絡層添加IP頭(包含IP協議等信息)→→在數據鏈路層添加LLC頭和MAC頭(包含MAC地址等信息)→→翻譯成比特流(1101101...)
4 總結
以上內容是我對《TCP/IP圖解》這本書中分層模型等知識點的總結,數據在傳輸過程中是一個不斷封裝和解封的過程,一個數據要傳輸到另一個接收端,必須經過層層封裝,封裝的意義在於讓發送端數據能夠定位接收端的位置,讓數據精准的被接受端應用程序接受。
此篇博客並沒有講解各層具體的協議,這些內容將在下一篇博客中詳細說明。
下一篇網絡層協議之IP協議全解析:https://www.cnblogs.com/zaijianba/p/11524722.html參考資料:
————————————————————————————————————————————
版權聲明:本文為吳愷的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://www.cnblogs.com/zaijianba/p/11520397.html
為了更好的閱讀體驗,推薦轉至我的個人博客查看此篇博客。
個人博客文章鏈接:https://www.wukailiving.cn/dui-tcp-ip-de-zong-jie.html
如有不足之處,歡迎指正!