1. 程式人生 > >IP協議協議--IP頭部資訊

IP協議協議--IP頭部資訊

《Linux高效能伺服器程式設計》閱讀筆記:

1. IP協議概述

  IP協議是TCP/IP協議簇的核心,它為上層(傳輸層)協議(TCP/UDP)提供無狀態、無連線、不可靠的服務。

  (1) 無狀態: IP通訊雙方的資料狀態資訊不同步,即所有的IP資料報的傳送、傳輸、接收都是相互獨立的,沒有上下文關係。優點是簡單高效,不佔用核心結構來儲存通訊狀態,每次傳輸資料時不用攜帶狀態資訊
  (2) 無連線: IP通訊雙方不能長久地維持對方的任何資訊。上層協議每次傳送資料時都需要指明通訊對方的地址
  (3) 不可靠: 不能保證IP資料報準確地到達接收端,它只是承諾盡最大的努力

  在網路協議中無狀態無連線是很常見的,如UDP協議和HTTP協議。HTTP協議中,一個瀏覽器的連續兩次網頁請求之間並沒有關聯,它們被WEB伺服器獨立處理。使用IP服務的上層協議若要實現資料確認、超時重傳等機制,就需要在上層協議中實現,如TCP協議。

2. IPv4頭部結構

  以IPv4版本的IP協議為例,分析其頭部資訊:
  IPv4的頭部結構長度為20位元組,若含有可變長的選項部分,最多60位元組。
這裡寫圖片描述

  (1) 版本號:IP協議的版本。對於IPv4來說值是4
  (2) 頭部長度:4位最大為0xF,注意該欄位表示單位是字(4位元組)
  (3) 服務型別(Type Of Service,TOS):3位優先權欄位(現已被忽略) + 4位TOS欄位 + 1位保留欄位(須為0)。4位TOS欄位分別表示最小延時、最大吞吐量、最高可靠性、最小費用,其中最多有一個能置為1。應用程式根據實際需要來設定 TOS值,如ssh和telnet這樣的登入程式需要的是最小延時的服務,檔案傳輸ftp需要的是最大吞吐量的服務
  (4) 總長度: 指整個IP資料報的長度,單位為位元組,即IP資料報的最大長度為65535位元組(2的16次方)。由於MTU的限制,長度超過MTU的資料報都將被分片傳輸,所以實際傳輸的IP分片資料報的長度遠遠沒有達到最大值

  下來的3個欄位則描述如何實現分片:
  (5) 標識:唯一地標識主機發送的每一個數據報,其初始值是隨機的,每傳送一個數據報其值就加1。同一個資料報的所有分片都具有相同的標識值
  (6) 標誌: 位1保留,位2表禁止分片(DF),若設定了此位,IP模組將不對資料報進行分片,在此情況下若IP資料報超過MTU,IP模組將丟棄資料報並返回一個ICMP差錯報文;位3標識更多分片(MF),除了資料報的最後一個分片,其他分片都要把它設定為1
  (7) 位偏移:分片相對原始IP資料報資料部分的偏移。實際的偏移值為該值左移3位後得到的,所以除了最後一個IP資料報分片外,每個IP分片的資料部分的長度都必須是8的整數倍

  (8) 生存時間::資料報到達目的地之前允許經過的路由器跳數。TTL值被髮送端設定,常設定為64。資料報在轉發過程中每經過一個路由該值就被路由器減1.當TTL值為0時,路由器就將該資料包丟棄,並向源端傳送一個ICMP差錯報文。TTL可以防止資料報陷入路由迴圈
  (9) 協議: 區分IP協議上的上層協議。在Linux系統的/etc/protocols檔案中定義了所有上層協議對應的協議欄位,ICMP為1,TCP為6,UDP為17
  (10) 頭部校驗和: 由傳送端填充接收端對其使用CRC演算法校驗,檢查IP資料報頭部在傳輸過程中是否損壞
  (11) 源IP地址和目的IP地址: 表示資料報的傳送端和接收端。一般情況下這兩個地址在整個資料報傳遞過程中保持不變,不論中間經過多少個路由器
  (12) 選項:可變長的可選資訊,最多包含40位元組。選項欄位很少被使用。可用的IP可選項有:
  a. 記錄路由: 記錄資料包途徑的所有路由的IP,這樣可以追蹤資料包的傳遞路徑
  b. 時間戳: 記錄每個路由器資料報被轉發的時間或者時間與IP地址對,這樣就可以測量途徑路由之間資料報的傳輸的時間
  c. 鬆散路由選擇: 指定路由器的IP地址列表資料傳送過程中必須經過所有的路由器
  d. 嚴格路由選擇: 資料包只能經過被指定的IP地址列表的路由器
  e. 上層協議(如TCP/UDP)的頭部資訊

