




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验TCP1 .实验目的1 .认识关于TCP协议的内容2 .掌握TCP模块的c语言编程2 .实验内容1 .用c语言制作实现TCP模块所需的所有常量的头文件2 .完成TCP报头的说明最大段长度MSS (最大段长度)是TCP段中数据字段的最大长度。 MSS告诉TCP“我的缓存可以接收的消息段的数据字段的最大长度是MSS字节”窗扩大因子被用于肥育管道。时间戳可以用来测量往返延迟RTT。数据字节计数(不是消息段计数! 中所述情节,对概念设计中的量体体积进行分析3 .完成TCP消息段的说明收件人允许的字节数URG紧急数据(通常不需要)ACK序号有效立即发送数据RST,SYN,FIN:连接建立(建立和断开) SYN :握手信号FIN :断开连接图1 TCP消息结构源端口和目的地端口字段分别占用2个字节。 端口是传输层和应用层的服务接口。 传输层的复用和分割功能必须通过端口实现。序列号字段占用4个字节。 通过TCP连接发送的数据流的每个字节都具有序列号。 “序号”字段的值是本报报道中发送的数据的第一个字节的序号。确认号字段包括4字节,其是要接收下一消息段的数据的第一字节的号码。数据偏移占有4比特,其指示从TCP消息段的数据的起始到CP消息段的起始的距离。 “数据偏移”的单位不是字节,而是32bit字(4字节为计算单位)。保留字段包括6bit,并且保留用于以后使用,但是现在应该为0。紧急比特URG若URG=1,则指示紧急指针字段有效。 应该尽快通知系统该消息段存在紧急数据(相当于高优先级数据)。当ACK=1时,确认位ACK仅在确认号字段有效。 在ACK=0的情况下,确认号码无效。如果重置比特rst(reset)rst=1,则必须在释放连接之后重新建立运输连接,这意味着TCP连接发生严重错误,例如由于主机崩溃。同步比特SYN同步比特SYN被设置为1指示这是连接请求或连接接受消息。终止位FIN(FINal)用于释放连接。 在FIN=1的情况下,表示该消息段的发送侧的数据已发送完毕,请求解除运输连接。窗口字段占用2个字节。 窗口字段以字节为单位控制对方发送的数据量。 TCP连接的一端基于所设定的高速缓存尺寸来确定自身的接收窗口尺寸,通知给对方以确定对方的发送窗口的上限。检查和占2字节。 检验和现场检验的范围包括报头和数据两部分。 要计算校验和,请在TCP消息段之前添加12字节的伪报头。紧急指针字段占用16比特。 紧急指针在本报的报道中显示紧急数据的最后一个字节的编号。选项字段的长度是可变的。 TCP标头最多包含40字节的选项信息,可用于向端点传递附加信息或对齐其他选项。填充字段是用于使整个报头的长度等于4字节的整数倍的字段。4 .用c语言编写TCP有限状态机的实现函数。在TCP建立和终止之间存在11种状态,TCP的有限状态机给出了从一种TCP连接转移到另一种状态的规则。服务器进程客户流程图2 TCP有限状态机3 .实验过程1.tcp头文件:#ifndef_TCP_H#define_TCP_H#ifndef_GLOBAL_H#include global.h #endif#ifndef_MBUF_H#include mbuf.h #endif#ifndef_IFACE_H#include iface.h #endif# ifndef _ internet _ h#include internet.h #endif#ifndef _IP_H#include ip.h #endif#ifndef_NETUSER_H#include netuser.h #endif#ifndef_TIMER_H#include timer.h #endifdefine def _ MSS 512/* defaultmaximumsegmentsize * /define def _ wnd 2048/* defaultreceiverwindow * /defi netcache 16/* # offtcpround-trip-timecacheentries * /define def _ RTT 5000/* initialguessroundtriptime (5秒) * /define MSL 230/* guesstwomaximum-segment life times * /define Emin _ RTO 500 l/* minimum time out,milliseconds */define TCP _ HDR _ HP D10/* mbufsizetopreallocatefordheaders * /define def _ wscale0/* ourwindowscaleoption * /# defineegreniss () (int32 ) ms clock () 12 )/* incrementclockat4MB/sec * /* numberofconsecutiveduplicateackstotriggerfastrecovery * /definecpdupacks3/* roundtriptimingparameters * /define again8/* averagerttgain=1/8* /#defineLAGAIN3/* Log2(AGAIN) */defined gain4/* meandeviationgain=1/4* /#defineeldgain2/*log2(dggain)*/definetcplen 20/* minimumheaderlength,bytes */define TCP _ max opt40/* largeptoptionfield,bytes */2、TCP报头structTCP_header统一短端口DDRu_char ver_ihl; /版本(4 bits )标题长度(4 bits)=8u_char tos; /服务类型(Type of service )u_short tlen; /总长度(Total length )u_short identification; /识别u_short flags_fo; /标志位(3 bits )分段偏移(3 bits )u_char ttl; /生存时间(Time to live )u_char proto; /协议u_short crc; /头校验和(Header checksum )ip_address saddr; /源地址(Source address )ip_address daddr; /目标地址(Destination address )u_int op_pad; /选项和填充(Option Padding )ip_header;3、TCP消息段结构TCP _ segment结构TCP _标题器TCP标题器;uint16 source;/*源端口* /uint16 dest;/*目标端口* /int32 seq; /* Sequence number */int32 ack; /* Acknowledgment number */uint16 wnd;/* receiver流控制窗口* /uint16 checksum; /* Checksum */uint16 up; /* Urgent pointer */uint16 mss;/*可选最大尺寸* /uint8 wsopt;/*可选窗口比例因子* /uint32 tsval; /* Outbound timestamp */uint32 tsecr; /* Timestamp echo field */打开结构统一集成协议:1;/* echoedipcongestionexperientedbit * /统一int urg :1;未知int ack :1;无符号int psh :1;统一int rst :1;无信号同步:1;无符号int fin :1;统一int MSS :1;/* MSS选项首选项* /统一int wscale :1;/*窗口缩放选项present * /统一时间表:1; /* Timestamp option present */tcpData;以下称为4、TCP有限状态机#include global.h #include timer.h #include mbuf.h #include netuser.h #include internet.h #include tcp.h #include ip.h voidtcp_output(tcb )注册结构TCB * TCB;装模作样结构mbuf * DBP;/* headeranddatabufferpointers * /结构TCP seg;/*本地工作复制主题* /uint16 ssize;/* sizeofcurrentsegmentbeingthent*包括同步和精简标志* /uint16 dsize; /* Size of segment less SYN and FIN */int32 usable;/*可用窗口* /int32 sent;/* sequence count (incl syn/fin ) already* in the pipe but not yet acked */int32 rto; /* Retransmit timeout setting */if(tcb=NULL)return交换机(TC B- state ) case TCP_LISTEN:case TCP_CLOSED:return;/*不发生事件* /以下称为for (; 表示memset(seg,0,sizeof(seg ) );/* computedataalreadyedinflight * /sent=tcb-snd.ptr - tcb-snd.una;usable=min(tcb-snd.wnd,tcb-cwind )可用集合;可用-=集合; /* Most common case */else if (可用=0sent=0)可用=1;/*关闭窗口探测* /elseusable=0; /* Window closed or shrunken */ssize=min(tcb-sndcnt - sent,可使用)ssize=min(ssize,tcb-mss )if! tcb-flags.force sent!=0 ssize tcb-mss什么? (TC B- state=TCP _ fin wait1ssize=TC B- snd CNT-sent )ssize=0;以下称为if! tcb-flags.synack! TCP_syndicata )if (TC B- snd.ptr=TC B- ISS ) ssize=min (1,ssize)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件开发驻场合同协议
- 销售人员合同变更协议
- 酒店住宿转让合同范本
- 道路标准运输合同范本
- 服装生产订货合同范本
- 门面转租合同三方协议
- 酒店改建店铺合同范本
- 道路清理劳务合同范本
- 粉扑工厂转让合同范本
- 隧道拆除施工合同范本
- 中医备案诊所管理办法
- 2025年高校教师资格证考试题库(附答案)
- (康德卷) 重庆市2026届高三9月开学考联考英语试卷(含答案解析)
- 2025江苏省旅游发展研究中心自主招聘4人考试参考试题及答案解析
- 绿化施肥基本知识培训课件
- 选调生培训课件
- 安全驾驶教育培训课件
- 西师大版数学六年级上册 第一单元测试卷(A)(含解析)
- 2025北京京剧院招聘10人备考题库及答案解析
- 防护用品使用课件
- 日间手术课件
评论
0/150
提交评论