TCP/IP的知識梳理(按四層結構體系描述)


TCP/IP協議

TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/網際協議)是指能夠在多個不同網絡間實現信息傳輸的協議簇。

TCP/IP協議不僅僅指的是TCP 和IP兩個協議,而是指一個由FTP、SMTP、TCP、UDP、IP等協議構成的協議簇, 只是因為在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱為TCP/IP協議。

 

TCP/IP傳輸協議是嚴格來說是一個四層的體系結構,應用層、傳輸層、網絡層和數據鏈路層都包含其中。

 

 

OSI參考模型與TCP/IP四層模型對比

 

 

 

  一、應用層協議

該層存在的協議:HTTP,DNS,FTP,Telnet,SMTP,RIP,NFS

HTTP協議:(后面專門用一篇文章詳解HTTP和HTTPS)

HTTP (HyperText Transfer Protocol 超文本傳輸協議) 基於 TCP,使用端口號 80 或 8080。

每當你在瀏覽器里輸入一個網址或點擊一個鏈接時,瀏覽器就通過 HTTP 協議將網頁信息從服務器提取再顯示出來,這是現在使用頻率最大的應用層協議。

這個原理很簡單:

  • 點擊一個鏈接后,瀏覽器向服務器發起 TCP 連接;

  • 連接建立后瀏覽器發送 HTTP 請求報文,然后服務器回復響應報文;

  • 瀏覽器將收到的響應報文內容顯示在網頁上;

  • 報文收發結束,關閉 TCP 連接。

HTTP 報文會被傳輸層封裝為 TCP 報文段,然后再被 IP 層封裝為 IP 數據報。HTTP 報文的結構:

 

可見報文分為 3 部分:

  • (1)開始行:用於區分是請求報文還是響應報文,請求報文中開始行叫做請求行,而響應報文中,開始行叫做狀態行。在開始行的三個字段之間都用空格分開,結尾處 CRLF 表示回車和換行。

  • (2)首部行:用於說明瀏覽器、服務器或報文主體的一些信息。

  • (3)實體主體:請求報文中通常不用實體主體。

請求報文的方法字段是對所請求對象進行的操作,而響應報文的狀態碼是一個 3 位數字,分為 5 類 33 種:

  • 1xx 表示通知信息,如收到或正在處理。

  • 2xx 表示成功接收。

  • 3xx 表示重定向。

  • 4xx 表示客戶的差錯,如 404 表示網頁未找到。

  • 5xx表示服務器的差錯,如常見的 502 Bad Gateway。

DNS協議:

DNS協議基於UDP,使用端口53,由數字組成的IP地址很難記憶,所以我們上網使用網站IP地址的別名--域名,實際使用中,域名與IP地址是對應的,

這種對應關系保存在DNS服務器中,在瀏覽器輸入一個域名后,會有DNS服務器將域名解析為對應的IP地址。

DNS 服務器是個分層次的系統:

  • (1)根 DNS 服務器 :全世界共有 13 台根域名服務器,編號 A 到 M,其中大部分位於美國。

  • (2)頂級(TLD)DNS 服務器 :負責如 com 、org 、edu 等頂級域名和所有國家的頂級域名(如 cn 、uk 、jp )。

  • (3)權威 DNS 服務器 :大型組織、大學、企業的域名解析服務。

  • (4)本地 DNS 服務器 :通常與我們主機最近的 DNS 服務器。

而域名解析的過程,有迭代查詢和遞歸查詢兩種方式:迭代查詢和遞歸查詢

主機向 DNS 服務器發出的查詢叫做DNS 報文,大致結構:

DNS 緩存和 hosts 文件

剛才 DNS 解析查詢過程的圖中,共發出了 8 份 DNS 報文,這是非常消耗時間的,所以實際應用上使用 DNS 緩存 :當一個 DNS 服務器接收到一個 DNS 回答后,

會將其信息緩存一段時間,當再有一個對相同域名的查詢時,便可直接回復。

通過 DNS 緩存,其實很多查詢都只需要本地 DNS 服務器便可完成。

有“FQ”愛好的同學應該知道 hosts 文件,其實 hosts 文件可以看作是一個小型的 DNS 服務器。

使用命令打開 hosts 文件:

sudo gedit /etc/hosts 

查看文件內容,可以發現里面全是類似下圖中的 IP 和域名對應記錄:

在實際上網過程中,域名解析的的優先順序是:先在 DNS 緩存查詢,若沒有找到記錄,再查詢 hosts 文件,若還是沒找到記錄,再向 DNS 服務器發出 DNS 查詢報文。

 

FTP協議:

FTP (File Transfer Protocol 文件傳輸協議) 基於 TCP,使用端口號 20(數據)和 21(控制)。

它的主要功能是減少或消除在不同操作系統下處理文件的不兼容性,以達到便捷高效的文件傳輸效果。

  • FTP 只提供文件傳輸的基本服務,它采用 客戶端—服務器 的方式,一個 FTP 服務器可同時為多個客戶端提供服務。

  • 在進行文件傳輸時,FTP 的客戶端和服務器之間會建立兩個 TCP 連接:21 號端口建立控制連接,20 號端口建立數據連接。

  • FTP 的傳輸有兩種方式:ASCII 傳輸模式和二進制數據傳輸模式。

 

  二、傳輸層協議