3. tcpdump抓取IP資料報

  在Ubuntu 14.04中執行telnet命令登入本機,並在另一終端抓取這個過程中telnet伺服器-telnet客戶端之間的資料包:

$ sudo tcpdump -ntx -i lo

  在另一終端:

$ telnet 127.0.0.1

這裡寫圖片描述

  觀察tcpdump抓取到的資料:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 127.0.0.1.44626 > 127.0.0.1.23: Flags [S], seq 3041640326, win 43690, options [mss 65495,sackOK,TS val 4701824 ecr 0,nop,wscale 7], length 0
    0x0000:  4510 003c 0106 4000 4006 3ba4 7f00 0001
    0x0010:  7f00 0001 ae52 0017 b54b bf86 0000 0000
    0x0020:  a002 aaaa fe30 0000 0204 ffd7 0402 080a
    0x0030:  0047 be80 0000 0000 0103 0307

  這是一個IP資料報:
  (1) telnet登入的是本機,所以IP資料報的源端IP地址和目的端IP地址都是127.0.0.1。telnet伺服器使用的埠號是23,

telnet          23/tcp  #摘自/etc/services檔案

  telnet客戶端使用的是臨時埠號44626。telnet服務使用的是TCP協議,Flags、sq、win、options描述的都是TCP頭部資訊,詳細將在TCP協議分析中解析。

  (2) tcpdump命令開啟-x選項,使之輸出二進位制碼。這些二進位制碼用十六進位制的格式呈現,共60位元組: 前20位元組是IP頭部,後40位元組是TCP頭部。length為0表示這些資料不包含資料。

  對照前面表格的IPv4,可得各資料取值意義如下:

0x4             4位的版本號                      IP版本號
0x5             4位的頭部長度                 頭部長度為5個字(20位元組)
0x10            8位的服務型別TOS              開啟最小延時服務
0x003c          16位的總長度                 資料包總長度(60位元組)

0x0106          16位的標識                      資料報標識
0x4             3位的標誌                       禁止分片,因沒攜帶資料

0x000           13位的位偏移                 為0表沒發生位偏移
0x40            8位的生存時間                 生存時間為64跳
0x06            8位的協議欄位                 為6表上層協議是TCP協議

0x3ba4          16位的IP頭部校驗和             頭部校驗和

0x7f00 0001     32位的源端IP地址              源端IP地址127.0.0.1
0x7f00 0001     32位的目的端IP地址             目的端IP地址127.0.0.1

相關推薦

IP協議協議--IP頭部資訊

《Linux高效能伺服器程式設計》閱讀筆記: 1. IP協議概述   IP協議是TCP/IP協議簇的核心,它為上層(傳輸層)協議(TCP/UDP)提供無狀態、無連線、不可靠的服務。   (1) 無狀態: IP通訊雙方的資料狀態資訊不同步,即所有的IP資

應用層協議ip地址劃分

ip地址 技術 log 1-1 應用 blog -1 應用層協議 cnblogs 1、應用層協議 2、ip地址 3、子網劃分及超網合並 應用層協議及ip地址劃分

計算機網絡學習總結----進制轉化+OSI協議+TCP/IP協議

網絡計算機網絡學習總結----進制轉化+OSI協議+TCP/IP協議==================================================================================一、進制轉化=================================

http協議,tcp協議ip協議,dns服務之前的關系和區別

ip協議 服務器 基本 log 標記 理解 增加 更改 過程 長期以來都有一個問題,大家都在說http協議,tcp協議,ip協議,他們之間到底什麽區別,有什麽用,沒人告訴我,最近看了這本《圖解http》明白了一些,以下圖片摘自這本書 一、理解一個傳輸流再去擴展 用

Internet層協議IP協議

IT gpo rarp upload 包含 alt 好的 p地址 icm Internet層協議特征 運行於 OSI 網絡層面向無連接的協議獨立處理數據包分層編址盡力而為傳輸無數據恢復功能 Internet層主要包含IP、ICMP、ARP、RARP幾個協議。 這一主要說I

TCP/IP-ICMP協議

ade 並且 發送 .com 分享 圖片 icm -h line 8.1 作用 ip協議沒有提供直接的方法發現那些發往目的地失敗的ip數據包。因此采用internet控制報文協議提供ip協議層配置和ip數據報存執相關的診斷和控制信息。一般認為是ip層的一部分。但是使用ip層

002::每天五分鐘入門TCP/IP協議棧::IP協議IP首部長度問題

