1、、 传输层协议分析2、A数据包捕获分析部分2、1 实验目得理解P报文首部格式与字段得作用,CP连接得建立与释放过程,TCP数据传输中编号与确认得作用。、2 实验内容应用TCP应用程序传输文件,截取CP报文,分析TC报文首部信息,TCP连接得建立过程,CP数据得编号与确认机制。2、实验原理T协议就是传输控制协议得简称,工作在网络层协议之上,就是面向连接得,可靠得,端到端得传输层协议。1) TP得报文格式TC报文段分为头部与数据两部分,如图1:图 TC报文段得总体结构TCP首部TCP数据部分TC报文段首部又分为固定部分与选项部分,固定部分为0B,如图2所示,这些字段得组合实现了TCP得所有功能。图
2、2 TCP报文段得首部 1 1源端口目得端口序号确认号头部长度(4bi)保留UGACKPRSTSYFIN窗口校验与紧急指针选项(长度可变)填充TCP采用传输输连接得方式传送TCP报文,传输连接包括连接建立、数据传输与连接释放三个阶段。2) T连接得建立TC连接建立采用“次握手方式。首先,主机A得C向主机B得TP发出连接请求报文段,其首部中得同步位SN应置1,同时选择一个序号X,表明在后面传送数据时得第一个数据字节得序号就是X+,如图3所示:被动打开主动打开确认连接请求图 T连接建立得3次握手过程然后,主机B得TC收到连接请求报文段后,若同意,则发回确认.在确认报文段中应将SYN与CK都置1,确
3、认号应为X+1,同时也为自己选择一个序号Y.最后,主机得TCP收到B得确认后,要向B发回确认,其CK置1,确认号为Y1,而自己得序号为X+1。TC得标准规定,SY置1得报文段都要消耗掉一个序号。同时,运行客户进程得主机A得TCP通知上层应用进程,连接已经建立.当主机A向B发送第一个数据报文段时,其序号仍为+1,因为前一个确认报文段并不消耗序号。当运行服务器进程得主机B得TCP收到主机得确认后,也通知其上层应用进程,连接已经建立另外,在TCP连接建立得过程中,还利用CP报文段首部得选项字段进行双方最大报文段长度MS协商,确定报文段得数据字段得最大长度。双方都将自己能够支持得MSS写入选项字段,比
4、较之后,取较小得值赋给MSS,并应用于数据传送阶段。)TP数据得传送为了保证TP传输得可靠性,TP采用面向字节得方式,将报文段得数据部分进行编号,每个字节对应一个序号。并在连接建立时,双方商定初始序号.在报文段首部中,序号字段与数据部分长度可以确定发送方传送数据得每一个字节得序号,确认号字段则表示接收方希望下次收到得数据得第一个字节得序号,即表示这个序号之前得数据字节均已收到。这样既做到了可靠传输,又做到了全双工通信。当然,数据传送阶段有许多复杂得问题与情况,如流量控制、拥塞控制、重传机制等,本次实验不探究。4)TP连接得释放在数据传输结束后,通信得双方都可以发出释放连接得请求。TP连接得释放
5、采用“次握手”。如图 图4 CP连接释放得4次握手过程首先,设图4中主机得应用进程先向其CP发出释放连接得请求,并且不再发送数据。CP通知对方要释放从到B这个方向得连接,将发往主机B得C报文段首部得中止位置1,其序号X等于前面已传送过得数据得最后一个字节得序号加。主机B得TCP收到释放连接通知后即发出确认,其序号为Y,确认号为X+1,同时通知高层应用进程,如图中得箭头。这样从A到B得连接就被释放了,连接处于半关闭状态,相当于主机对主机B说“我已经没有数据发送了。但就是如果您还有数据要发送,我仍然接收.此后,主机不再接收A发来得数据。但若主机还有一些数据要发给A,则可以继续发送(这种情况很少)。
6、主机只要正确收到数据,仍然向B发送确认.若主机B不再向主机A发送数据,其应用进程就通知TCP释放连接,如图中得箭头。主机发出得连接释放报文段必须将中止位FIN与确认位ACK置1,并使其序号仍为Y(因为签名发送得确认报文段不消耗序号),但就是还必须重复上次已经发送过得AX+1。主机A必须对此发出确认,将AK置1,ACKY+1,而自己得序号仍然就是X+1,因为根据TP标准,前面发送过得FIN报文段要消耗掉一个序号。这样就把到A得反方向得连接释放掉。主机得TCP再向其应用进程报告,整个连接已经全部释放。、4实验步骤步骤 在irehark中设置过滤条件,协议为T ,地址为本机any,并开始截获报文;步
7、骤2 打开、,完成后,保存截获得报文并命名为“TCP学号”,分析捕获得报文。这里,TCP得连接与建立采用得就是: 三次握手 方式,本机就是 2、18、3、3 ,远端主机就是12、6、13 .步骤3 分析TP连接建立过程得前个报文,填写下表1:表1 TCP建立过程得三个报文信息字段名称第一条报文第二条报文第三条报文报文序号170417161718Sequenc Nnb30849835AC Numbe289137CK1211SY11步骤 分析截获报文中数据发送部分得第一条TCP报文及其确认报文,将报文中得字段值填写在表格2中。表2 CP报文首部信息字段名长度字段值字段意义发送报文确认报文源端口16
8、发送目标端口16确认端口号就是唯一标识序号2确认好32确认头部长度4保留6保留字段窗口6校验与6紧急指针1选项(长度可变)步骤 CP连接建立时,其报文首部与其它TCP报文不同,有一个optio字段,它得作用就是什么?结合IEEE80、协议规定得以太网最大帧长分析此数据就是怎么得出来得?步骤 分析CP数据传送阶段得前个报文,将报文信息填入表3:表 TC数据传送部分得前8个报文报文序号报文种类序号字段确认号字段数据长度被确认报文序号窗口3744确认2891329123354发送06160364确认11321123784发送1066579794确认271927123384发送10666593314确
9、认8983824确认682、5实验总结在实验中,通过分析截获得TP报文首部信息,可以瞧到首部中得序号、确认号等字段就是TCP可靠连接得基础。分析TC头部信息,分析“次握手”过程。通过对数据传送阶段报文得初步分析,了解数据得编码与确认机制。总之,CP协议中得各项设置都就是为了在数据传输时提供可靠得面向连接得服务.2、编程构造DP数据包部分使用C语言构造UDP数据包程序。1) UDP首部与伪首部结构体定义/UP首部*/st dphdrnined hortur;unsined shr u_st;nsignedshort u_l;usigned shor u_cks;charu_dtU_MAXLEN;
10、/UDP中校验使用得伪首部trut sdo_headerin srI;short dp_l;har rv;charprotocol;usigne short sr_port;usigned stsc_port;unsgned ht en;unsignd short hecsm;char data;;2)构建UP报文数据intbuidudp_ackge(struct scetpai * sp,const ungned cha u,int l,unsigne char dpPact,nt PacketLe)*udplen=zof(sucudphr)en;rct d_hr*h(truct udp_hd*)ukt;uninedhrdbf=(dppkt+sief(ruct p_hr));memcy(dbf,uf,en);Usur=hts(sor);Uhdest=on(_port);Uhle=to(sizeof(stut dp_h0)+len);U-chek;heudcsum(d_ip,dpot,_,udppkt,sizeof(sruc dp_hdr)+n);retn udppkt;