1. 程式人生 > >Tcp抓包以及tcp狀態解釋

Tcp抓包以及tcp狀態解釋

  • tcp三次握手

             傳送端傳送一個SYN=1,ACK=0標誌的資料包給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會發送一個SYN=1,ACK=1標誌的資料包給傳送端,告訴它,可以通訊了,並且讓傳送端傳送一個確認資料包,這是第二次握手;最後,傳送端傳送一個SYN=0,ACK=1的資料包給接收端,告訴它連線已被確認,這就是第三次握手。之後,一個TCP連線建立,開始通訊。

  • tcp連線狀態

              SYN:同步標誌。同步序列編號(Synchronize Sequence Numbers)欄有效。該標誌僅在三次握手建立TCP連線時有效。它提示TCP連線的服務端檢查序列編號,該序列編號為TCP連線初始端(一般是客戶端)的初始序列編號。在這裡,可以把 TCP序列編號看作是一個範圍從0到4,294,967,295的32位計數器。通過TCP連線交換的資料中每一個位元組都經過序列編號。在TCP報頭中的序列編號欄包括了TCP分段中第一個位元組的序列編號。


               ACK:確認標誌。確認編號(Acknowledgement Number)欄有效。大多數情況下該標誌位是置位的。TCP報頭內的確認編號欄內包含的確認編號(w+1,Figure-1)為下一個預期的序列編號,同時提示遠端系統已經成功接收所有資料。

               RST:復位標誌。復位標誌有效。用於復位相應的TCP連線。

               URG:緊急標誌。緊急(The urgent pointer) 標誌有效。緊急標誌置位,

               PSH:推標誌。該標誌置位時,接收端不將該資料進行佇列處理,而是儘可能快將資料轉由應用處理。在處理 telnet 或 rlogin 等互動模式的連線時,該標誌總是置位的。

               FIN:結束標誌。帶有該標誌置位的資料包用來結束一個TCP回話,但對應埠仍處於開放狀態,準備接收後續資料。

        .TCP的幾個狀態對於我們分析所起的作用。在TCP層,有個FLAGS欄位,這個欄位有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG.其中,對於我們日常的分析有用的就是前面的五個欄位。它們的含義是:

  1.   SYN表示建立連線
  2. FIN表示關閉連線
  3. ACK表示響應
  4. PSH表示有 DATA資料傳輸
  5. RST表示連線重置

         其中,ACK是可能與SYN,FIN等同時使用的,比如SYN和ACK可能同時為1,它表示的就是建立連線之後的響應,如果只是單個的一個SYN,它表示的只是建立連線。TCP的幾次握手就是通過這樣的ACK表現出來的。但SYN與FIN是不會同時為1的,因為前者表示的是建立連線,而後者表示的是斷開連線。RST一般是在FIN之後才會出現為1的情況,表示的是連線重置。一般地,當出現FIN包或RST包時,我們便認為客戶端與伺服器端斷開了連線;而當出現SYN和SYN+ACK包時,我們認為客戶端與伺服器建立了一個連線。PSH為1的情況,一般只出現在 DATA內容不為0的包中,也就是說PSH為1表示的是有真正的TCP資料包內容被傳遞。TCP的連線建立和連線關閉,都是通過請求-響應的模式完成的。

  • tcp常見錯誤狀態
  1. Tcp previous segment lost(tcp先前的分片丟失)
  2. Tcpacked lost segment(tcp應答丟失)
  3. Tcp window update(tcp視窗更新)
  4. Tcp dup ack(tcp重複應答)
  5. Tcp keep alive(tcp保持活動)
  6. Tcp retransmission(tcp重傳)
  7. Tcp ACKed unseen segument (tcp看不見確認應答)
  8. tcp port numbers reused(tcp埠重複使用)
  9. tcp retransmission(tcp重傳)
  10. tcp fast retransmission (tcp快速重傳)
  11. TCP Previoussegment lost(傳送方資料段丟失
  12. tcp spurious retransmission(tcp偽重傳)
  • tcp抓包工具tcpdump和wireshark

              在linux下tcpdump是一個很強大的tcp抓包工具,但是由於linux分析不方便,因此可以將抓包資料儲存到.cap檔案中,然後在windos下使用wireshark進行分析,非常方便。

  • tcpdump抓包命令
tcpdump tcp -i eth2 -s 0 and port 20058  -w /home/pjroot/attence.cap
tcpdump tcp -i eth2 -t -s 0 -c 100 and port 20058  -w /home/pjroot/attence.cap
tcpdump tcp -i eth2 -s 0 and port 20058 and host 125.77.252.211 -w ./attence.cap

-i eth2 指定資料包經過的網絡卡

  -s 0 抓取資料包時預設抓取長度為68位元組。加上-S 0 後可以抓到完整的資料包

  port  指定埠 可以加上src 和dst表示現在為源埠還是目的埠

  host 指定主機可以加上src和dst表示源地址還是目的地址

  -w 表示要寫入到檔案中

  -t 表示不顯示時間戳

   -c 100 表示只抓取初始的100個數據包

列印所有進入或離開sundown的資料包.

tcpdump host sundown

也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發出的所有的資料包

tcpdump host 210.27.48.1 

列印helios 與 hot 或者與 ace 之間通訊的資料包

tcpdump host helios and \( hot or ace \)

截獲主機210.27.48.1 和主機210.27.48.2 210.27.48.3的通訊

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \) 

