利用wireshark抓取TCP的整個過程分析。
原文地址:https://www.cnblogs.com/NickQ/p/9226579.html
最近,已經很久都沒有更新博客了。看看時間,想想自己做了哪些事情,突然發現自己真的是太貪心,到頭來卻一個都沒搞好。手頭的嵌入式都還沒學出名堂,竟然還想著學FPGA,物聯網,機器學習。然而,遇到新奇的事物,就會控制不住的去想,去找資料,實際上只是逃避遇到的問題,不想去解決而已。。最後的結果就是手頭的活堆起來了,然後花大把整塊的時間解決。真的是討厭現在的自己。
以後還是慢慢記錄吧,不管做了什麽,都慢慢嘗試積累。。其他的東西,像FPGA,機器學習什麽的,讓他隨風去吧,用到啥學啥。其他的當看客,了解了解就好。
這是計算機網絡的一次作業,學習抓取TCP/IP建立連接和斷開連接的過程,以下是正文:
步驟:
首先嘗試抓百度,騰訊等網絡連接,發現會有許多問題需要考慮,斷開連接操作不好操作,且數據冗雜不利於學習。
所以借助手機和電腦完成此次過程,操作如下:
1、在手機端,安裝TCP測試工具,開啟TCP監聽,端口8088;
2、打開wireshark監聽WIFI網卡。
3、打開電腦端TCP測試客戶端,連接TCP服務器。
此處,我的手機IP為192.168.255.5,端口8088;電腦的IP地址為192.168.255.6。
4、通過電腦客戶端,發送兩次信息到手機。
5、通過手機客戶端,發送兩次信息到電腦。
6、斷開連接。
7、通過ip.addr eq 192.168.255.5 and ip.addr eq 192.168.255.6 and tcp過濾掉其他報文。
至於wireshark過濾的語法,可以參考其他的一些博文:https://blog.csdn.net/wojiaopanpan/article/details/69944970
協議及過程分析:
TCP三次握手:如下圖中藍色方框所示。
TCP握手協議在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;如下圖中報文No.7
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;如下圖中報文No.8
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。完成三次握手,客戶端與服務器開始傳送數據。如下圖中報文No.9
TCP四次揮手:如上圖中紅色方框所示。
註:此處,由於先斷開的服務器,所以手機服務器是客戶端A。
第一次揮手:客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送。
如圖中報文No.255
第二次揮手:服務器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。如圖中報文No.256
第三次揮手:服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A。如圖中報文No.257
第四次揮手:客戶端A發回ACK報文確認,並將確認序號設置為收到序號加1。如圖中報文No.258
其他:
下圖是其中一幀數據解析,可以看到數據是由192.168.255.6:62643(電腦客戶端)發送給192.168.255.5:8088(手機服務端)。
消息內容為:201521111083
利用wireshark抓取TCP的整個過程分析。