您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > udp与tcp连接建立、数据传输、连接断开的报文分析
1目录一、UDP报文分析……………………………………31.1UDP报文格式…………………………………31.2UDP数据传输…………………………………3二、TCP报文分析……………………………………52.1TCP报文格式…………………………………52.2TCP连接的建立…………………………………62.2.1第一次握手………………………………62.2.2第二次握手………………………………72.2.3第三次握手………………………………92.3TCP连接的数据传输…………………………112.4TCP连接的删除………………………………142.4.1第一次再见………………………………142.4.2第二次、第三次再见……………………152.4.3第四次再见………………………………172.5对比总结………………………………………192三、分析体会…………………………………………19一、UDP报文分析TCP协议是面向连接的协议。TCP连接的建立有“三次握手”,而关闭一条TCP连接需要“四次握手”。1.1UDP报文格式UDP是面向无连接的协议,在发送报文段之前,发送方与接收方的运输层之间没有进行握手。1.2UDP数据传输现以某对发送方与接收方的一个来回的数据传送为例,简单地对UDP的通信过程进行分析。3UDP报文分析:UserDatagramProtocol,SrcPort:65496(65496),DstPort:59369(59369)//状态行Sourceport:65496(65496)//源端口号Destinationport:59369(59369)//目的端口号Length:26//报文长度26比特Checksum:0xb130[validationdisabled]//检验和(wireshark软件为了节约时间和资源,对UDP与TCP的检验和没有进行精确计算,只提供了近似值,故为[validationdisabled])[GoodChecksum:False][BadChecksum:False]Data(18bytes)//应用数据长度18比特Data:032f23da343f82f409acd6ee0000275dbe01[Length:18]可见整个UDP报文长度为26比特,其中UDP首部占用8比特,应用数据报文长度为18比特。检验和在报文中也有明确体现。4UDP报文分析:UserDatagramProtocol,SrcPort:59369(59369),DstPort:65496(65496)//状态行Sourceport:59369(59369)//源端口号Destinationport:65496(65496)//目的端口号Length:27//报文长度27比特Checksum:0xf385[validationdisabled]//检验和[GoodChecksum:False][BadChecksum:False]Data(19bytes)//应用数据(19比特)Data:03225d9d4eeb91a97378c5b30000285dbe0101[Length:19]与上一个报文类似,整个UDP报文长度为27比特,其中UDP首部占用8比特,应用数据报文长度为19比特。检验和在报文中也有明确体现。上一次传输的接收方与此次传输的发送方相同,上一次传输的发送方与此次传输的接收方相同。表示了一次完整的相互的UDP数据通信。二、TCP报文分析TCP协议是面向连接的协议。TCP连接的建立有“三次握手”,而关闭一条TCP连接需要“四次握手”。52.1TCP报文格式2.2TCP连接的建立以访问建立的三次握手过程。2.2.1第一次握手要建立TCP连接,首先需要客户机向服务器发起建立连接的请求,及第一次握手的报文。在此报文中,SYN字段置为1。由于之前连接不存在,所以没有对之前接受的确认,故ACK字段被置为0。同时由于连接还没有建立,不能发送数据,从而序列号也应该为0。采用wireshark的过滤功能,用tcp.flags.syn==1显示TCP中SYN字段为1的数据包,由SYN字段的定义知道这是建立TCP连接的报文。从中找到ack=0的包即表示第一次TCP握手(此处以49号数据包为TCP建立的第一次握手为例)。6由上图可以看出源IP地址为:192.168.1.100,目的IP地址为222.89.166.13。TCP报文分析:TransmissionControlProtocal,SrcPort:54132(54132),DstProt:http(80),Seq:0,Len:0Souceport:54132(54132)//源端口号Destinationprot:http(80)//目的端口号(由于端口号是80,知道这是一个http请求的连接)[Streamindex:3]//根据源和目的IP及端口号生成的一个索引号Sequencenumber:0(relativesequencenumber)//序列号为0,(没有发送数据)Headerlength:32bytes//TCP报文首部长为32比特Flags:0x002(SYN)000.........=Reserved:Notset...0........=Nonce:Notset....0.......=CongestionwindowReduced(CwR).....0......=ECN-Echo:Notset......0.....=Urgent:Notset//不是紧急报文.......0....=Acknowledgment:Notset//没有包含确认的报文7........0...=Push:Notset//PSH标志字段没有设置.........0..=Reset:Notset//RST标志字段没有设置..........1.=Syn:Set//建立连接...........0=Fin:Notset//不是删除连接Windowsizevalue:8192//窗口大小8192比特[Calculatedwindowsize:8192]Checksum:0x78df[validationdisabled]//检验和(没有传送数据)(wireshark软件为了节约时间和资源,对UDP与TCP的检验和没有进行精确计算,只提供了近似值,故为[validationdisabled])[GoodChecksum:False][BadChecksum:False]Options:(12bytes),Maximumsegmentsize,No-Operation(NOP),windowscale,No-Operation(NOP),SACKpermittied//选项字段通过报文分析,知道第一次握手成功。2.2.2第二次握手第二次握手的报文由服务器发送,需要对第一次握手的报文进行恢复确认,因而ACK字段应该置为1。同时由于这仍然是TCP连接建立的过程,所以SYN字段置为1;没有数据传输,故而序列号为0。接下来寻找第一次握手的报文后面ACK=1且源端口号、目的端口号与第一次握手分析的报文目的端口号、源端口号相同的报文,即表示此次TCP连接建立的第二次握手。8TCP报文分析:TransmissionControlProtocol,SrcPort:http(80),DstPort:54132(54132),Seq:0,Ack:1,Len:0//状态行Sourceport:http(80)//源端口号Destinationport:54132(54132)//目的端口号(与第一次握手的报文对比发现源与目的的端口号互换了)[Streamindex:3]//根据源和目的IP及端口号生成的一个索引号Sequencenumber:0(relativesequencenumber)//序列号为0,(没有发送数据)Acknowledgmentnumber:1(relativeacknumber)//确认号Headerlength:32bytes//TCP报文首部长为32比特Flags:0x012(SYN,ACK)000.........=Reserved:Notset...0........=Nonce:Notset....0.......=CongestionWindowReduced(CWR):Notset.....0......=ECN-Echo:Notset......0.....=Urgent:Notset//不是紧急报文9.......1....=Acknowledgment:Set//包含确认的报文........0...=Push:Notset//PSH标志字段没有设置.........0..=Reset:Notset//RST标志字段没有设置..........1.=Syn:Set//TCP连接建立...........0=Fin:Notset//不是删除连接Windowsizevalue:5840//窗口大小5840比特[Calculatedwindowsize:5840]Checksum:0xa7b6[validationdisabled]//检验和(没有传送数据)[GoodChecksum:False][BadChecksum:False]Options:(12bytes),Maximumsegmentsize,No-Operation(NOP),No-Operation(NOP),SACKpermitted,No-Operation(NOP),Windowscale//选项字段[SEQ/ACKanalysis][ThisisanACKtothesegmentinframe:49][TheRTTtoACKthesegmentwas:0.043622000seconds]通过报文分析,知道第二次握手成功。2.2.3第三次握手客户机接收到第二次握手的报文后,对服务器发送第三次握手的报文。在该报文中,需要对第二次握手的报文进行确认,即ACK字段置为1。此时连接已经建立,SYN字段被置为0,同时可以发送数据,故序列号不再为0。采用wireshark的过滤功能,用tcp.flags.syn==0显示TCP中SYN字段为0的包。找到第二次握手报文后ACK=1且源端口号、目的端口号与第一次握手分析的报文源端口号、目的端口号相同的报文,即为此次连接的第三次握手。10TCP报文分析:TransmissionControlProtocol,SrcPort:54132(54132),DstPort:http(80),Seq:1,Ack:1,Len:0//状态行Sourceport:54132(54132)//源端口号Destinationport:http(80)//目的端口号[Streamindex:3]//根据源和目的IP及端口号生成的一个索引号Sequencenumber:1(relativesequencenumber)//序列号为1,(开始发送数据)Acknowledgmentnumber:1(relativeacknumber)//确认号为1Headerlength:20bytes//报文首部长度为20比特Flags:0x010(ACK)000.........=Reserved:Notset...0........=Nonce:Notset....0.......=CongestionWindowReduced(CWR):Notset.....0......=ECN-Echo:Notset......0.....=Urgent:Notset//不是紧急报文.......1....=Acknowledgment:Set//包含确认的报文11........0...=Push:Notset//PSH标志字段没有设置.........0..=Reset:Notset//RST标志字段没有设置..........0.=Syn:Notset
本文标题:udp与tcp连接建立、数据传输、连接断开的报文分析
链接地址:https://www.777doc.com/doc-3398119 .html