利用Wireshark进行TCP协议分析
TCP报文首部,以下图所表示:
1.源端口号:数据提议者端口号,16bit
2.目端口号:数据接收者端口号,16bit
3.序号:32bit序列号,由发送方使用
4.确定序号:32bit确定号,是接收数据方期望收到发送方下一个报文段序号,所以确定序号应该是上次已成功收到数据字节序号加1。
5.首部长度:首部中32bit字数目,可表示15*32bit=60字节首部。通常首部长度为20字节。
6.保留:6bit,均为0
7.紧急URG:当URG=1时,表示报文段中有紧急数据,应立刻传送。
8.确定比特ACK:ACK=1时代表这是一个确定TCP包,取值0则不是确定包。
9.推送比特PSH:当发送端PSH=1时,接收端立刻交付给应用进程。
10.复位比特(RST):当RST=1时,表明TCP连接中出现严重差错,必需释放连接,再重新建立连接。
11.同时比特SYN:在建立连接是用来同时序号。SYN=1,ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。
12.终止比特FIN:FIN=1时,表明此报文段发送端数据已经发送完成,并要求释放传输连接。
13.窗口:用来控制对方发送数据量,通知发放已确定发送窗口上限。
14.检验和:该字段检验范围包含首部和数据这两部分。由发端计算和存放,并由收端进行验证。
15.紧急指针:紧急指针在URG=1时才有效,它指出本报文段中紧急数据字节数。
选项:长度可变,最长可达40字节
TCP三次握手和四次挥手:
第一次握手数据包
用户端发送一个TCP,标志位为SYN,序列号为0,代表用户端请求建立连接。以下图
第二次握手数据包
服务器发回确定包,标志位为SYN,ACK.将确定序号(AcknowledgementNumber)设置为用户ISN加1以.即0+1=1,以下图
第三次握手数据包
用户端再次发送确定包(ACK)SYN标志位为0,ACK标志位为1.而且把服务器发来ACK序号字段+1,放在确定字段中发送给对方.而且在数据段放写ISN+1,以下图:
四次挥手Four-wayHandshake
四次挥手用来关闭已建立TCP连接
1.(Client)–ACK/FIN–(Server)
2.(Client)–ACK–(Server)
3.(Client)–ACK/FIN–(Server)
4.(Client)–ACK–(Server)
第一次挥手:用户端给服务器发送TCP包,用来关闭用户端到服务器数据传送。将标志位FIN和ACK置为1,序号为X=1,确定序号为Z=1
服务器收到FIN后,发回一个ACK(标志位ACK=1),确定序号为收到序号加1,即X=X+1=2。序号为收到确定序号=Z。
服务器关闭与用户端连接,发送一个FIN。标志位FIN和ACK置为1,序号为Y=1,确定序号为X=2。
用户端收到服务器发送FIN以后,发回ACK确定(标志位ACK=1),确定序号为收到序号加1,即Y+1=2。序号为收到确定序号X=2。