UDP是一个简化的,没有多余的协议。
我们可以随便找一个UDP包进行分析:
其中有源端口号,目的端口号,长度,校验和(Checksum),这四个占用了32位,也就是说UDP的头部有32位
还有一个Pay Load 指的是该UDP携带的负载数据。
然后再分析一下 TCP 的具体内容:
如上是三次握手时的三次数据包。
仔细观察一下,sequence number和acknowledgment number的数字从 0,0—> 0,1 -------> 1,1 。
第一次:
Transmission Control Protocol, Src Port: 57361, Dst Port: 443, Seq: 0, Len: 0
Source Port: 57361
Destination Port: 443
Sequence Number: 0 (relative sequence number)
Sequence Number (raw): 2840399127
Acknowledgment Number: 0
Acknowledgment number (raw): 0
1000 .... = Header Length: 32 bytes (8)
Flags: 0x002 (SYN)
Window: 64240
Checksum: 0x64da [unverified]
Urgent Pointer: 0
Options: (12 bytes), Maximum segment size, No-Operation (NOP), Window scale, No-Operation (NOP), No-Operation (NOP), SACK permitted
第二次:
Transmission Control Protocol, Src Port: 443, Dst Port: 57360, Seq: 0, Ack: 1, Len: 0
Source Port: 443
Destination Port: 57360
Sequence Number: 0
Sequence Number (raw): 3164801645
Acknowledgment Number: 1
Acknowledgment number (raw): 371797491
1000 .... = Header Length: 32 bytes (8)
Flags: 0x012 (SYN, ACK)
Window: 64240
Checksum: 0x22c8
Urgent Pointer: 0
Options: (12 bytes), Maximum segment size, No-Operation (NOP), No-Operation (NOP), SACK permitted, No-Operation (NOP), Window scale
第三次:
Transmission Control Protocol, Src Port: 57360, Dst Port: 443, Seq: 1, Ack: 1, Len: 0
Source Port: 57360
Destination Port: 443
Sequence Number: 1
Sequence Number (raw): 371797491
Acknowledgment Number: 1
Acknowledgment number (raw): 3164801646
0101 .... = Header Length: 20 bytes (5)
Flags: 0x010 (ACK)
Window: 260
Checksum: 0x64ce
Urgent Pointer: 0
TCP携带的头部信息有 源端口号(Source Port,16位),目的端口号(Destination Port,16位) ,序列号( Sequence Number,32位),确认号(Acknowledgment Number,是指希望下次接收到的序列号值,32位),头部长度(Header Length,4位,5字节为单位),标志位(Flags,6位),窗口大小(Window,16位),校验和(Checksum,16位),紧急指针(Urgent Pointer,16位),选项(Options,最大40字节)
注意这里的序列号和确认号都是相对的,因为实际的序号和确认号都是随机产生的,后面带 (raw)的才是实际传输的序号值