歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux網絡 >> linux網絡協議分析3IP協議、TCP協議、UDP協議等網絡模型

linux網絡協議分析3IP協議、TCP協議、UDP協議等網絡模型

日期:2017/3/2 17:15:22   编辑:Linux網絡

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

一、網絡模型

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四層模型 傳輸的數據 應用層 應用層 數據 表示層 應用層 數據 會話層 應用層 數據 傳輸層 傳輸層 段 網絡層 網絡層 包 數據鏈路層 網絡接口層 幀 物理層 網絡接口層 比特流

二、協議分析

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

  一台設備上的第n層與另一台設備上的第n層進行通信的規則就是第n層協議。在網絡的各層中存在著許多協議,接收方和發送方同層的協議必須一致, 否則一方將無法識別另一方發出的信息。網絡協議使網絡上各種設備能夠相互交換信息。常見的協議有:TCP/IP協議、以太網、UDP協議等。

2.1協議架構

不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(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協議。

Copyright © Linux教程網 All Rights Reserved