日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一场由nginx优化引起的tcp/ip及tcpdump研究

發布時間:2025/4/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一场由nginx优化引起的tcp/ip及tcpdump研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.





一場由nginx優化引起的tcp/iptcpdump研究

在這里不得不再吐槽下國內整個IT粗糙浮躁,度娘下來的中文文檔幾盡抄襲~google下來的文檔英文文檔質量遠高于國內中文文檔.

用ie或沒有安裝插件的瀏覽器訪問,不然可能會有其它訪問請求數據干擾分析

IP數據包結構


TCP數據包結構


?

// tcpdump需root權限

# tcpdump -x -i eth1 ip host58.246.240.122 or 58.246.3.218

tcpdump: verbose outputsuppressed, use -v or -vv for full protocol decode

listening on eth1, link-typeEN10MB (Ethernet), capture size 65535 bytes

//tcpdump軟件參數輸出

??用-v 或 –vv可以提到更詳細的輸出

??監聽在eth1端口,ethernet網絡,最大可抓取65535bytes

19:49:24.580582 IP58.246.240.122.53784 > 112.124.45.184.http: Flags[S], seq 592474217, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK],length 0

//第一次握手

//SERVER:TCP LISTEN狀態?? CLIENT:TCP LISTEN狀態

//19:49:24(秒).580582(微秒) IP src.port > dst.port:Flags[s],seq序列號,win屬性,tcp 選項[~~~]長度為0,即沒有數據傳輸

//19:49:24.580582,源ip為58.246.240.122的53784端口向112.124.45.184的(80端口)http服務發起SYN請求,序列號為592474217,并告訴http服務器我將發送的最大請求字節數為8192,沒有數據輸出

//這是一個空包,只包括IP頭和TCP頭

?

??????? 0x0000:?4500 0034 35a9 4000 3406 4776 3af6 f07a

4500

4? - IP版本號IPV4

5 ?- IP包頭長度,532字節

00? - TOS (000 0000 0)前三個BIT優先權,現已忽略;4 bitTOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用, ?均為0表示一般服務;最后1BIT未用

0034

總長度,48字節

35a9

包唯一標識

4000

標志字段,和片偏移,用于分片

3406

34 - TTL(128) ?Time To Live

06 – tcp協議

4776

MAC

3af6 f07a

Src ip,c的同學可以用inet_ntoa函數轉轉看

?????

??????? 0x0010:?707c 2db8 d218 0050 2350 70690000 0000

707c 2db8

Det ip

2db8

源端口 轉換為10進制為 53784

0050

目的端口 轉換為10進制為 80

2350 7069

包序列號,轉換為10進制為 592474217

0000 0000

確認序號,0,未設置ACK,確認序號無效

?

??????? 0x0020:?8002 2000 1f4f 0000 0204 05b4 0103 0302

8002

TCP包頭長度,標志位。(1000 000000 000010)前4bitTCP長度832BIT,中間6bit保留,后6bit為標志位(URG, ACKPSH RST SYN FIN),可以看出設置了倒數第二位,SYN

2000

窗口大小 ,10進制 8192

1f4f

校驗和,覆蓋了整個的 T C P報文段: T C P首部和T C P數據

0000

緊急指針,只有當URG標志置1時緊急指針才有效

0204 05b4 0103? 0302

選項字段,8個字節

?

??????? 0x0030:?0101 0402

0101 0402

用戶數據

?

?

19:49:24.580613 IP112.124.45.184.http > 58.246.240.122.53784: Flags [S.], seq 3820056301, ack592474218, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0

//第二次握手

//19:49:24.580613112.124.45.184 webserver確認收到序列號為592474217并對序列號+1=592474218,并發出序列號為3820056301的請求

??????? 0x0000:?4500 0034 0000 4000 4006 711f 707c 2db8

??????? 0x0010:?3af6 f07a 0050 d218 e3b1 6eed 2350 706a

??????? 0x0020:?8012 3908 b391 0000 0204 05b4 0101 0402

??????? 0x0030:?0103 0307

19:49:24.639829 IP58.246.240.122.53784 > 112.124.45.184.http: Flags [.], ack1, win 16425, length 0

//第三次握手,到此經典的三次握手結束

//19:49:24.63982958.246.240.12253784端口向112.124.45.184回應一個ack,length=0,沒有任何數據傳輸

