我有以下 HTTP-get 捕获。我正在尝试学习使用协议和数据包数学手动剖析它。并且正在努力解决以下问题。这不是一个评分项目,只是建议我学习的东西。
- TCP 报头长度是多少
- TCP 报头的起始字节是什么
- TCP 报头的结束字节是什么
发生了多少次 IPv4 对话
0x0000: 4500 0158 0505 4000 4006 18b1 c0a8 4b76 0x0010: 174e f87d c0c6 0050 5fa4 6e6c 8b48 e7eb 0x0020: 8018 001c 1d35 0000 0101 080a 5079 6b75 0x0030: 26d4 b91a 4745 5420 2f6c 6962 7261 7279 0x0040: 2f38 2e34 2f64 6170 6d73 6e2e 6a73 2048 0x0050: 5454 502f 312e 310d 0a48 6f73 743a 2061 0x0060: 6473 312e 6d73 6164 732e 6e65 740d 0a55 0x0070: 7365 722d 4167 656e 743a 204d 6f7a 696c 0x0080: 6c61 2f35 2e30 2028 5831 313b 204c 696e 0x0090: 7578 2078 3836 5f36 343b 2072 763a 3338 0x00a0: 2e30 2920 4765 636b 6f2f 3230 3130 3031 0x00b0: 3031 2046 6972 6566 6f78 2f33 382e 3020 0x00c0: 4963 6577 6561 7365 6c2f 3338 2e32 2e31 0x00d0: 0d0a 4163 6365 7074 3a20 2a2f 2a0d 0a41 0x00e0: 6363 6570 742d 4c61 6e67 7561 6765 3a20 0x00f0: 656e 2d55 532c 656e 3b71 3d30 2e35 0d0a 0x0100: 4163 6365 7074 2d45 6e63 6f64 696e 673a 0x0110: 2067 7a69 702c 2064 6566 6c61 7465 0d0a 0x0120: 5265 6665 7265 723a 2068 7474 703a 2f2f 0x0130: 7777 772e 6d73 6e2e 636f 6d2f 0d0a 436f 0x0140: 6e6e 6563 7469 6f6e 3a20 6b65 6570 2d61 0x0150: 6c69 7665 0d0a 0d0a
答案1
这是理解各种协议如何构造的一个很好的练习。为了充分利用它,您需要了解 IP 和 TCP 标头格式。
首先,阅读 RFC 791 的第 3.1 节 -https://www.rfc-editor.org/rfc/rfc791
其次,阅读 RFC 793 的第 3.1 节 -https://www.rfc-editor.org/rfc/rfc793
第三,利用前两个步骤中学到的知识尝试回答问题。
最后,将您学到的知识与下面的输出进行比较,该输出是各种标题的细分。
4500: IP Version(4 = IPv4), Header Length (5 = 20 bytes) and DSCP/ECN
0158: IP packet length (158 = 344 bytes)
0505: IP Identification
4000: IP Flags and Fragment Offset (40 = Do not fragment)
4006: TTL (40 = 64) and encapsulated protocol version (6 = TCP)
18b1: IP header checksum
C0a8 4b76: Src IP
174e f87d: Dst IP
C0c6: Src Port (49350)
0050: Dst Port (80)
5fa4 6e6c: Seq Number
8b48 e7eb: Ack Number
8018: Header length (8 = 32) TCP Flags (18 = PSH-ACK)
001c: TCP Win Size (28) <--don't know scale factor
1d35: TCP checksum
0000: Urgent Pointer
0101 080a 5079 6b75 26d4 b91a: TCP Options
0101: NOP, NOP
08: Option Kind (08 = Timestamp)
0a: Length of 10 bytes
50796b75:Timestamp
26d4b91a:Timestamp echo reply
4745: HTTP GET
0d0a: Last CRLF indicates the end of the HTTP request