logo资料库

udp校验和计算.doc

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
《计算机网络基础》课程报告 基于 Wireshark 的 TCP 和 UDP 报文分析 院系: 班级: 学号: 姓名: 教师: 1 2012 年 11 月 4 日
目 录 一 TCP 连接时的三次握手··································3 二 TCP 连接释放时的四次握手······························5 三 UDP 报文分析··········································7 3.1 UDP 报文结构······································7 3.2 UDP 检验和的计算·································7 四 结束语···············································9 2
一、TCP 连接时的三次握手 TCP 协议为终端设备提供了面向连接的、可靠的网络服务。TCP 在交换数据 报文段之前要在发送方和接收方之间建立连接。客户是连接的发起者,服务器是 被动打开和客户进行联系。具体的过程如下所述。 第一次握手:客户发送 SYN=1,seq=0 的 TCP 报文给服务器 Ps:客户的 TCP 向服务器发出连接请求报文段,其首部中的同步位 SYN = 1。 序号 seq = 0,表明报文中未携带数据。 报文如下: 源 端口号:56644(56644) 目的端口号:http(80) [Stream index: 0] Sequence number: 0 Header length: 32 bytes Flags: 0x02 (SYN) (relative sequence number) 000. .... .... = Reserved: Not set ...0 .... .... = Nonce: Not set .... 0... .... = Congestion Window Reduced (CWR): Not set .... .0.. .... = ECN-Echo: Not set .... ..0. .... = Urgent: Not set .... ...0 .... = Acknowledgement: Not set .... .... 0... = Push: Not set .... .... .0.. = Reset: Not set .... .... ..1. = Syn: Set .... .... ...0 = Fin: Not set Window size: 8192 Checksum: 0x1030 [validation disabled] Options: (12 bytes) 第二次握手:服务器发送 SYN=1,ACK=1,seq=0 的 TCP 报文给客户 Ps:服务器的 TCP 收到客户发来的连接请求报文段后,如同意,则发回确认。 服务器在确认报文段中应使 SYN = 1,使 ACK = 1。序号 seq = 0,表明报文中 未携带数据。 报文如下: 源 端口号:http(80) 目的端口号:56644(56644) [Stream index: 0] Sequence number: 0 Acknowledgement number: 1 (relative sequence number) (relative ack number) 3
Header length: 32 bytes Flags: 0x12 (SYN, ACK) 000. .... .... = Reserved: Not set ...0 .... .... = Nonce: Not set .... 0... .... = Congestion Window Reduced (CWR): Not set .... .0.. .... = ECN-Echo: Not set .... ..0. .... = Urgent: Not set .... ...1 .... = Acknowledgement: Set .... .... 0... = Push: Not set .... .... .0.. = Reset: Not set .... .... ..1. = Syn: Set .... .... ...0 = Fin: Not set Window size: 5840 Checksum: 0x54f6 [validation disabled] Options: (12 bytes) 第三次握手:客户发送 ACK=1 的 TCP 报文给服务器 Ps:客户收到报文段后向服务器给出确认,其 ACK = 1。客户的 TCP 通知上 层应用进程,连接已经建立。服务器的 TCP 收到主机客户的确认后,也通知其 上层应用进程,TCP 连接已经建立。 报文如下: 源 端口号:56644(56644) 目的端口号:http(80) [Stream index: 0] Sequence number: 1 Acknowledgement number: 1 Header length: 20 bytes Flags: 0x10 (ACK) (relative sequence number) (relative ack number) 000. .... .... = Reserved: Not set ...0 .... .... = Nonce: Not set .... 0... .... = Congestion Window Reduced (CWR): Not set .... .0.. .... = ECN-Echo: Not set .... ..0. .... = Urgent: Not set .... ...1 .... = Acknowledgement: Set .... .... 0... = Push: Not set .... .... .0.. = Reset: Not set .... .... ..0. = Syn: Not set .... .... ...0 = Fin: Not set Window size: 65928 (scaled) Checksum: 0x1024 [validation disabled] 4
二、TCP 连接释放时的四次握手 数据传输结束后,通信的双方都可释放连接。客户应用进程先向其 TCP 发出连 接释放报文段,并停止再发送数据,主动关闭 TCP 连接。接下来服务器半关闭 连接,最后等待结束后释放连接资源。具体过程如下所述 第一次握手:客户发送 FIN=1,seq=u 的 TCP 报文给服务器 Ps:客户把 TCP 连接释放报文段首部的 FIN = 1,等待服务器的确认。 报文如下: 源 端口号:56644(56644) 目的端口号:http(80) [Stream index: 0] Sequence number: 1 Acknowledgement number: 1 Header length: 20 bytes Flags: 0x11 (FIN, ACK) (relative sequence number) (relative ack number) 000. .... .... = Reserved: Not set ...0 .... .... = Nonce: Not set .... 0... .... = Congestion Window Reduced (CWR): Not set .... .0.. .... = ECN-Echo: Not set .... ..0. .... = Urgent: Not set .... ...1 .... = Acknowledgement: Set .... .... 0... = Push: Not set .... .... .0.. = Reset: Not set .... .... ..0. = Syn: Not set .... .... ...1 = Fin: Set Window size: 65928 (scaled) Checksum: 0x1024 [validation disabled] 第二次握手:服务器发送 ACK=1,Acknowledgement number=u+1 的 TCP 报文给 客户 Ps:服务器发出确认,确认号 Acknowledgement number = u +1。TCP 服务器 进程通知高层应用进程。从客户到服务器这个方向的连接就释放了,TCP 连接 处于半关闭状态。服务器若发送数据,客户仍要接收。 第三次握手:服务器发送 FIN=1,ACK=1,seq=w,Acknowledgement number=u+1 的 TCP 报文给客户 Ps:若服务器已经没有要向客户发送的数据,其应用进程就通知 TCP 释放连 接。 事实上,第二次握手和第三次握手常常整合体现在同一服务器向客户发送的 TCP 报文中。 报文如下: 5
源 端口号:http(80) 目的端口号:56644(56644) [Stream index: 0] Sequence number: 1 Acknowledgement number: 2 Header length: 20 bytes Flags: 0x11 (FIN, ACK) (relative sequence number) (relative ack number) 000. .... .... = Reserved: Not set ...0 .... .... = Nonce: Not set .... 0... .... = Congestion Window Reduced (CWR): Not set .... .0.. .... = ECN-Echo: Not set .... ..0. .... = Urgent: Not set .... ...1 .... = Acknowledgement: Set .... .... 0... = Push: Not set .... .... .0.. = Reset: Not set .... .... ..0. = Syn: Not set .... .... ...1 = Fin: Set Window size: 6144 (scaled) Checksum: 0xac93 [validation disabled] [SEQ/ACK analysis] 第四次握手:客户发送 ACK=1,seq=u+1,Acknowledgement number=w+1 的 TCP 报文给服务器 Ps:客户收到连接释放报文段后,必须发出确认。在确认报文段中 ACK = 1, 确认号 Acknowledgement number =w +1。自己的序号 seq = u + 1。 随之服务器 TCP 关闭,而客户进入 timed wait,等时间到后连接关闭。 报文如下: 源 端口号:56644(56644) 目的端口号:http(80) [Stream index: 0] Sequence number: 2 Acknowledgement number: 2 Header length: 20 bytes Flags: 0x10 (ACK) (relative sequence number) (relative ack number) 000. .... .... = Reserved: Not set ...0 .... .... = Nonce: Not set .... 0... .... = Congestion Window Reduced (CWR): Not set .... .0.. .... = ECN-Echo: Not set .... ..0. .... = Urgent: Not set .... ...1 .... = Acknowledgement: Set .... .... 0... = Push: Not set .... .... .0.. = Reset: Not set .... .... ..0. = Syn: Not set 6
.... .... ...0 = Fin: Not set Window size: 65928 (scaled) Checksum: 0x1024 [validation disabled] [SEQ/ACK analysis] 三、UDP 报文分析 3.1 UDP 报文结构 UDP 报头定长为 8B。按顺序为: 源端口号:关于端口号有一些规定,服务器端通常用熟知端口号,通常在 0-1023 之间。而客户端用随机的端口号,其范围在 49152 到 65535 之间。 目的端口号 长度:包括报头和数据的长度之和。在[8,65535]区间。 检验和:提供差错检测功能 3.2 UDP 检验和的计算 3.2.1 UDP 的检验和所需信息 1 UDP 伪首部:源 IP + 目的 IP + Byte 0 + Byte 17+ UDP 长度,其目的是 让 UDP 两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的。 2 UDP 首部:该长度不是报文的总长度,而只是 UDP(包括 UDP 头和数 据部分)的总长度 3 UDP 的数据部分 3.2.2 检验和的计算步骤: 1 把伪首部添加到 UDP 上; 2 计算初始时将检验和字段添零的; 3 把所有位划分为 16 位(2 字节)的字 4 把所有 16 位的字相加,如果遇到进位,则将高于 16 字节的进位部分的 值加到最低位上。 5 将所有字相加得到的结果应该为一个 16 位的数,将该数按位取反则可 以得到检验和。 3.2.3 举例子分析 该例子计算的是一个 UDP 的检验和 由上图可知源 IP、目的 IP、UDP 长度和数据。 计算步骤: 7
1 首先将检验和部分添零; 2 然后将 TCP 伪首部部分,TCP 首部部分,数据部分都划分成 16 位的一 个个 16 进制数; 3 将这些数逐位相加,记得溢出的部分加到最低位上,这是循环加法,最 终得到 0x4bff 4 最后,将得到的结果取反,则可以得到检验和 0xb400 8
分享到:
收藏