??????? 0x0000:?4500 0028 35ab 4000 3406 4780 3af6 f07a

??????? 0x0010:?707c 2db8 d218 0050 2350 706a e3b1 6eee

??????? 0x0020:?5010 4029 ed42 0000

19:49:24.640197 IP58.246.240.122.53784 > 112.124.45.184.http: Flags [P.], seq 1:541, ack 1,win 16425, length 540

//19:49:24.640197client回應一條ackPUSH一條長為540字節的請求,seq1->541,win窗口大小為16425

??????? 0x0000:?4500 0244 35ac 4000 3406 4563 3af6 f07a

??????? 0x0010:?707c 2db8 d218 0050 2350 706a e3b1 6eee

??????? 0x0020:?5018 4029 81e2 0000 4745 5420 2f69 6e64

??????? 0x0030:?6578 2e70 6870 2048 5454 502f 312e 310d

??????? 0x0040:?0a41 6363 6570 743a 2061 7070 6c69 6361

??????? 0x0050:?7469 6f6e 2f78 2d6d 732d 6170 706c 6963

??????? 0x0060:?6174 696f 6e2c 2069 6d61 6765 2f6a 7065

??????? 0x0070:?672c 2061 7070 6c69 6361 7469 6f6e 2f78

??????? 0x0080:?616d 6c2b 786d 6c2c 2069 6d61 6765 2f67

??????? 0x0090:?6966 2c20 696d 6167 652f 706a 7065 672c

??????? 0x00a0:?2061 7070 6c69 6361 7469 6f6e 2f78 2d6d

??????? 0x00b0:?732d 7862 6170 2c20 6170 706c 6963 6174

??????? 0x00c0:?696f 6e2f 766e 642e 6d73 2d65 7863 656c

??????? 0x00d0:?2c20 6170 706c 6963 6174 696f 6e2f 766e

??????? 0x00e0:?642e 6d73 2d70 6f77 6572 706f 696e 742c

??????? 0x00f0:?2061 7070 6c69 6361 7469 6f6e 2f6d 7377

??????? 0x0100:?6f72 642c 202a 2f2a 0d0a 4163 6365 7074

??????? 0x0110:?2d4c 616e 6775 6167 653a 207a 682d 434e

??????? 0x0120:?0d0a 5573 6572 2d41 6765 6e74 3a20 4d6f

??????? 0x0130:?7a69 6c6c 612f 342e 3020 2863 6f6d 7061

??????? 0x0140:?7469 626c 653b 204d 5349 4520 382e 303b

??????? 0x0150:?2057 696e 646f 7773 204e 5420 362e 313b

??????? 0x0160:?2057 4f57 3634 3b20 5472 6964 656e 742f

??????? 0x0170:?342e 303b 2053 4c43 4332 3b20 2e4e 4554

??????? 0x0180:?2043 4c52 2032 2e30 2e35 3037 3237 3b20

??????? 0x0190:?2e4e 4554 2043 4c52 2033 2e35 2e33 3037

??????? 0x01a0:?3239 3b20 2e4e 4554 2043 4c52 2033 2e30

??????? 0x01b0:?2e33 3037 3239 3b20 4d65 6469 6120 4365

??????? 0x01c0:?6e74 6572 2050 4320 362e 303b 202e 4e45

??????? 0x01d0:?5434 2e30 433b 202e 4e45 5434 2e30 453b

??????? 0x01e0:?2049 6e66 6f50 6174 682e 3329 0d0a 4163

??????? 0x01f0:?6365 7074 2d45 6e63 6f64 696e 673a 2067

??????? 0x0200:?7a69 702c 2064 6566 6c61 7465 0d0a 486f

??????? 0x0210:?7374 3a20 6f70 7469 6d69 7a65 2e70 6961

??????? 0x0220:?6f74 6169 2e63 6f6d 0d0a 436f 6e6e 6563

??????? 0x0230:?7469 6f6e 3a20 4b65 6570 2d41 6c69 7665

??????? 0x0240:?0d0a 0d0a

19:49:24.640212 IP112.124.45.184.http > 58.246.240.122.53784: Flags [.], ack 541, win 123,length 0

//server回應一條seq號為541的確認信息,win 窗口大小為123,無數據傳輸

??????? 0x0000:?4500 0028 fc98 4000 4006 7492 707c 2db8