列印ace與任何其他主機之間通訊的IP 資料包, 但不包括與helios之間的資料包.

tcpdump ip host ace and not helios

如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通訊的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

截獲主機hostname傳送的所有資料

tcpdump -i eth0 src host hostname

監視所有送到主機hostname的資料包

tcpdump -i eth0 dst host hostname

如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令

tcpdump tcp port 23 and host 210.27.48.1
tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854

0x4745 為"GET"前兩個字母"GE",0x4854 為"HTTP"前兩個字母"HT"。

  • tcpudp命令引數說明

    -i any : 監聽所有介面
    -n : 不解析主機名
    -nn : 不解析主機名和埠名
    -X : 以16進位制和ascii格式顯示包
    -XX : 和-X一樣,但會顯示乙太網頭
    -v, -vv, -vvv : 獲取包含資訊量更多的包
    -c : 獲取指定數量的包,達到該數量後tcpdump停止
    -S : 顯示絕對序列號
    -e : 獲取乙太網頭
    -q : 顯示少量的協議資訊
    -E : 通過金鑰來解密IPSEC互動
    -s : 設定snaplength(snaplength是抓取的位元組數)

    - host // 根據ip地址查詢互動(不用"-n"也能根據主機名查詢互動)
    # tcpdump host 1.2.3.4

    - src,dst // 找出指定源地址或目的地址的互動
    # tcpdump src 2.3.4.5
    # tcpdump dst 3.4.5.6

    - net // 根據網路號抓取整個網路
    # tcpdump net 1.2.3.0/24

    - proto // 工作在tcp,udp,和icmp。注意你不用必須輸入proto。
    # tcpdump icmp

    - port // 檢視經過指定埠的互動
    # tcpdump port 3389

    - src,dst port // 找出指定源埠或目的埠的互動
    # tcpdump src port 1025
    # tcpdump dst port 389

    - src/dst, port, protocol // 將三個聯合在一起
    # tcpdump src port 1025 and tcp
    # tcpdump udp and src port 53

    你也可以用選項來找出多個埠而不用一一指定,也可以僅檢視大於或小於某一位元組大小的包。
    - Port Ranges // 檢視經過範圍內埠的互動
    tcpdump portrange 21-23
   
    - Packet Size Filter // 檢視大於或小於某一位元組大小的包
    tcpdump less 32
    tcpdump greater 128

    也可以用符號來代替
    tcpdump > 32
    tcpdump <= 128

    寫到一個檔案
    tcpdump用"-w"選項可以將抓到的內容存入檔案,再用"-r"選項讀回來,這個功能非常好,可以抓取原始互動之後再用其他工具執行它。
    以這種方式抓取到的互動會存成tcpdump格式的檔案,現在網路分析圈內基本都用這種格式,因此檔案可以被所有工具讀取,包括Wireshark, Snort等。
    - 抓取所有經過埠80的互動存入一個檔案
    # tcpdump -s 1514 port 80 -w capture_file
    - 以後可以再讀回來
    # tcpdump -r capture_file

    更多的例子
    # 從10.5.2.3到埠3389的tcp互動
    tcpdump -nnvvS and src 10.5.2.3 and dst port 3389
    # 從網路192.168到網路10或172.16的互動
    tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
    # 從192.168.0.2到網路172.16的非icmp互動
    tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net and not icmp
    # 從Mars或Pluto到非SSH埠的互動
    tcpdump -vv src Mars or Pluto and not dst port 22

    分組
    如果你試圖執行這個本來非常有用的命令,因為括號的原因會報錯,可以對括號進行轉義(前面加"/")或者將整個命令放在單引號中:
    # 從10.0.2.4到埠3389或22的互動(正確的表達)
    tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)'

