公司Linux下socket對接時發現介面中總是報錯,所以研究了Linux下的抓包
##tcpdump host #IP位址# / /取得主機210.27.48.1接收或發出的telnet套件
tcpdump參數的主要選項-i :指定網路卡預設為eth0-n :線上ip,而不是hostname
-c :指定抓到多個套件後推出
-A:以ASCII方式線上套件的內容,這個選項對文字格式的協定套件很有用
-x:以16進位顯示包的內容
-vvv:顯示詳細資料
-s :按包長截取資料;預設是60個位元組;如果包大於60個字節,則抓包會出現遺失資料;所以我們通常會設定-s 0 ;這樣會按照包的大小截取資料;抓到的是完整的包資料
-r:從檔案中讀取【與-w 對應,/usr/sbin/tcpdump - r test.out 讀取tcpdump -w test.out】
-w:到處指向文件【一定要用,-w t.out ,然後用-r t.out 來看抓包信息,否則可讀性很差】
2. tcpmdump 抓包出來分析套件的具體意義
套件攜帶的標誌:S:S=SYC :發起連結標誌P :P=PUSH:傳送資料標誌F:F=FIN:關閉連線標誌ack:表示確認包RST=RESET:異常關閉連線. 表示沒有任何標誌第一行: S:表示clinet.hostname的臨時埠50741向server.hostname 80 埠發起連接,client 的初始包序號是: 562843056 ;滑動視窗(win 14480)的大小是:14480 [14k] 滑動視窗即tcp 接收緩衝區的大小,用於 tcp tcp tcp 接收緩衝區的大小,用於 tcp tcp 接收緩衝區的大小,用於 tcp tcp.控制;mss 1460:可以接收的最大套件長度,通常是MTU - 40 byte;IP頭和TCP頭各20byte第二行: S:表示SYN狀態;是server.hostname 對第一行clinet.hostname發起連線的請求的回應;同時帶上client 端初始包序號1:ack 562843057 ,即server.hostname 下次等待接收這個包序號的包,用於tcp 位元組流的順序控制(?). server.hostname初始包序號:2306923370
第三行:client.hostname 再次確認,tcp連線完成三次握手。
第四行:P:推送資料 client.hostname 透過 50741 連接埠向 server.hostname 發送封包;封包大小是 1005byte ;第五行是 server.hostname 回應這個封包發送,接收這個封包。 ----> 完成後會出現一個server.hostname F 關閉連線的資料包,這裡沒有抓取
第6行 ---->10行是對1-5行的重複;因為機器是web服務是並發的。
Linux教學欄位進行學習!
以上是Linux下的抓包tcpdump的詳細內容。更多資訊請關注PHP中文網其他相關文章!