??????? 0x0010:?3af6 f07a 0050 d218 e3b1 6eee 2350 7286

??????? 0x0020:?5010 007b 2ad5 0000

19:49:24.640863 IP112.124.45.184.http > 58.246.240.122.53784: Flags [P.], seq 1:241, ack 541,win 123, length 240

//server應答client,并向client PUSH一條長度為240字節的請求

?? ?????0x0000:?4500 0118 fc99 4000 4006 73a1 707c 2db8

??????? 0x0010:?3af6 f07a 0050 d218 e3b1 6eee 2350 7286

??????? 0x0020:?5018 007b caaf 0000 4854 5450 2f31 2e31

??????? 0x0030:?2032 3030 204f 4b0d 0a53 6572 7665 723a

??????? 0x0040:?206e 6769 6e78 0d0a 4461 7465 3a20 5361

??????? 0x0050:?742c 2031 3720 4a61 6e20 3230 3135 2031

??????? 0x0060:?313a 3439 3a32 3420 474d 540d 0a43 6f6e

??????? 0x0070:?7465 6e74 2d54 7970 653a 2074 6578 742f

??????? 0x0080:?6874 6d6c 0d0a 5472 616e 7366 6572 2d45

? ??????0x0090:?6e63 6f64 696e 673a 2063 6875 6e6b 6564

??????? 0x00a0:?0d0a 436f 6e6e 6563 7469 6f6e 3a20 6b65

??????? 0x00b0:?6570 2d61 6c69 7665 0d0a 582d 506f 7765

??????? 0x00c0:?7265 642d 4279 3a20 5048 502f 352e 342e

??????? 0x00d0:?3336 0d0a 436f 6e74 656e 742d 456e 636f

??????? 0x00e0:?6469 6e67 3a20 677a 6970 0d0a 0d0a 3166

??????? 0x00f0:?0d0a 1f8b 0800 0000 0000 0003 f34b 2cc9

??????? 0x0100:?2c4b 5508 f008 5004 002e 0f61 e60b 0000

??????? 0x0110:?000d 0a30 0d0a 0d0a

19:49:24.899320 IP 112.124.45.184.http> 58.246.240.122.53784: Flags [P.], seq 1:241, ack 541, win 123, length 240

//這里不確認什么原因重復PUSH了一次數據

??????? 0x0000:?4500 0118 fc9a 4000 4006 73a0 707c 2db8

??????? 0x0010:?3af6 f07a 0050 d218 e3b1 6eee 2350 7286

??????? 0x0020:?5018 007b caaf 0000 4854 5450 2f31 2e31

??????? 0x0030:?2032 3030 204f 4b0d 0a53 6572 7665 723a

??????? 0x0040:?206e 6769 6e78 0d0a 4461 7465 3a20 5361

??????? 0x0050:?742c 2031 3720 4a61 6e20 3230 3135 2031

??????? 0x0060:?313a 3439 3a32 3420 474d 540d 0a43 6f6e

??????? 0x0070:?7465 6e74 2d54 7970 653a 2074 6578 742f

??????? 0x0080:?6874 6d6c 0d0a 5472 616e 7366 6572 2d45

??????? 0x0090:?6e63 6f64 696e 673a 2063 6875 6e6b 6564

??????? 0x00a0:?0d0a 436f 6e6e 6563 7469 6f6e 3a20 6b65

??????? 0x00b0:?6570 2d61 6c69 7665 0d0a 582d 506f 7765

??????? 0x00c0:?7265 642d 4279 3a20 5048 502f 352e 342e

??????? 0x00d0:?3336 0d0a 436f 6e74 656e 742d 456e 636f

??????? 0x00e0:?6469 6e67 3a20 677a 6970 0d0a 0d0a 3166

??????? 0x00f0:?0d0a 1f8b 0800 0000 0000 0003 f34b 2cc9

??????? 0x0100:?2c4b 5508 f008 5004 002e 0f61 e60b 0000

??????? 0x0110:?000d 0a30 0d0a 0d0a

19:49:24.902210 IP58.246.240.122.53784 > 112.124.45.184.http: Flags [.], ack 241, win 16365,length 0

//client回應server一個確認請求表示數據收到

??????? 0x0000:?4500 0028 35b3 4000 3406 4778 3af6 f07a

??????? 0x0010:?707c 2db8 d218 0050 2350 7286 e3b1 6fde