相關推薦

Tcp以及tcp狀態解釋

tcp三次握手             傳送端傳送一個SYN=1,ACK=0標誌的資料包給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會發送一個SYN=1,ACK=1標誌的資料包給傳送端,告訴它,可以通訊了,並且讓傳送端傳送一個確認資料包,這是第

用wireshark分析TCP三次握手、四次揮手以及TCP實現可靠傳輸的機制(轉)

關於TCP三次握手和四次揮手大家都在《計算機網路》課程裡學過,還記得當時高超老師耐心地講解。大學裡我遇到的最好的老師大概就是這位了,雖然他只給我講過《java程式設計》和《計算機網路》,但每次課幾乎都動手敲程式碼或者當場做實驗。好了不扯了,下面進入正題。      關

fiddler 手機 https 以及一些fiddler無法解決的https問題http2、tcp、udp、websocket證書寫死在app中無法

原文: https://blog.csdn.net/wangjun5159/article/details/52202059 fiddler手機抓包原理 fiddler手機抓包的原理與抓pc上的web資料一樣,都是把fiddler當作代理,網路請求走fiddler,fiddler從中攔截資料,由於fid

TCP ------ 分析

com 分析 抓包 數據 技術 不用 一個 其他 -- 分析: ACK包可以和其他包合在一起 可以接收多個數據包後,一次性給一個應答,不用每個數據包一一對應給應答 TCP ------ 抓包分析

TCP以及解決方案

獲取文件 打開文件 tro cmd nco fin 邊界 機制 port TCP協議粘包現象的說明: TCP(transport control protocol,傳輸控制協議)是面向連接的,面向流的,提供高可靠性服務。收發兩端(客戶端和服務器端)都要有一一成對的sock

Wireshark分析TCP.IP.UDP.ICMP報文格式

TCP 報文格式分析: TCP 報文段的報頭有 10 個必需的欄位和 1 個可選欄位。報頭至少為 20 位元組。 1)源埠(16位):標識傳送報文的計算機埠或程序。一個 TCP 報文段必須包括源埠號,使目的主機知道應該向何處傳送確認報文。 2)目的埠(16位):標識接收報文的目的主機的埠或程序。   由

基於wireshark分析TCP的三次握手

img src 建立 tab 安全 連接狀態 協議 處理 基於 在TCP/IP協議通訊過程中,采用三次握手建立連接,從而保證連接的安全可靠。 通常三次握手步驟如下: 1. 第1次握手:建立連接時,客戶端發送 SYN 包到服務器端,攜帶一個序列碼給服務器端用於確認,並進入

分析TCP的三次握手和四次握手

問題描述:        在上一篇《如何對Android裝置進行抓包》中提到了,伺服器的開發人員需要我bug重現然後提供抓包給他們分析,所以抓好包自己也試著分析了一下。發現裡面全是一些TCP協議和HTTP協議。所以要想進行抓包分析,必須先了解TCP的原理。這裡介紹了TCP的

UDP/TCP分析

