一直研究lighttpd源碼,順便看下網絡編程,不說太多,開始吧編程
第一步 設置wireshark過濾規則瀏覽器
tcp.port eq 81 ,而後開始捕捉服務器
第二步 http://183.61.16.168:81/ 打開瀏覽器訪問這個地址網絡
第三步,分析數據tcp
2636 17.482576000 183.27.235.172 183.61.16.168 TCP 74 4197 > hosts2-ns [SYN] Seq=0 Win=8192 Len=0 MSS=1440 WS=4 SACK_PERM=1spa
2638 17.498859000 183.61.16.168 183.27.235.172 TCP 74 hosts2-ns > 4197 [SYN, ACK] Seq=0 Ack=1 Win=14600 Len=0 MSS=1460 SACK_PERM=1 WS=512get
2639 17.498994000 183.27.235.172 183.61.16.168 TCP 62 4197 > hosts2-ns [ACK] Seq=1 Ack=1 Win=66240 Len=0源碼
以上就是tcp三次握手,網絡編程
2696 18.028389000 183.27.235.172 183.61.16.168 TCP 463 4197 > hosts2-ns [PSH, ACK] Seq=1 Ack=1 Win=66240 Len=401io
這條就是發送http請求包了
長度爲401
2698 18.051721000 183.61.16.168 183.27.235.172 TCP 62 hosts2-ns > 4197 [ACK] Seq=1 Ack=402 Win=15872 Len=0
這個就是服務器響應給瀏覽器的數據,服務器說收到了請求,而後把ack加上401等於402返回給客戶端,若是不返回,瀏覽器會重發給服務器
2699 18.052968000 183.61.16.168 183.27.235.172 TCP 289 hosts2-ns > 4197 [PSH, ACK] Seq=1 Ack=402 Win=15872 Len=227
到這條,服務器返回首頁給瀏覽器,長度爲227 這裏能夠發現只有有數據,Len確定是大於0的
2721 18.234494000 183.27.235.172 183.61.16.168 TCP 403 4197 > hosts2-ns [PSH, ACK] Seq=402 Ack=228 Win=66012 Len=341
瀏覽器偷偷的發起第二個請求,get /favicon.ico 這個請求,
2722 18.259705000 183.61.16.168 183.27.235.172 TCP 541 hosts2-ns > 4197 [PSH, ACK] Seq=228 Ack=743 Win=16896 Len=479
服務器說沒有這個文件,而後返回給客戶端
2728 18.514549000 183.61.16.168 183.27.235.172 TCP 541 [TCP Retransmission] hosts2-ns > 4197 [PSH, ACK] Seq=228 Ack=743 Win=16896 Len=479
又重發了一次
2729 18.514663000 183.27.235.172 183.61.16.168 TCP 74 4197 > hosts2-ns [ACK] Seq=743 Ack=707 Win=65532 Len=0 SLE=228 SRE=707
瀏覽器說收到了,給服務器一個回答
3180 23.263527000 183.61.16.168 183.27.235.172 TCP 62 hosts2-ns > 4197 [FIN, ACK] Seq=707 Ack=743 Win=16896 Len=0
服務器主動關閉鏈接,發送一個fin
3181 23.263637000 183.27.235.172 183.61.16.168 TCP 62 4197 > hosts2-ns [ACK] Seq=743 Ack=708 Win=65532 Len=0
瀏覽器說收到了
3587 27.508143000 183.27.235.172 183.61.16.168 TCP 62 4197 > hosts2-ns [FIN, ACK] Seq=743 Ack=708 Win=65532 Len=0
而後瀏覽器發送一個fin
3590 27.523692000 183.61.16.168 183.27.235.172 TCP 62 hosts2-ns > 4197 [ACK] Seq=708 Ack=744 Win=16896 Len=0
而後服務端說收到了
其實有個問題就是 seq和ack有點混亂,一時加這個,一時加那個