1. 程式人生 > >實踐出真知

實踐出真知

傳輸層

使用route命令檢視路由表

Windows

route print

Linux

// man route檢視命令手冊
route -n

使用netstat列出監聽中的埠

Windows

netstat -ano

篩選指定資訊
netstat -ano | find /i "8005"

 Linux

netstat -ant

使用netstat 檢視資料包統計資訊

Windows、Linux使用

netstat -s

網路層

使用tcpdump命令抓取IP資料包

1、安裝tcpdump工具

sudo apt-get update
sudo apt-get install -y traceroute

2、抓取IP資料包

sudo tcpdump -ntx -c 1

引數說明:

  • -n :顯示 IP 地址而非域名地址
  • -t :不顯示時間戳
  • -x :以十六進位制顯示包內內容
  • -c :tcpdump 將在接受到指定個數據包後退出

192.168.42.5.5901 > 192.168.42.2.39512 表示:

源 IP 為 192.168.42.5,埠 5901,目的 IP 為 192.168.42.2,埠 39512。

然後看到 0x0000 那行:

  • 協議版本:第一個數字“4”,為0x4。表示協議版本是IPv4。

  • 首部長度:4位,第二個數字“5”,為0x5。表示IP報頭長度為5*4=20byte。

如果是0xF(15),則表示報頭長度為15*4=60位元組。

1byte=8bit,所以這裡可以知道 IP 報頭為 4500 到 2a02。

16進位制的1位等於2進位制的4位。

  • 服務型別(TOS):0x00,意味著是一般服務。

  • 總長度:0x331c,換算下來為 13084 位元組。

  • 標識:0xb6ac

  • 3bit 標誌 + 13bit 片偏移:0x4000

  • 生存時間:0x40,值為 64

  • 協議:0x06,代表 TCP 協議

  • 首部校驗和:0x7bd7

其他資訊可依次類推。

Windows

ping程式

ping程式簡介

ping 程式是在網路層對兩臺主機之間連通性進行測試的基本工具。

ping只是利用 ICMP 回顯請求報文和應答報文,而不經過傳輸層。

ping程式計算往返時間

ping 程式會在ICMP報文中存放傳送請求時的時間值,當應答返回時,用當前時間減去存放在 ICMP 報文中的時間值,即是往返時間。

使用ping向www.mi.com傳送3個數據包

// Linux
ping -c 3 www.mi.com

// windows
ping -n 3 www.mi.com

使用ping檢視網路資料包的結構

使用 tcpdump 命令檢視 ping 命令包的結構:

sudo tcpdump -nnvXSs 0 -c2 icmp

此時還沒有資料包資訊新開一個標籤,執行以下命令,就能看到輸出:

ping -c 1 mirrors.cloud.aliyuncs.com

第一個資料報是ICMP回顯請求報文,是本機 192.168.42.4 傳送給 100.100.2.148 的;

第二個資料報是ICMP回顯應答報文,是 100.100.2.148 發給本機 192.168.42.4 的。

ping 命令判斷作業系統

ping 命令會返回一個 TTL(Time To Live) 值,我們可以使用它來判斷目標主機的作業系統型別。常見作業系統的預設 TTL 值如下:

  • UNIX TTL: 255

  • Linux TTL: 64

  • WINDOWS 95/98 TTL: 32

  • Windows NT 4.0/2000/XP/2003/7/8/10 TTL:128

此方法主要用於粗略的判斷,想更加準確的獲取伺服器作業系統資訊請學習 NMAP 相關知識。

traceroute程式

traceroute是Linux系統中的工具;Windows系統中是tracert。

traceroute簡介

traceroute程式用來偵測IP資料報從源主機到目的主機之間所經路由的情況。

剛才 ping 程式中講過,帶 -R 引數的 ping 命令也可以記錄路由過程,但是因為 IP 資料報頭的長度限制(最多能儲存 9個IP 地址),ping 不能完全記錄IP資料報所經過的路由器。

traceroute工作原理

1、傳送一份TTL為1的IP資料報給目的主機;經過第一個路由器時,TTL 值被減為 0,則第一個路由器丟棄該資料報,並返回一份超時 ICMP 報文。於此得到了路徑中第一個路由器的地址。

2、然後再發送一份 TTL 值為 2 的資料報,便可得到第二個路由器的地址。

3、以此類推,一直到到達目的主機為止。這樣便記錄下了路徑上所有路由器的IP。

使用 traceroute 來追蹤路由過程

1、安裝traceroute工具

sudo apt-get update
sudo apt-get install -y traceroute

2、追蹤本機到www.baidu.com的路由過程

traceroute www.baidu.com

Windows系統命令

ifconfig/ipconfig

檢視本機IP

Linux系統

這是一個C類IP。

Windows系統

ipconfig

檢視子網掩碼

ARP程式

檢視ARP快取表

Linux/Windows系統

資料鏈路層

檢視網路介面的 MTU

使用netstat -in 命令檢視網路介面的 MTU。

 

——本文結束——