linux 網絡協議分析---3

本章節主要介紹linxu網絡模型、以及經常使用的網絡協議分析以太網協議、IP協議、TCP協議、UDP協議html

1、網絡模型服務器

TCP/IP分層模型的四個協議層分別完成如下的功能:
  第一層 網絡接口層
   網絡接口層包括用於協做IP數據在已有網絡介質上傳輸的協議。實際上TCP/IP標準並不定義與ISO數據鏈路層和物理層相對應的功能。相反,它定義像 地址解析協議(Address Resolution Protocol,ARP)這樣的協議,提供TCP/IP協議的數據結構和實際物理硬件之間的接口。
  第二層 網間層
   網間層對應於OSI七層參考模型的網絡層。本層包含IP協議、RIP協議(Routing Information Protocol,路由信息協議),負責數據的包裝、尋址和路由。同時還包含網間控制報文協議(Internet Control Message Protocol,ICMP)用來提供網絡診斷信息。
  第三層 傳輸層
   傳輸層對應於OSI七層參考模型的傳輸層,它提供兩種端到端的通訊服務。其中TCP協議(Transmission Control Protocol)提供可靠的數據流運輸服務,UDP協議(Use Datagram Protocol)提供不可靠的用戶數據報服務。
  第四層 應用層
網絡

  應用層對應於OSI七層參考模型的應用層和表達層。因特網的應用層協議包括Finger、Whois、FTP(文件傳輸協議)、Gopher、 HTTP(超文本傳輸協議)、Telent(遠程終端協議)、SMTP(簡單郵件傳送協議)、IRC(因特網中繼會話)、NNTP(網絡新聞傳輸協議) 等。數據結構

OSI以及TCP/IP協議對應關係表:架構

OSI七層模型 TCP/IP四層模型 傳輸的數據
應用層 應用層 數據
表示層 應用層 數據
會話層 應用層 數據
傳輸層 傳輸層
網絡層 網絡層
數據鏈路層 網絡接口層
物理層 網絡接口層 比特流

 

2、協議分析socket

  網絡協議是網絡上全部設備(網絡服務器、計算機及交換機路由器防火牆等)之間通訊規則的集合,它規定了通訊時信息必須採用的格式和這些格式的意義。大多數網絡都採用分層的體系結構,每一層都創建在它的下層之上,向它的上一層提供必定的服務,而把如何實現這一服務的細節對上一層加以屏蔽。spa

  一臺設備上的第n層與另外一臺設備上的第n層進行通訊的規則就是第n層協議。在網絡的各層中存在着許多協議,接收方和發送方同層的協議必須一致, 不然一方將沒法識別另外一方發出的信息。網絡協議使網絡上各類設備可以相互交換信息。常見的協議有:TCP/IP協議、以太網、UDP協議等。設計

2.1協議架構3d

 

不一樣的協議層對數據包有不一樣的稱謂,在傳輸層叫作段(segment),在網絡層叫作數據報(datagram),在鏈路層叫作幀(frame)。數據封裝成幀後發到傳輸介質上,到達目的主機後每層協議再剝掉相應的首部,最後將應用層數據交給應用程序處理。指針

  其實在鏈路層之下還有物理層,指的是電信號的傳遞方式,好比如今以太網通用的網線(雙絞線)、早期以太網採用的的同軸電纜(如今主要用於有線電視)、光纖等都屬於物理層的概念。

 

(1)其中的源地址和目的地址是指網卡的硬件地址(也叫MAC 地址),長度是48 位,是在網卡出廠時固化的。

  (2)注意網卡芯片(例如DM9000A)收到的數據就是如上所示的一長串數據;其中包括以太網幀頭、IP報報頭、傳輸層協議段頭、應用層所需數據。

  (3)以太網幀中的數據長度規定最小46 字節,最大1500 字節,ARP 和RARP 數據包的長度不夠46 字節,要在後面補填充位。最大值1500 稱爲以太網的最大傳輸單元(MTU),不一樣的網絡類型有不一樣的MTU,若是一個數據包從以太網路由到撥號鏈路上,數據包度大於撥號鏈路的MTU了,則須要 對數據包進行分片fragmentation)。ifconfig 命令的輸出中也有「MTU:1500」。注意,MTU 個概念指數據幀中有效載荷的最大長度,不包括幀首部的長度。

2.3IP協議格式

版本:

  佔 4 位,指 IP 協議的版本目前的 IP 協議版本號爲 4 (即 IPv4)

首部長度:

  佔4位,可表示的最大數值是15個單位(一個單位爲 4 字節)所以IP 的首部長度的最大值是 60 字節

區分服務:

  佔8位,用來得到更好的服務,在舊標準中叫作服務類型,但實際上一直未被使用過.1998 年這個字段更名爲區分服務.只有在使用區分服務(DiffServ)時,這個字段才起做用.通常的狀況下都不使用這個字段

