北京理工大学通信网课程实验报告学院:信息与电子学院专业:通信与信息系统班级:2011级硕士通信一班姓名:杨行学号:2120110951实验:网络协议数据获取与TCP/IP协议分析一、实验目的利用网页浏览的例子来分析网络协议的层次结构,分析IP层、传输层以及应用层的协议数据单元(PDU)。特别地,我们将检查IP地址与端口号如何在一起协调工作,完成端到端的应用。了解应用层的腾讯QQ协议。2、要分析的协议网络层IP协议传输层UDP、TCP协议应用层QQ协议三、实验原理1.即时通信(IM)的网络架构即时通信的网络架构一般有两种模式,一种是用户∕服务器模式,另一种是用户∕用户模式。用户∕服务器模式,即发信用户和收信用户必须通过服务器来交流。MSN、QQ、AIM、YahooMessenger等主流即时通信软件使用的是用户∕服务器的模式,文本消息通过服务器中转发送。如图3-1所示,以一台注册域名的服务器为总调度台。每个即时通信客户端通过己注册的用户ID和密码登陆服务器,密码信息一般都通过加密后传送。通过服务器验证通过后,服务器返回通过验证的信息给客户端,同时附加一些信息,负责中转连接的服务器IP、端口号、客户端的好友信息等。客户端利用服务器返回的验证信息和获得的IP地址及端口号与中转服务器建立连接。连接建立成功后就通过中转服务器与上线的好友互发消息文本消息传输一般是建立在TCP协议或UDP协议基础之上,服务器通过提供固定的服务端口被动地与客户端进行通讯,起到消息中转的作用。1图3-1即时通信网络架构的用户/服务器模式另一种是用户∕用户模式,即服务器给每对用户建立一个TCP通道,用户间的交流在这个TCP之上进行而无需通过服务器。如图3-2所示。2图3-2即时通信网络架构的用户∕用户模式对腾讯QQ来说,登陆过程是通过TCP协议或UDP协议与服务器建立连接,文字消息通过与登陆相同的协议进行转发。QQ两用户之间语音通信和视频通信则是采用P2P的用户∕用户模式。2.传输层UDP、TCP协议对于协议数据单元(PDU)的分析主要关注PDU的首部,UDP和TCP数据的首部分别如图3-3、图3-4所示。图3-3UDP数据首部3图3-4TCP数据首部3.网络层IP协议IP数据首部以及首部与数据的相对位置如图3-5、图3-6所示。4图3-5IP数据首部5图3-6数据首部相对位置三、实验环境以及设备1、操作系统:Windows2、网络接入方式:以有线连接方式通过路由器连入校园网3、本机的MAC地址:00-0A-E4-CA-A9-1F4、本机的IP地址:192.168.1.1005、子网掩码:255.255.255.06、默认网关:192.168.1.17、DHCP服务器:192.168.1.18、DNS服务器:10.0.0.104、实验内容为了便于分析,本实验只选取4类QQ动作的数据包进行分析:登录数据包,心跳信息数据包,收/发文字消息数据包,注销登录数据包进行分析。1.登录数据包本实验采用2010版的QQ客户端,登陆服务器的协议类型可以由用户选择,UDP类型或者是TCP类型。(1)首先采用UDP协议登录,登录设置如图4-1所示。登录服务器的IP地址默认选为219.133.49.171,默认端口是8000;图4-1QQ客户端登录协议设置为UDP6抓包方法:启动Wireshark;启动腾讯QQ客户端,设置登录协议为UDP,但不登录;启动Wireshark开始抓包;登录QQ;QQ登录成功后停止抓包。抓包结果如图4-2所示,本地向登录服务器219.133.49.171连续发送3个UDP数据包,之后变成了本地与119.147.45.84,可以看出,QQ的登录服务器与消息中转服务器不是一个服务器。而且本地向登录服务器219.133.49.171连续发送3个UDP数据包数据内容相同,所以只详细分析第一个数据包。图4-2UDP登录抓包结果接下来逐层对数据包内容进行分析:A)数据链路层74-EA-3A-36-4E-90:目的MAC地址为小型路由器的MAC地址00-0A-E4-CA-A9-1F:源MAC地址为本机的MAC地址00-45:网络层协议为IP协议B)网络层45:7版本IPv4,首部长度20字节00:区分服务00-73:总长度115字节2a-6e:标识00-00:标志和片偏移40:生存时间6411:传输层协议UDP(17)C)传输层0f-a0:源端口40001f40:目的端口800000-5f:长度95字节cf-ad:检验和D)应用层QQ协议首先说明,一次抓包不足以分析QQ协议,一下的分析是由多次抓包结合查阅文献得到。02:QQ报文的开头1c-51:QQ客户端的版本号,实验所用版本为QQ201000-91:用户请求登陆的命令的序号03-14:发送数据的序号20-cd-20-0c:用户QQ号码,实验中为550313996之后的内容为加密的数据内容最后一个字节03:QQ报文的结尾(2)使用TCP类型登陆,登陆设置如图4-3所示,登录服务器的IP地址为219.133.60.173,默认端口是443。抓包方法与UDP协议登陆相同。8图4-3QQ客户端登录协议设置为TCP图4-4TCP登录抓包结果抓包结果如图4-4所示。本地向登陆服务器219.133.60.173连续发送3个TCP数据包,内容相同,之后也变成本地与中转服务器119.147.45.84用UDP协议进行通信。对第一个TCP数据包的各层进行详细分析。A)数据链路层:(同上UDP类型登陆)B)网络层:IP协9议(同上UDP类型登录)C)传输层:TCP协议d6-bf:源端口5497501-bb:目的端口4435e-13-25-12:序号00-00-00-00:确认号a0-02:数据偏移,标志20-00:窗口大小8192字节da-6d:检验和00-00:紧急指针其余部分为可选字段和填充字节由对第一个TCP数据包的分析可知,数据包中并没有含有应用层的内容,原因可能是因为与登录服务通信失败,也可能是QQ协议中应用层的登陆数据就是在UDP数据包中发送。结合抓包结果,再分析本机与转发服务器119.147.45.84通信的第一个数据包,只分析其应用层的数据。02:QQ报文的开头1c-51:QQ客户端的版本号,实验所用版本为QQ201000-91:用户请求登陆的命令序号6c-c5:发送数据的序号20-cd-20-0c:用户QQ号码,实验中为550313996之后的内容为加密的数据内容最后一个字节03:QQ报文的结尾可见,协议内容与直接用UDP类型登陆相同,我们可以认为,0x0091就代表QQ的登陆命令。2.心跳消息数据包在即时通信软件客户端与服务器通信过程中,使用UDP协议传送数据并不10是建立固定连接,只要QQ与客户端连接,客户端就要每隔1分钟左右发送一个此类包,以告知服务器自己处于连接状态,服务器也要回复一个同种类的包进行确认。抓包方法:保持QQ客户端在线,不进行任何操作;打开wireshark开始抓包;抓包一段时间后,观察到本机与服务器进行了几次交互后,停止抓包。抓包结果显示本机与服务器的这几次交互的数据包内容基本相同,对其应用层数据进行分析。02:QQ报文的开头1c-51:QQ客户端的版本号,实验所用版本为QQ201000-58:表示用户在线的命令(心跳消息)序号47-66:发送数据的序号20-cd-20-0c:用户QQ号码,实验中为550313996之后的内容为加密的数据内容最后一个字节03:QQ报文的结尾3.收发文字消息数据包发送文字消息数据包指的是QQ客户端向服务器发送文字消息的数据包。接收文字消息数据包指的是QQ客户端接收到来自服务器文字消息的数据包。抓包方法:QQ在线状态,不做任何操作;打开wireshark开始抓包;向某一个好友发送任意文字消息(或者收到任一好友发来的文字消息);停止抓包。需要重复多次以选取其中有共同特征的数据包。抓包结果,QQ客户端向服务器发送文字消息的数据包的格式如下:02:QQ报文的开头1c-51:QQ客户端的版本号,实验所用版本为QQ201000-58:客户端向服务器发送消息的命令序号38-6d:发送数据的序号1120-cd-20-0c:用户QQ号码,实验中为550313996之后的内容为加密的数据内容最后一个字节03:QQ报文的结尾同时可以发现,QQ客户端向服务器每发送一个UDP数据包,服务器马上就回复一个数据包,以确认收到消息,回复的数据包格式如下:02:QQ报文的开头1c-51:QQ客户端的版本号,实验所用版本为QQ201000-58:客户端向服务器发送消息的命令序号38-6d:发送数据的序号,与客户端向服务器发送的UDP数据包中命令序号相同20-cd-20-0c:用户QQ号码,实验中为550313996之后的内容为加密的数据内容最后一个字节03:QQ报文的结尾QQ客户端收到服务器文字消息的数据包格式与发送数据包格式基本相同,差别只在于收到消息的命令序号不是0x00cd,而是0x00ce,同时客户端也要向服务器反馈一个数据包,以确认收到消息。4.注销登录数据包当QQ客户端离线或者退出客户端程序时,需要先向服务器发送此类数据包告知。抓包方法:保持QQ客户端在线;打开wireshark开始抓包;退出QQ客户端;停止抓包。抓包结果如图4-5所示,本地先向服务器119.147.45.84发送3个内容相同的UDP数据包,服务器再反馈3个相同的数据包,客户端再发送4个相同的数据包进行确认。12图4-5QQ注销登录抓包结果客户端先发送的3个数据包较大,主要为数据部分,只对其首部进行分析:02:QQ报文的开头1c-51:QQ客户端的版本号,实验所用版本为QQ201000-b9:客户端注销登录的命令序号5c-ff:发送数据的序号20-cd-20-0c:用户QQ号码,实验中为550313996服务器反馈的3个数据包内容如下:02:QQ报文的开头1c-51:QQ客户端的版本号,实验所用版本为QQ201000-b9:客户端注销登录的命令序号5c-ff:发送数据的序号,与客户端向服务器发送的UDP数据包中命令序号相同20-cd-20-0c:用户QQ号码,实验中为550313996之后的内容为加密的数据内容最后一个字节03:QQ报文的结尾客户端最后发送4个相同的进行确认的数据包内容如下:02:QQ报文的开头1c-51:QQ客户端的版本号,实验所用版本为QQ201000-62:客户端注销登录并确认的命令序号7d-90:发送数据的序号20-cd-20-0c:用户QQ号码,实验中为550313996之后的内容为加密的数据内容最后一个字节03:QQ报文的结尾五、腾讯QQ协议分析总结腾讯QQ的网络构架采用用户∕服务器模式,其通信协议是以请求——响应13模式工作的。即客户端发出一个请求,服务器端会给出一个相应的响应;服务器向客户端发送信息,客户端也会给服务器相应的响应。客户端与服务器发送的报文格式基本相同。请求和响应通过相同的序列号来进行配对(请求代码也相同)。而且每种请求的发起方都是相同的。QQ协议在传输层支持UDP和TCP两种基本协议方式,两种方式的数据包结构基本是一样的,为了提高效率,在默认情况下,QQ使用UDP类型登陆,也是使用UDP协议传送文本信息,同时为了保证可靠性,在请求登陆和注销登录时,都会发送3-4个相同的UDP数据包。QQ协议应用层数据的结构如表1所示。表1QQ协议应用层数据的结构字节内容及说明0报文开头,所有报文均以0x02开头1~2以网络字节序表示的QQ版本号3~4以网络字节序表示的命令序号5~6发送序号,接收回应时必须校验这个序号。此序号有可能是随机生成。7~10用户QQ号,十六进制以网络字节序表示11~N-1MD5加密的数据内容N报文的结束,所有报文以0x03结束可知,QQ协议数据包应用层的前11个字节是首部。首部的第3、4字节为命令编号,与QQ客户端的不同动作相对应,本实验分析获得的对应关系如表2。表2QQ客户端动作对应的命令序号动作命令序号登录0x0091心跳消息0x0058发送文