一.TCP报文分析
TCP协议是面向连接的协议。TCP连接的建立有“三次握手”,而关闭一条TCP连接需要“四次握手”。
1.1 TCP连接的建立
以访问说明一次完整的TCP建立的三次握手过程。
1.2.1第一次握手
要建立TCP连接,首先需要客户机向服务器发起建立连接的请求,及第一次握手的报文。在此报文中,SYN字段置为1。由于之前连接不存在,所以没有对之前接受的确认,故ACK字段被置为0。同时由于连接还没有建立,不能发送数据,从而序列号也应该为0。政治考研
采用wireshark的过滤功能,用tcp.flags.syn==1 显示TCP中SYN字段为1的数据包,由SYN字段的定义知道这是建立TCP连接的报文。从中找到ack=0的包即表示第一次TCP握手(此处以14号数据包为TCP建立的第一次握手为例)。
由上图可以看出源IP地址为:10.104.159.208,目的IP地址为112.65.210.107。
TCP报文分析:
Transmission Control Protocal, Src Port : 49162 (49162), Dst Prot: http (80), Seq: 0, Len:0 //状态行
Souce port: 49162 (49162) //源端口号
Destination prot: http (80) //目的端口号(由于端口号是80,知道这是一个http请求的连接)
[Stream index: 0] //根据源和目的IP及端口号生成的一个索引号
Sequence number: 0 (relative quence number) //序列号为0,(没有发送数据)
Header length: 32 bytes //TCP报文首部长为32比特
Flags: 0x002 (SYN)
000. . . . . . . . . = Rerved: Not t
.mir
. . 0 . . . . . . . . = Nonce: Not t
. . . . 0 . . . . . . . = Congestion window Reduced (CwR)
. . . . . 0 . . . . . . = ECN-Echo: Not t
. . . . . . 0 . . . . . = Urgent: Not t //不是紧急报文
广州粤菜培训. . . . . . . 0 . . . . = Acknowledgment: Not t //没有包含确认的报文
. . . . . . . . 0 . . . = Push: Not t //PSH标志字段没有设置
. . . . . . . . . 0 . . = Ret: Not t //RST标志字段没有设置
. . . . . . . . . . 1 . = Syn: Set //建立连接
. . . . . . . . . . . 0 = Fin: Not t //不是删除连接
Window size value: 8192 //窗口大小8192比特
[Calculated window size : 8192]
Checksum: 0x9e98df [validation disabled] //检验和(没有传送数据)
[Good Checksum: Fal]
[Bad Checksum: Fal]
Options: (12 bytes), Maximum gment size, No-Operation (NOP), window scale, No-Operation (NOP), SACK permittied //选项字段
通过报文分析,知道第一次握手成功。
1.2.2 第二次握手
第二次握手的报文由服务器发送,需要对第一次握手的报文进行恢复确认,因而ACK字段应该置为1。同时由于这仍然是TCP连接建立的过程,所以SYN字段置为1;没有数据传输,故而序列号为0。
四六级准考证打印入口2020接下来寻找第一次握手的报文后面ACK=1且源端口号、目的端口号与第一次握手分析的报文目的端口号、源端口号相同的报文,即表示此次TCP连接建立的第二次握手。
TCP报文分析:环节
Transmission Control Protocol, Src Port: http (80), Dst Port: 49162(49162), Seq: 0, Ack: 1, Len: 0 //状态行Source port: http (80) //源端
vela口号英文版简历
Destination port: 49162 (49162) //目的端口号(与第一次握手的报文对比发现源与目的的端口号互换了)
[Stream index: 0] //根据源和目的IP及端口号生成的一个索引号
Sequence number: 0 (relative quence number) //序列号为0,(没有发送数据)Acknowledgment number: 1 (relative ack number) //确认号
Header length: 32 bytes //TCP报文首部长为32比特
Flags: 0x012 (SYN, ACK)
000. .... .... = Rerved: Not t
...0 .... .... = Nonce: Not t
.... 0... .... = Congestion Window Reduced (CWR): Not t
itty bitty
.... .0.. .... = ECN-Echo: Not t
.... ..0. .... = Urgent: Not t //不是紧急报文
.... ...1 .... = Acknowledgment: Set //包含确认的报文
.... .... 0... = Push: Not t //PSH标志字段没有设置
.... .... .0.. = Ret: Not t //RST标志字段没有设置
.... .... ..1. = Syn: Set //TCP连接建立
.... .... ...0 = Fin: Not t //不是删除连接
Window size value: 14600 //窗口大小14600比特
[Calculated window size: 14600]
Checksum: 0x1517 [validation disabled] //检验和(没有传送数据)
[Good Checksum: Fal]
maneater[Bad Checksum: Fal]
Options: (12 bytes), Maximum gment size, No-Operation (NOP), No-Operation (NOP), SACK permitted, No-Operation (NOP), Window scale //选项字段 [SEQ/ACK analysis]
[This is an ACK to the gment in frame:14]
[The RTT to ACK the gment was: 0.038491000 conds]
通过报文分析,知道第二次握手成功。
1.2.3 第三次握手
客户机接收到第二次握手的报文后,对服务器发送第三次握手的报文。在该报文中,需要对第二次握手的报文进行确认,即ACK字段置为1。此时连接已经建立,SYN字段被置为0,同时可以发送数据,故序列号不再为0。
采用wireshark的过滤功能,用tcp.flags.syn八年级上册英语听力==0 显示TCP中SYN字段为0的包。找到第二次握手报文后ACK=1且源端口号、目的端口号与第一次握手分析的报文源端口号、目的端口
号相同的报文,即为此次连接的第三次握手。
TCP报文分析:
Transmission Control Protocol, Src Port: 49162(49162), Dst Port: http (80), Seq: 1, Ack: 1, Len: 0 //状态行
Source port: 49162 (49162) //源端口号
Destination port: http (80) //目的端口号