總長度:

  佔16位,指首部和數據之和的長度,單位爲字節,所以數據報的最大長度爲 65535 字節.總長度必須不超過最大傳送單元 MTU

標識:

  佔16位,它是一個計數器,用來產生數據報的標識

標誌(flag):

佔3位,目前只有前兩位有意義

  MF

  1. 標誌字段的最低位是 MF (More Fragment)
  2. MF=1 表示後面「還有分片」。MF=0 表示最後一個分片

  DF

  1. 標誌字段中間的一位是 DF (Don't Fragment)
  2. 只有當 DF=0 時才容許分片

片偏移:

佔12位,指較長的分組在分片後某片在原分組中的相對位置.片偏移以 8 個字節爲偏移單位

 

生存時間:

  佔8位,記爲TTL (Time To Live) 數據報在網絡中可經過的路由器數的最大值,TTL 字段是由發送端初始設置一個 8 bit字段.推薦的初始值由分配數字 RFC 指定,當前值爲 64.發送 ICMP 回顯應答時常常把 TTL 設爲最大值 255

協議:

  佔8位,指出此數據報攜帶的數據使用何種協議以便目的主機的IP層將數據部分上交給哪一個處理過程, 1表示爲 ICMP 協議, 2表示爲 IGMP 協議, 6表示爲 TCP 協議, 17表示爲 UDP 協議

 

首部檢驗和:

  佔16位,只檢驗數據報的首部不檢驗數據部分.這裏不採用 CRC 檢驗碼而採用簡單的計算方法

源地址和目的地址:

  都各佔 4 字節,分別記錄源地址和目的地址

2.4TCP協議格式

1. 源端口和目的端口

  各佔2字節,端口號加上IP地址,共同構成socket。互相通訊的進程使用一對socket,包括協議、源IP、源端口、目的IP、目的端口,這五個元素惟一肯定一個TCP鏈接。

2. 序號

  佔4字節,是TCP段所發送的數據部分第一個字節的序號。在TCP傳送的數據流中,每個字節都有一個序號。創建鏈接時,發送方將初始序號(Initial Sequence Number, ISN)填寫到第一個發送的TCP段序號中。

3. 確認號

  佔4字節,是指望收到對方下次發送的數據的第一個字節的序號,也就是指望收到的下一個TCP段的首部中的序號,等於已經成功收到的TCP段的最 後一個字節序號加1。確認號在ACK標誌爲1時有意義,除了主動發起鏈接的第一個TCP段不設置ACK標誌外,其後發送的TCP段都會設置ACK標誌。

4. 數據偏移

  佔4比特,表示數據開始的地方離TCP段的起始處有多遠。實際上就是TCP段首部的長度。因爲首部長度不固定,所以數據偏移字段是必要的。數據偏移以32位爲長度單位,所以TCP首部的最大長度是60(15*4)個字節。

5. 控制位

  一共6個,佔6比特,設置爲1時有效。按順序依次爲:URG、ACK、PSH、RST、SYN、FIN。

URG

緊急位,爲1時,首部中的緊急指針有效

ACK

確認位,爲1時,首部中的確認號有效

PSH

推位,爲1時,要求把數據儘快交給應用程序

RST

復位標誌,爲1時,復位鏈接,通常在出錯或關閉鏈接時使用

SYN

同步位,在創建鏈接時使用,當SYN=1而ACK=0時,代表這是一個鏈接請求報文段。對方若贊成創建鏈接,在發回的報文段中使SYN=1和ACK=1

FIN

結束位,爲1時,表示發送方完成了數據發送

6. 窗口

  佔2字節,表示報文段發送方指望接收的字節數,可接收的序號範圍是從接收方的確認號開始到確認號加上窗口大小之間的數據。

7. 校驗和

  校驗和包含了僞首部、TCP首部和數據,校驗和是TCP強制要求的,由發送方計算,接收方驗證。

8. 緊急指針

  URG標誌爲1時,緊急指針有效,表示數據須要優先處理。緊急指針指出在TCP段中的緊急數據的最後一個字節的序號,使接收方能夠知道緊急數據共有多長。

9. 選項

  最經常使用的選項是最大段大小(Maximum Segment Size,MSS),向對方通知本機能夠接收的最大TCP段長度。MSS選項只在創建鏈接的請求中發送。

2.5UDP協議格式

UDP是一種無鏈接的、不可靠的傳輸層協議;  在完成進程到進程的通訊中提供了有限的差錯檢驗功能;  設計比較簡單的UDP協議的目的是但願以最小的開銷來達到網絡環境中的進程通訊目的;  進程發送的報文較短,同時對報文的可靠性要求不高,那麼可使用UDP協議。

相關文章
相關標籤/搜索