??????? 0x0020:?5010 3fed ea72 0000

19:49:24.956904 IP58.246.240.122.53784 > 112.124.45.184.http: Flags [.], ack 241, win 16365,options [nop,nop,sack 1 {1:241}], length 0

//因為server不明原因的多回復了一條應答,client這里也再次回復server ack請求

??????? 0x0000:?4500 0034 35b4 4000 3406 476b 3af6 f07a

??????? 0x0010:?707c 2db8 d218 0050 2350 7286 e3b1 6fde

??????? 0x0020:?8010 3fed 0e2b 0000 0101 050a e3b1 6eee

??????? 0x0030:?e3b1 6fde

19:49:26.682065 IP112.124.45.184.http > 58.246.240.122.53594: Flags [F.], seq 2650770207, ack934373505, win 123, length 0

//第一次揮手

//server回復應答信息并發起seq2650770207FIN信息

//serverTCP的狀態改變為TIME_WAIT狀態

?

??????? 0x0000:?4500 0028 608c 4000 4006 109f 707c 2db8

??????? 0x0010:?3af6 f07a 0050 d15a 9dff 8b1f 37b1 6881

??????? 0x0020:?5011 007b 4ab7 0000

19:49:26.736671 IP58.246.240.122.53594 > 112.124.45.184.http: Flags [.], ack 1, win 16365,length 0

//第二次揮手

//client回復應答信息

??????? 0x0000:?4500 0028 35bc 4000 3406 476f 3af6 f07a

??????? 0x0010:?707c 2db8 d15a 0050 37b1 6881 9dff 8b20

??????? 0x0020:?5010 3fed 0b45 0000

19:49:54.529939 IP112.124.45.184.http > 58.246.240.122.53716: Flags [F.], seq 1644452284, ack3778482049, win 123, length 0

//server第二次發起一條FIN斷開請求的需求

??????? 0x0000:?4500 0028 0faf 4000 4006 617c 707c 2db8

??????? 0x0010:?3af6 f07a 0050 d1d4 6204 59bc e137 0f81

??????? 0x0020:?5011 007b 6715 0000

19:49:54.586707 IP58.246.240.122.53716 > 112.124.45.184.http: Flags [.], ack 1, win 16365,length 0

//client應答表示收到FIN的斷開信息

??????? 0x0000:?4500 0028 3667 4000 3406 46c4 3af6 f07a

??????? 0x0010:?707c 2db8 d1d4 0050 e137 0f81 6204 59bd

??????? 0x0020:?5010 3fed 27a3 0000

19:50:09.641734 IP112.124.45.184.http > 58.246.240.122.53784: Flags [F.], seq 241, ack 541,win 123, length 0

//server第三次發起一條FIN斷開請求的需求

??????? 0x0000:?4500 0028 fc9b 4000 4006 748f 707c 2db8

??????? 0x0010:?3af6 f07a 0050 d218 e3b1 6fde 2350 7286

??????? 0x0020:?5011 007b 29e4 0000

19:50:09.699854 IP58.246.240.122.53784 > 112.124.45.184.http: Flags [.], ack 242, win 16365,length 0

//client第二次應答表示收到FIN的斷開信息

??????? 0x0000:?4500 0028 36f6 4000 3406 4635 3af6 f07a

??????? 0x0010:?707c 2db8 d218 0050 2350 7286 e3b1 6fdf

??????? 0x0020:?5010 3fed ea71 0000

19:50:09.702809 IP58.246.240.122.53784 > 112.124.45.184.http: Flags [R.], seq 541, ack 242,win 0, length 0

//client表示領會到server的意思,發送RESET次應答表示收到RESET并立即主動關閉請求

?

??????? 0x0000:?4500 0028 36f7 4000 3406 4634 3af6 f07a

??????? 0x0010:?707c 2db8 d218 0050 2350 7286 e3b1 6fdf

??????? 0x0020:?5014 0000 2a5b 0000

?

//本次的請求4次揮手不大正常,在本次請求中會發現client沒有發送FIN請求在收到多次服務器請求后就直接關閉連接發送RESET

?

一次正常的揮手數據請求應該是這樣的,



轉載于:https://blog.51cto.com/fengzhilinux/1605191

總結

以上是生活随笔為你收集整理的一场由nginx优化引起的tcp/ip及tcpdump研究的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。