IP 首部 首部長度 事出反常必有妖,邪乎到家必有鬼。 整個TCP/IP協議中,IP協議是最核心的協議。 IP協議是不可靠的、無連接的服務。 何為不可靠?不能保證IP數據報能夠成功到達目的地,傳輸的可靠×××給傳輸層或應用層去實現。 何為無連接?IP並不維護任何關於後續數據報的狀態信息。 進入正題

03-IP網際協議

狀態信息 廣播地址 配置 環回地址 獲得 存儲 機器 網際協議 屬於 IP I P是T C P / I P協議族中最為核心的協議。所有的 T C P、U D P、I C M P及I G M P數據都以I P數據報格式傳輸。 不可靠( u n r e l i a b l

趣談網路協議-通訊協議綜述-ip地址

      ip address命令如下 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:0

網路協議 2 - IP 是怎麼來,又是怎麼沒的?

瞭解完網路協議,我們會發現,網路通訊的五層模型裡,有兩個很重要的概念:IP 地址和 MAC 地址。 那麼 IP 地址是怎麼來的,又是怎麼沒的?MAC 地址與 IP 地址又有什麼區別? 這回答上面問題前,先熱下身,大家知道如何檢視本機的 IP 嗎?這個問題,即便是沒有專業學過計算機的人,只要折

TCP/IP 第三章 IP:網際協議

引言 IP是TCP/IP協議族中最核心的協議。所有的TCP、UDP、ICMP及IGMP資料都以IP資料報格式傳輸。IP提供不可靠、無連線的資料報傳送服務 不可靠:它不能保證IP資料報能成功地到達目的地。IP僅提供最好的傳輸服務。如果發生某種錯誤,如某個路由器暫時用完了緩衝區,IP有一個

兩張圖說明http協議,tcp協議ip協議,dns服務之間的關係和區別

 一、理解一個傳輸流再去擴充套件     用http舉例來說,首先作為傳送端的客戶端在應用層(http協議)發出一個想看某個web頁面的http請求。 接著,為了傳輸方便,在傳輸層(tcp協議)把從應用層處收到的資料(http請求報文)進行分割,並在各個報文上打上標記

一個網路請求/響應發生時,都經過哪些?瀏覽器輸入查詢,伺服器響應結果,是如何進行的?TCP/IP 分層協議,埠號作用

    在網路上,通訊的雙方通常都是要經過多臺計算機或者網路裝置中轉才能連線到對方。而在進行中轉時,會利用下一站中轉裝置的MAC地址來搜尋下一個中轉目標,這時我們就是靠ARP協議來進行處理。 兩張圖,完美解析: 資料來源:OSI七層與TCP/IP五層網路

TCP,IP通訊協議

一個 http 請求,在整個網路中的請求過程 當應用程式用T C P傳送資料時,資料被送入協議棧中, 然後逐個通過每一層直到被當作一串位元流送入網路。其 中每一層對收到的資料都要增加一些首部資訊 當目的主機收到一個乙太網資料幀時,資料就開始從協議 棧中由底向上升,同時去掉各層協議加上的報文

lwIP(Light Weight IP協議

訊號量   訊號量結構體:struct sys_semt     struct _sys_sem {     void *sem;    };         err_t sys_sem_new(sys_sem_t

TCP/IP 網路協議

TCP/IP :       TCP/IP:在網路通訊中,TCP/IP是主流協議()       應用層:使用者自定義的協議(HTTP,EMAIL,),用於使用者之間資料的傳送      &nbs

IP網路層 IP協議

當資料傳輸到三層網路層進行封裝,要加IP報文 IP報文頭部 前五行一共二十個位元組,且是固定長度    Version:版本(IPV4 IPV6)    DS Field:一個位元組(0——7),作為TOS用作QOS(

TCP/IP協議--05 IP選路

靜態IP選路 一個簡單的路由表 選路是IP層最重要的一個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據IP資料包的IP地址來選擇路由。這裡就不重複了。首先來看看一個簡單的系統路由表。       對於一個給定的路由器,

TCP/IP協議--03 IP、ARP、RARP協議

三個協議處於同一層,ARP協議用來找到目標主機的Ethernet網絡卡Mac地址,IP則承載要傳送的訊息。資料鏈路層可以從ARP得到資料的傳送資訊,而從IP得到要傳輸的資料資訊。 IP協議 IP協議是TCP/IP協議的核心,所有的TCP,UDP,IMCP,IGCP的資料都以IP資料格式傳輸。

IP網際協議分析

簡介        IP協議(Internet Protocol)即網際協議,是用於報文交換網路的一種面向資料的協議。不提供可靠的傳輸服務(也叫盡最大努力傳輸),它不提供端到端的或(路由)結點到(路由)結點的確認,對資料沒有差錯控制,它只使用報頭的校驗