TCP/UDP資料包結構 1. 單獨的TCP/UDP報文結構 UDP頭:8byte TCP頭:24byte   2.帶幀頭(14byte),IP頭(20byte)的UDP資料包結構 PS:後面的資料分析都是帶IP頭的資料包。 (四)UDP資料包分析 0x0000

網路協議分析——TCP傳輸控制協議(連線建立、釋放)

前言 TCP協議為資料提供可靠的端到端的傳輸,處理資料的順序和錯誤恢復,保證資料能夠到達其應到達的地方。TCP協議是面向連線的,在兩臺主機使用TCP協議進行通訊之前,會先建立一個TCP連線(三次握手),雙方不再繼續通訊時,會將連線釋放(正常情況下四次揮手)。下面就抓包分析TCP三次握手和四次揮手的過程。

tcpdump分析TCP三次握手過程

tcpdump port 6000 -c 3 -n內容如下:21:07:17.790296 IP  192.168.1.104.2511 > 192.168.1.90.6000: S 3359422806:3359422806(0) win 64240 <mss1460,nop,nop,sackO

Wireshark分析TCP的三次握手

今天學習了Wireshark工具,對於抓包有了極大的興趣;特意通過抓包來加深一下TCP三次握手的過程,同時做以記錄。 TCP報文段結構 過濾規則介紹 網路中包含著許多的資料報文,但是許多的都不是我們需要的。網上給的大多數規則不夠具體,

wireshark圖解 TCP三次握手/四次揮手詳解

原地址:http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%9B%9B%E6%AC%A1%E6%8

手機及電腦tcp,udp,http)

1.軟體 下面兩款都是免費軟體。 1.1 fiddler 介面見圖1-1. 圖1-1 fiddler介面 1.2 wireshark 介面見圖1-2. 圖1-2 wireshark 介面 2. 電腦抓包 http包可以在fiddler裡面看。 http及tcp、udp包

wireshark分析tcp的三次握手詳細過程

下載安裝wireshark 抓包分析詳細過程 在wireshark中輸入http過濾, 然後選中一條http記錄,如下圖: 右鍵點選選中 追蹤流 > tcp流,如下: 會看到下圖所示: 可以發現,wireshark截獲到了三次握手的三

wireshark分析——TCP/IP協議

本文來自網易雲社群當我們需要跟蹤網路有關的資訊時,經常會說“抓包”。這裡抓包究竟是什麼?抓到的包又能分析出什麼?在本文中以TCP/IP協議為例,簡單介紹TCP/IP協議以及如何通過wireshark抓包分析。Wireshark 是最著名的網路通訊抓包分析工具。功能十分強大,可

【極客思考】計算機網路:Wireshark分析TCP中的三次握手與四次揮手

【摘要】本文重點分析計算機網路中TCP協議中的握手和揮手的過程。 【前提說明】 前段時間突然看到了一篇關於TCP/IP模型的文章,心想這段時間在家裡也用wireshark抓了點包,那麼想著想著就覺得需要複習一下網路知識,於是就有這篇博文的誕生。當然網上關於TCP相關的知識點也是芸芸,閒著無事也可以多googl

Fiddler基本用法以及如何對手機以及無法連線手機的解決

一、Fiddler是什麼?   ·一種Web除錯工具。   ·可以記錄所有客戶端和伺服器的http和https請求。   ·允許監視、設定斷點、修改輸入輸出資料。 二、Fiddler下載 三、Fiddler的工作原理   Fid

tcpdump以及埠檢視的一些操作

1.tcpdump;       nginx開啟後會佔用80埠,此時執行命令:tcpdump tcp port 80           結果如下: [[email protected] ~]$ sudo tcpdump tcp port 80 [sudo] p

手機資料以及wireshark技巧

本文主要討論一種非常方便的抓取Android和iphone手機網路資料包的辦法,以及介紹wireshark最常用的技巧 回到頂部 抓包工具介紹 (1).網頁抓包工具 Chrome瀏覽器外掛 FireBug 外掛 HttpWatch Fiddler 在瀏覽器chr