<font color='blue'>**情境介紹**</font>
:::info
很多時候由於我們的網路連線出現問題,使用類似 ping 的軟體功能卻又無法找出問題點,這時候就可以選擇使用『分析封包流向』的方法解決問題
:::
:::spoiler 封包
網路封包是目前網路用來傳送資料的『 最小 』單位。封包因為不同的應用服務或通訊協定,而有各種不同的大小。一個封包由標頭(Header)和資料(Data)所組成,封包的屬性被詳細地定義在標頭中,包括所使用的通訊協定、來源的IP位址、來源的通訊埠、目的地的IP位址、目的地的通訊埠等欄位,不過並非所有的通訊協定都有相同的欄位資料,由於採用不同的通訊協定,網路封包的結構都有些許的差異。
:::
- 目前常見的網路封包分析工具有==Tcpdump==、Sniffer、NetXRay、==Wireshark==等
## tcpdump
```
sudo tcpdump -i eth0 -nn -c 8
```
- sudo
: 表示進入root模式
- -i
: 指定要監聽的網路卡介面
- -nn
: 直接以 IP 及 port number 顯示,而非主機名與服務名稱
- -c
: 指定要抓取的封包數量
#### 結果解釋

$1$ `14:05:14.258775` : 此封包被擷取的時間,『時:分:秒』的單位;
$2$ `ARP` : 透過的通訊協定是ARP
$3$ `Request who-has 10.106.46.112 tell 10.106.1.254` : 這是一個ARP請求
- 請求是從10.106.1.254這個IP address發送出去,去詢問10.106.46.112的Ethernet address
[ARP 參考文件](https://www.tsnien.idv.tw/Manager_WebBook/chap4/4-2%20ARP%20%E5%8D%94%E5%AE%9A%E8%88%87%E5%88%86%E6%9E%90.html)
$4$ `length 42`:這表示整個ARP請求訊息的長度(以位元組為單位)

- 捉下來的封包數量
- 由過濾所得的封包數量
- 被核心所丟棄的封包數量
### 觀察server端與client端
`sudo tcpdump -i en0 -nn -c 10 'tcp'`
- 封包的傳遞都是雙向的, client 端發出『要求』而 server 端則予以『回應』,所以,當然是有去有回
- 實際例子
terminal_1
```
ssh lilina
```
terminal_2
```
sudo tcpdump -i en0 -nn | cat>waste.txt
grep 163.22.17.162 waste.txt
```


可以想像成:
A:「喂?有聽到嗎?」
B:「有聽到喔,你那邊聽得到我聲音嗎?」
A:「可以喔。」
### tcpdump基本參數

## Wireshark