該層的協議主要是:傳輸控制協議(TCP)和用戶數據包協議(UDP)

TCP是一個可靠面向連接的協議。

UDP是不可靠的或非連接的協議。

面向連接和非連接的通信方式的區別:
  就像打電話和寄明信片一樣。打電話的雙方在正式通話之前都會說“喂”,確定對方在線以后才開始通話,會話結束時都要說“再見”,然后才掛下電話。而寄明信片卻沒有這種機制,寄出去了但不管對方是否收到。
 
端口號:
  每個應用程序都會產生自己的數據流,這些數據流可以把目標主機上相應的服務程序看作自己的目的地,對於傳輸層來說,它只需要知道目標主機上的哪個服務程序來響應這應用程序,而不需要知道這個服務程序具體是干什么的。因此,傳輸層使用一個抽象的端口號來標識這些應用程序和服務程序。
 
端口號的功能及應用特點:
   端口號用來跟蹤網絡間同時發生的不同會話。TCP和UDP可以同時接收多個應用程序送來的數據流,用端口號來區分他們,然后送給適當的應用程序處理。這時多路分解技術的體現,它可以確保正確的用戶程序收到正確的數據。因此,每個應用程序發送數據前都會與操作系統進行協商,獲得響應的源端口號和目標端口號。
 
TCP協議段格式

 

16位的源端口號:標示該進程自己
16位目的端口號:標示我要向哪個進程發送數據
32位的序列號/32位確認序列號:為了滿足全雙工的安全機制而存在的,它有以下四個功能:

       a.保證基本的可靠性
  b.是數據可以按序到達
  c.支持超時重傳
  d.高效

4位的首部長度:表示該TCP頭部有多少個32位bit,即就是有多少個4字節,TCP頭部最大長度15*4=60;
6位的保留位:以備不時之需
6位的標志位:這個就需要詳細來說說,因為這個是TCP協議段中最不好記憶的地方


URG:緊急指針標志位,緊急指針是否有效
ACK:確認號標志位,確認號是否有效,一般只有第一個報文才會無效,在正常通信期間,其必須有效。
PSH:推送標志位,催促接收端把接收緩沖區的數據趕緊處理了
RST:重置標志位,請求重新建立連接
SYN:同步標志位,請求建立連接
FIN:結束標志位,通知對方,我要斷開連接了


16位的窗口大小:標示我還能接收多少數據,里面填寫的也就是我的接收緩沖區的大小
16位的檢驗和:由發送端填充,CRC校驗,若接收端校驗不通過就說明數據有問題,此處校驗和包括TCP整體(TCP首部和數據)
16位的緊急指針:標示那部分的數據是緊急數據,需要優先處理
40位的選項:這個就有點多了,在這里就不做闡述。

 

UDP協議段格式

 

16位UDP長度,表示整個數據報(UDP首部+UDP數據)的最大長度
即:一個UDP能傳輸的數據最大長度是64K
如果我們要傳輸的數據大於64K,那么我們需要在應用層手動分包,多次發送,並在接收端手動拼裝
UDP沒有發送緩沖區,應用層發送數據,由內核傳給網絡層協議進行后續額傳輸動作。
UDP有接受緩存區,但是接受緩存區不能保證和發送的的數據順序一致,如果接受區緩存滿了,再到達的UDP數據被丟棄

不可靠
無連接
面向數據報

 

TCP的三次握手和四次揮手,簡單描述,具體見另一篇文章詳細講。

 

 

 

 

   三、網絡層協議

網絡層的功能:負責相鄰計算機之間的通信。其功能包括三方面:

  一、處理來自傳輸層的分組發送請求,收到請求后,將分組裝入IP數據報,填充報頭,選擇去往信宿機的路徑,然后將數據報發往適當的網絡接口。

  二、處理輸入數據報:首先檢查其合法性,然后進行尋徑——假如該數據報已到達信宿機,則去掉報頭,將剩下部分交給適當的傳輸協議;假如該數據報尚未到達信宿,則轉發該數據報。

  三、處理路徑、流控、擁塞等問題。

網絡層包括:IP(Internet protocol)協議、ICMP(Internet Control Message Protocol)控制報文協議、ARP(Address resolution protocol)地址轉換協議、RARP(Reverse arp)反向地址轉換協議。

IP是網絡層的核心,通過路由選擇將下一跳IP封裝后交給接口層。IP數據報是無連接服務。

ICMP是網絡層的補充,可以回送報文。用來檢測網絡是否通暢。Ping命令就是發送ICMP的echo包,通過回送的echo relay進行網絡測試。

ARP是正向地址解析協議,通過已知的IP,尋找對應主機的MAC地址。

RARP是反向地址解析協議,通過MAC地址確定IP地址。比如無盤工作站和DHCP服務。

 

ARP協議為IP協議提供服務,IP協議為ICMP協議提供服務,ICMP協議為IGMP協議提供服務。

ARP協議:將IP地址通過廣播,目標Mac地址是FF-FF-FF…解析目標IP地址的Mac地址。(局域網中)通過arp -a可以查看Mac地址。

網絡執法官軟件通過動態更改主機Mac地址,實現arp欺騙,使兩台主機不能通訊

arp -s ip地址 Mac地址 靜態綁定Mac地址,可以阻止arp欺騙,點本地連接,支

持,修復,可以清除靜態Mac地址。

  四、物理鏈路層協議

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM