今天的內容主要是網絡協議以及常用工具的介紹。
協議頭與數據封包/拆包
數據封包示例:
MAC|IP|TCP|hello|
————————————
IP數據報
IP頭信息
- 默認20字節
常用網絡測試工具
- telnet
- netstat
- ping
- arp
- wireshark
- tcpdump
- ssh2
- secure crt
工具安裝命令
sudo ufw disable
sudo apt-get install openssh-server openssh-client
sudo apt-get install wireshark
telnet使用
格式:telnet IP地址 端口
示例:telnet 192.168.1.1 8888
注意:未指定端口時默認使用23號端口。
netstat命令
netstat -anp
netstat -n # 列出所有網絡端口使用情況
netstat -n -t # 列出所有TCP通信端口信息
netstat -n -u # 列出所有UDP通信端口信息
數據封包與拆包流程
- 發送端(Client):從應用層到接口層,逐層封裝頭部信息,最終形成一幀數據。
- 接收端(Server):從接口層到應用層,逐層解析并校驗,校驗失敗則丟棄數據包。
- MTU:最大傳輸單元1500字節,由以太網硬件決定。
TCP連接流程
- 建立TCP連接
- 發送HTTP請求報文
- 接收HTTP響應報文
- 釋放TCP連接
HTTP請求報文示例
GET /?pcm=202.412_0_0.0.0&scm=thor.412_14-201000.0.0.0&spm=smpc.home.top-nav.1.1753253408321kU1roGy_1467 HTTP/1.1
Host: news.sohu.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip,deflate
Connection: keep-alive
協議頭關鍵字段
- 接口層:以太網V2 MAC幀格式
- IP頭:20字節,包含雙方IP地址
- IP Flag:
- D標志位:是否允許分片
- M標志位:是否為最后一片
- TTL:生存周期,默認64,經網絡節點遞減至0時停止傳遞
- IP Flag:
- TCP頭:20字節
- TCP Flag:
- U:緊急數據(帶外數據)
- A:應答
- P:當前幀包含應用層數據
- R:連接復位
- S:建立連接
- F:斷開連接
- TCP Flag:
- UDP頭:8字節
網絡工具用途
- ssh:遠程登錄工具,需服務器IP、用戶名和密碼
- ping:檢測網絡連通性
- ifconfig:查看網卡IP地址
- netstat -anp:查看Linux所有網絡連接信息