赞
踩
【计算机网络实验 ——wireshark抓包简要分析TCP、UDP协议】
(1)分析 TCPheader:
Source Port:16bit源端口,数据发起者的端口号;
Destination Port:16bit目的端口,数据接收方的端口号;
Sequence Number:32bit的序列号,由发送方使用;
Acknowledgment Number:32bit的确认号,接收数据方返回给发送方的通知,会在确认号的基础上加1;
Data Length:4bit头部长度,TCP头部长度一般为20字节,若TCP头部的Options选项启用,则会增加;
下面一部分为TCP的功能bit:
Reserved、Reserved、Nonce、CWR、ECN-Echo:共6bit的保留功能,留待以后开发新技术时使用;
URG:1bit紧急指针位,取值1代表这个数据是紧急数据需加速传递,取值0代表这是普通数据;
ACK:1bit确认位,取值1代表这是一个确认的TCP包,取值0则不是确认包;
PSH:1bit紧急位,取值1代表要求发送方马上发送该分段,而接收方尽快的将报文交给应用层,不做队列处理。取值0阿迪表这是普通数据;
RST:1bit重置位,当tcp收到一个不属于该主机的任何一个连接的数据,则向对方发一个复位包,此时该位取值为1,若取值为0代表这个数据包是传给自己的;
SYN:1bit请求位,取值1代表这是一个TCP三次握手的建立连接的包,取值为0就代表是其他包;
FIN:1bit完成位,取值1代表这是一个TCP断开连接的包,取值为0就代表是其他包;
Window Size:16bit窗口大小,表示准备收到的每个TCP数据的大小;
Checksum:16bit的TCP头部校验,计算TCP头部,从而证明数据的有效性;
Urgent Pointer:16bit紧急数据点,当功能bit中的URG取值为1时有效;(参考:TCP中URG和PSH以及Urgent Point的作用及区别)
Options:TCP的头部最小20个字节。如果这里有设置其他参数,会导致头部增大;
Padding:当TCP头部小于20字节时会出现,不定长的空白填充字段,填充内容都是0,但是填充长度一定会是32的倍数;
Data:被TCP封装进去的数据,包含应用层协议头部和用户发出的数据。
wireshark抓包:
(2)分析TCP的建立过程(三次握手):
wireshark抓包:
第1次握手:
(Client) –> [SYN] –> (Server)
假如Client和Server通讯. 当Client要和Server通信时,Client首先向Server发一个SYN (Synchronize) 标记的包,告诉Server请求建立连接。
第2次握手:
(Client) <– [SYN/ACK] <–(Server)
接着,Server收到来自Client发来的SYN包后,会发一个对SYN包的确认包(SYN/ACK)给Client,表示对第一个SYN包的确认,并继续握手操作。
第3次握手:
(Client) –> [ACK] –> (Server)
Client收到来自Server的SYN/ACK 包,Client会再向Server发一个确认包(ACK),通知Server连接已建立。至此,三次握手完成,一个TCP连接完成。
三次握手建立连接示图:
(3)分析TCP的连接释放过程:
wireshark抓包:
四次握手用来关闭已建立的TCP连接
1. (Client) –> ACK/FIN –> (Server)
2. (Client) <– ACK <– (Server)
3. (Client) <– ACK/FIN <– (Server)
4. (Client) –> ACK –> (Server)
四次关闭建立连接示图:
*由于TCP连接是双向连接, 因此关闭连接需要在两个方向上做。ACK/FIN 包(ACK 和FIN 标记设为1)通常被认为是FIN(终结)包。然而, 由于连接还没有关闭, FIN包总是打上ACK标记。
(4)跟踪TCP数据传输过程中的seq、ack字段
在Client端发送数据:
wireshark抓包:
·传输分析:
第一次Client端向服务端发送了一个len=3字节数据(aaa一共3个字节),且seq=1,即第一个数据在wireshark的相对表示中起始位置为1,因超时重传该数据包;
Server端收到后,经历一次丢包和重传,返回ack=4(表示数据1、2、3均成功收到);seq=1,表示自己即将传输数据的相对起始位置为1,接着Server端返回3字节内容,ack=4,(期待收到数据从4开始),同时seq=1,表示数据从序号1开始。
(5)分析TCP重传、checksum等:
TCP重传:
1.TCP Out_of_Order的原因分析:
一般来说是网络拥塞,导致顺序包抵达时间不同,延时太长,或者包丢失,需要重新组合数据单元。
2.TCP Retransmission原因分析:
很明显是上面的超时引发的数据重传。
3.TCP dup ack XXX#X原因分析:
就是重复应答#前的表示报文到哪个序号丢失,#后面的是表示第几次丢失。
4.checksum:
Checksum为16bit的TCP头部校验,计算TCP头部,从而证明数据的有效性;
由上图可知,重传报文checksum为 0xb9fd。
(6)分析UDP header:
source port: 源端口号,占16位,2个字节 ;
dest port: 目的端口号,占16位,2个字节 ;
length: 此字段标记了整个数据报(UDP的首部+UDP数据)的最大长度 ;
checksum: 检验和,此字段用处是用来检查收到地数据的对错的,如果校验和出错,就会直接丢弃 。
(7)TCP server端关闭,client发送报文:
Tcp Client发出syn报文,但由于Server端未开启,目的端口发送RST报文通知源端口连接关闭;源端口会重复几次尝试连接直至源端口程序报错,停止连接。
(8)UDP server端关闭,client发送报文:
UDPServer仍能发送报文,但由于UDPServer端已关闭,故无法得到回应;此时icmp协议会返回消息差错通知,并告知源端口that目标端口无法到达。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。