摘要:原文地址抓包工具使用在調試網絡通信程序是是必備工具。如,可以看到次握手,數據推送,次揮手,全部細節。表示發送端支持并同意使用選項。
原文地址:tcpdump抓包工具使用
在調試網絡通信程序是tcpdump是必備工具。tcpdump很強大,可以看到網絡通信的每個細節。如TCP,可以看到3次握手,PUSH/ACK數據推送,close4次揮手,全部細節。包括每一次網絡收包的字節數,時間等
最簡單的一個使用示例:
sudo tcpdump -i any tcp port 11211
-i 參數制定了網卡,any表示所有網卡
tcp 指定僅監聽TCP協議
port 制定監聽的端口
演示一個memcache的連接,賦值,取值,關閉連接過程tcpdump需要root權限 需要要看通信的數據內容,可以加 -Xnlps0 參數,其他更多參數請參見網上的文章
執行命令:
telnet 10.8.34.27 11211
運行結果:
15:14:34.336031 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [S], seq 3049437196, win 14480, options [mss 1460,sackOK,TS val 910488745 ecr 4129152319,nop,wscale 7], length 0 15:14:34.336057 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [S.], seq 3663074357, ack 3049437197, win 14480, options [mss 1460,sackOK,TS val 4129152433 ecr 910488745,nop,wscale 7], length 0 15:14:34.336159 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [.], ack 1, win 114, options [nop,nop,TS val 910488745 ecr 4129152433], length 0
執行命令:
get userId
運行結果:
15:23:40.025373 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 15:27, ack 6, win 114, options [nop,nop,TS val 911034453 ecr 4129686634], length 12 15:23:40.025571 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [P.], seq 6:35, ack 27, win 114, options [nop,nop,TS val 4129698122 ecr 911034453], length 29 15:23:40.025768 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [.], ack 35, win 114, options [nop,nop,TS val 911034453 ecr 4129698122], length 0
執行命令:
set username 0 0 4
運行結果:
15:27:45.985897 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 153:173, ack 160, win 114, options [nop,nop,TS val 911280417 ecr 4129926755], length 20 15:27:46.025059 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [.], ack 173, win 114, options [nop,nop,TS val 4129944122 ecr 911280417], length 0
運行命令:
nick
運行結果:
15:28:47.625886 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 173:179, ack 160, win 114, options [nop,nop,TS val 911342058 ecr 4129944122], length 6 15:28:47.625910 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [.], ack 179, win 114, options [nop,nop,TS val 4130005722 ecr 911342058], length 0 15:28:47.626046 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [P.], seq 160:168, ack 179, win 114, options [nop,nop,TS val 4130005723 ecr 911342058], length 8 15:28:47.626204 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [.], ack 168, win 114, options [nop,nop,TS val 911342058 ecr 4130005723], length 0
執行命令:
get username
運行結果:
15:29:59.978653 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 179:193, ack 168, win 114, options [nop,nop,TS val 911414421 ecr 4130005723], length 14 15:29:59.978743 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [P.], seq 168:199, ack 193, win 114, options [nop,nop,TS val 4130078075 ecr 911414421], length 31 15:29:59.978867 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [.], ack 199, win 114, options [nop,nop,TS val 911414421 ecr 4130078075], length 0
執行命令:
quit
運行結果:
15:30:52.755257 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [P.], seq 193:199, ack 199, win 114, options [nop,nop,TS val 911467215 ecr 4130078075], length 6 15:30:52.755534 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [F.], seq 199, ack 199, win 114, options [nop,nop,TS val 4130130852 ecr 911467215], length 0 15:30:52.755843 IP 10.8.34.13.46103 > 10.8.34.27.memcache: Flags [F.], seq 199, ack 200, win 114, options [nop,nop,TS val 911467215 ecr 4130130852], length 0 15:30:52.755865 IP 10.8.34.27.memcache > 10.8.34.13.46103: Flags [.], ack 200, win 114, options [nop,nop,TS val 4130130852 ecr 911467215], length 0
15:30:52.755865 時間帶有精確到微妙
10.8.34.13.36686 > 10.8.34.27.memcache 表示通信的流向,36686是客戶端,memcache是服務器端
[S] 表示這是一個SYN請求
[.] 表示這是一個ACK確認包,(client)SYN->(server)SYN->(client)ACK 就是3次握手過程
[P] 表示這個是一個數據推送,可以是從服務器端向客戶端推送,也可以從客戶端向服務器端推
[F] 表示這是一個FIN包,是關閉連接操作,client/server都有可能發起
[R] 表示這是一個RST包,與F包作用相同,但RST表示連接關閉時,仍然有數據未被處理。可以理解為是強制切斷連接
win 114是指滑動窗口大小(接收緩存的窗口大小)
length 12指數據包的大小
三次握手部分:
16:01:29.583827 IP 10.8.34.13.45468 > 10.8.34.27.memcache: Flags [S], seq 2309185558, win 14480, options [mss 1460,sackOK,TS val 913304024 ecr 4131967648,nop,wscale 7], length 0
Flags是[S],表明是syn建立連接包(即三次握手的第一次握手)
seq
2309185558序號為2309185558,這個其實就是tcp三次握手的第一次握手10.8.34.13.45468發送syn請求建立連接包
win 14480,表示窗口大小為14480字節
options [mss 1460,sackOK,TS val 913304024 ecr 4131967648,nop,wscale
7]為tcp首部可選字段,
mss
1460表示mss是發送端(client)通告的最大報文長度,發送端將不接收超過這個長度的tcp報文段(這個值和MTU有關)。sackOK表示發送端支持并同意使用SACK選項。wscale
7表示發送端使用的窗口擴大因子為7
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61718.html
摘要:但執行后沒有任何信息輸出,這時候通過什么方法能知道程序錯在哪里這里可以將解決問題能力分為個等級,越到后面的表示能力越強。這個考驗全部通過,表明此程序員已經具備了專業程序員應該有的解決問題能力了。 這個話題老生長談了,在面試中必然考核的能力中,我個人認為解決問題能力是排第一位的,比學習能力優先級更高。解決問題的能力既能看出程序員的思維能力,應變能力,探索能力等,又可以看出他的經驗。如果解...
閱讀 955·2023-04-25 23:54
閱讀 3036·2021-11-08 13:21
閱讀 3759·2021-09-27 13:35
閱讀 3381·2021-07-26 23:41
閱讀 1042·2019-08-30 15:52
閱讀 3431·2019-08-30 11:27
閱讀 2088·2019-08-29 18:37
閱讀 528·2019-08-29 17:24