UDP数据解析
UDP Client发送
udp client(192.168.137.1:10001) udp server(192.168.137.128:10001)
client发送数据0x01;
使用wireshark得到IP数据包内容:
00 0c 29 55 dc c7 00 50 56 c0 00 08 08 00 45 00
00 1d e0 40 00 00 40 11 06 bd c0 a8 89 01 c0 a8
89 80 27 11 27 11 00 09 1c e7 01 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00
以太网协议(Ethernet II):
00 0c 29 55 dc c7 :目标MAC地址(硬件唯一)
00 50 56 c0 00 08 :来源MAC地址(硬件唯一)
08 00 :协议类型(IP协议数据)
IP数据协议:
45 :01000101—>(4表示IPV4; 5表示IP数据报文头一共5x4=20Byte)
:20byte数据为:45 00 00 1d e0 40 00 00 40 11 06 bd c0 a8
: 89 01 c0 a8 89 80
- :
00 1d :表示整个IP数据报文(包括头)一共29Byte
E0 40 :identification标识符;唯一的标识主机发送的每一份数据,当IP
:报文分片时,每个分片的identification是一样的;
00 00 :flags标记位与片位移,标记位共3位,第一位保留置0
:第二位don not fragments:1不分片,0分片
:第三位more fragments:1更多分片,0最后一片
:后面13位:片移位:本分片在原始数据报文中相对首位的偏移位(需要乘以8)
40 :Time to live(TTL),设置数据报文可经过的路由器数量上限
11 :17对应UDP协议号(TCP对应的是6)
06 bd :header checksum值;相加取反(45-80)
C0 a8 89 01 :来源地址192.168.137.1
C0 a8 89 80 :目标地址192.168.137.128
UDP(用户数据报协议)协议:
27 11 :来源地址端口10001
27 11 :目标地址端口10001
00 09 :UDP数据包的长度是9Byte
1c e7 :udp数据包的checksum值;伪首部+UDP首部+数据;
:伪首部+UDP协议号+UDP数据长度+UDP首部+UDP数据
: c0a8+8901+c0a8+8980+0011+0009+2711+2711+0009+0100
01 :传输的数据内容0x01
00 00 …… :padding,数据不足64Byte时,填充无用数据如0x00,因为
:标准以太网帧长度下限为64Byete,上限为1518Byte
UDP Server 回包
udp server(192.168.137.128:10001) udp client(192.168.137.1:10001)
server回复数据0x01;
使用wireshark得到IP数据包内容:
00 50 56 c0 00 08 00 0c 29 55 dc c7 08 00 45 00
00 1d e4 a2 40 00 40 11 c2 5a c0 a8 89 80 c0 a8
89 01 27 11 27 11 00 09 93 ed 01
以太网协议(Ethernet II):
00 50 56 c0 00 08 :目标MAC地址(硬件唯一)
00 0c 29 55 dc c7 :来源MAC地址(硬件唯一)
08 00 :协议类型(IP协议数据)
IP数据协议:
45 :01000101—>(4表示IPV4; 5表示IP数据报文头一共5x4=20Byte)
00 :前3字节“优先权”选择
:第4字节“时延”
:第5字节“吞吐量”
:第6字节“可靠性”
:第7字节“开销”
:第8字节“保留位”,恒设置0
00 1d :表示整个IP数据报文(包括头)一共29Byte
E4 a2 :identification标识符;唯一的标识主机发送的每一份数据,当IP
:报文分片时,每个分片的identification是一样的;
40 00 :flags标记位与片位移,标记位共3位,第一位保留置0
:第二位don not fragments:1不分片,0分片
:第三位more fragments:1更多分片,0最后一片
:后面13位:片移位:本分片在原始数据报文中相对首位的偏移位(需要乘以8)
40 :Time to live(TTL),设置数据报文可经过的路由器数量上限
11 :17对应UDP协议号(TCP对应的是6)
C2 5a :header checksum值;相加取反(45-01)
C0 a8 89 80 :来源地址192.168.137.128
C0 a8 89 01 :目标地址192.168.137.1
UDP(用户数据报协议)协议:
27 11 :来源地址端口10001
27 11 :目标地址端口10001
00 09 :UDP数据包的长度是9Byte
93 ed :udp数据包的checksum值;伪首部+UDP首部+数据;
:伪首部+UDP协议号+UDP数据长度+UDP首部+UDP数据
: ????
01 :传输的数据内容0x01
UDP传输机制
使用UDP协议进行传输时,要具备以下信息:
- 数据报文的目标IP地址;
- 数据报文的目标地址端口;
- UDP数据长度
- UDP传输的数据内容
- UDP数据包的checksum
TCP数据解析
三次握手(建立连接)
第一次握手
tcp client(192.168.137.1:10001) tcp server(192.168.137.128:10001)
使用wireshark得到IP数据包内容:
00 0c 29 55 dc c7 00 50 56 c0 00 08 08 00 45 00
00 34 c8 04 40 00 40 06 de ec c0 a8 89 01 c0 a8
89 80 27 11 27 11 e1 d2 a4 ef 00 00 00 00 80 02
Fa f0 0b 68 00 00 02 04 05 b4 01 03 03 08 01 01
04 02
TCP(传输控制协议)协议:
Xx xx 27 11 27 11 e1 d2 a4 ef 00 00 00 00 80 02
Fa f0 0b 68 00 00 02 04 05 b4 01 03 03 08 01 01
04 02
27 11 :源端口号
27 11 :目标端口号
e1 d2 a4 ef :Sequence Number序列号;该字段用来标识TCP源端设备向目的端设备发送的字节流,
:它表示在这个报文段中的第几个数据字节。
00 00 00 00 :Acknowledge Number确认号;该字段只在ACK标志被设置时有效;
:确认号是上次已经成功收到的数据字节序号+1
:也即期望收到的下一个段的第一个字节
80 02 :第0至3bit代表数据长度,length=8x4=32Byte
:第4至6bit Reserved
:第7bit :Nonce ???
:第8bit :Congestion window Reduced(CWR) ???
:第9bit :ECN-Echo
:第10bit :Urgent:紧急标志位,说明紧急指针有效
:第11bit :Acknowledgment,确认标志位
:第12bit :Push,推标志位,置位时表示接收方应立即请求将报文交给应用层
:第13bit :Reset,复位标志位
:第14bit :Syn,同步标志,该标志仅在3次握手建立TCP连接时有效
:第15bit :Fin,接收标志位
Fa f0 :window size;TCP流量控制有连接的每个窗口大小来提供。???
0b 68 :TCP CheckSum
00 00 :Urgent Pointer紧急指针???
02 04 05 b4 01 03 03 08 01 01 04 02 :Options,12Bytes
:包含最长报文大小、窗口扩大选项、时间戳选项选择性确认???
第二次握手
tcp server(192.168.137.128:10001) tcp client(192.168.137.1:10001)
使用wireshark得到IP数据包内容:
00 50 56 c0 00 08 00 0c 29 55 dc c7 08 00 45 00
00 34 00 00 40 00 40 06 a6 f1 c0 a8 89 80 c0 a8
89 01 27 11 27 11 08 f8 2c 26 e1 d2 a4 f0 80 12
Fa f0 93 f9 00 00 02 04 05 b4 01 01 04 02 01 03
03 07
TCP(传输控制协议)协议:
Xx xx 27 11 27 11 08 f8 2c 26 e1 d2 a4 f0 80 12
Fa f0 93 f9 00 00 02 04 05 b4 01 01 04 02 01 03
03 07
第三次握手
tcp client(192.168.137.1:10001) tcp server(192.168.137.128:10001)
使用wireshark得到IP数据包内容:
00 0c 29 55 dc c7 00 50 56 c0 00 08 08 00 45 00
00 28 c8 05 40 00 40 06 de f7 c0 a8 89 01 c0 a8
89 80 27 11 27 11 e1 d2 a4 f0 08 f8 2c 27 50 10
10 0a 01 f3 00 00 00 00 00 00 00 00
TCP(传输控制协议)协议:
Xx xx 27 11 27 11 e1 d2 a4 f0 08 f8 2c 27 50 10
10 0a 01 f3 00 00 00 00 00 00 00 00
三次握手机制
- tcp client向tcp serve发送消息(第一次握手)
SEQ=0、SYN=1
- tcp server向tcp client发送消息(第二次握手)
SEQ=0、SYN=1、ACK=1
- tcp client向tcp server发送消息(第三次握手)
SEQ=1、ACK=1
注:如收到SEQ=A;则回复ACK=A+1;
数据传输
第一帧:
- tcp client向tcp serve发送数据0x01
PSH=1、SEQ=1、ACK=1、Len=1
- tcp server向tcp client反馈
SEQ=1、ACK=2、Len=0
第二帧:
- tcp server向tcp client发送数据0x01
PSH=1、SEQ=1、ACK=2、Len=1
- tcp client向tcp server反馈
SEQ=2、ACK=2、Len=0
四次挥手(断开连接)
- tcp client向tcp serve发送消息(第一次挥手)
SEQ=0、FIN=1
- tcp server向tcp client发送消息(第二次挥手)
SEQ=0、ACK=1
- tcp server向tcp client发送消息(第三次挥手)
SEQ=1、FIN=1、ACK=1
- tcp client向tcp server发送消息(第四次挥手)
SEQ=1、ACK=2