计算机网络课程设计三次握手协议的工作过程分析.doc

上传人:仙人指路1688 文档编号:3703703 上传时间:2023-03-16 格式:DOC 页数:18 大小:917KB
返回 下载 相关 举报
计算机网络课程设计三次握手协议的工作过程分析.doc_第1页
第1页 / 共18页
计算机网络课程设计三次握手协议的工作过程分析.doc_第2页
第2页 / 共18页
计算机网络课程设计三次握手协议的工作过程分析.doc_第3页
第3页 / 共18页
计算机网络课程设计三次握手协议的工作过程分析.doc_第4页
第4页 / 共18页
计算机网络课程设计三次握手协议的工作过程分析.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《计算机网络课程设计三次握手协议的工作过程分析.doc》由会员分享,可在线阅读,更多相关《计算机网络课程设计三次握手协议的工作过程分析.doc(18页珍藏版)》请在三一办公上搜索。

1、 课程设计报告课程名称: 计算机网络 设计题目: 三次握手协议的工作过程分析 系 别: 计算机 专 业: 计算机科学与技术 组 别: 第七组 起止日期: 2011年11月25日2011年12月2日 指导教师: 计算机科学与技术系二零一 一年制课程设计题目三次握手协议的工作过程分析组长张家碧学号2011220126班级计专112系别计算机专业计算机科学与技术组员张雷 章林霞 张家碧 朱文 左刚指导教师赵生慧课程设计目的 掌握TCP的连接建立课程设计所需环境 Ethereal抓图软件及WinPcap工具课程设计任务要求掌握三次握手协议工作原理课程设计工作进度计划序号起止日期工 作 内 容分工情况0

2、1201112520111126查找资料,了解tcp连接的建立过程全组成员0220111127查询并下载抓包工具张家碧 张雷 朱文0320111128熟悉抓包软件的使用全组成员042011112920111130上机实验,利用抓包软件对tcp的三次握手进行监控并收集数据全组成员0520111201对所收集的数据进行分析。整理全组成员0620111202编写课程设计报告章林霞 左刚指导教师签字: 年 月 日教研室审核意见:教研室主任签字: 年 月 日课程设计任务书目 录1.问题描述22.问题分析33.需求分析44.概要设计45.详细设计85.1 客户端向服务器发送请求85.2服务器向客户端回复同

3、意连接的响应115.3客户端向服务器发送确认信息12课程设计总结与体会15致谢15参考文献15三次握手协议1.问题描述 三次握手(three times handshake;three-way handshaking)所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。建设一个小型的模

4、仿环境假设有3台接入互联网的机器。A为攻击者操纵的攻击机。B为中介跳板机器(受信任的服务器)。C为受害者使用的机器(多是服务器),这里把C机器锁定为目标机器。A机器向B机器发送SYN包,请求建立连接,这时已经响应请求的B机器会向A机器回应SYN/ACK表明同意建立连接,当A机器接受到B机器发送的SYN/ACK回应时,发送应答ACK建立A机器与B机器的网络连接。这样一个两台机器之间的TCP通话信道就建立成功了。 B终端受信任的服务器向C机器发起TCP连接,A机器对服务器发起SYN信息,使C机器不能响应B机器。在同时A机器也向B机器发送虚假的C机器回应的SYN数据包,接收到SYN数据包的B机器(被

5、C机器信任)开始发送应答连接建立的SYN/ACK数据包,这时C机器正在忙于响应以前发送的SYN数据而无暇回应B机器,而A机器的攻击者预测出B机器包的序列号(现在的TCP序列号预测难度有所加大)假冒C机器向B机器发送应答ACK这时攻击者骗取B机器的信任,假冒C机器与B机器建立起TCP协议的对话连接。这个时候的C机器还是在响应攻击者A机器发送的SYN数据。 TCP协议栈的弱点:TCP连接的资源消耗,其中包括:数据包信息、条件状态、序列号等。通过故意不完成建立连接所需要的三次握手过程,造成连接一方的资源耗尽。 通过攻击者有意的不完成建立连接所需要的三次握手的全过程,从而造成了C机器的资源耗尽。序列号

6、的可预测性,目标主机应答连接请求时返回的SYN/ACK的序列号时可预测的。本课程设计要解决运输连接的建立能正常地进行。 2.问题分析 第一次握手:客户端向服务器问好,问咱俩能不能通信,并告知服务器自己的序列号为x,其中x为机器随机产生的一个数字。第二次握手:服务器收到来自客户端的序列号x,当服务器认为可以与客户端通信,就发出回应,置确认号为x+1,并告知客户端自己的序列号为y,其中y也是随机生成。第三次握手:客户端接收到来自服务器的确认号x+1时,知道服务器答应与自己通讯了,于是置下一次正式传输数据开始的序列号为x+1,同时置确认号为y+1,表示告知服务器我收到你的应答了,数据传输可以开始。三

7、次握手与现实生活中的预约很相似。客人问主人有没有空接收来访,主人回应客户有空就允许客户来访。当然,计算机世界里更文明,主人回应有空的同时还会问客户什么时候方便来访。经过三次的沟通,大家才达成最后的约定。 在TCP连接建立过程中要解决以下三个问题:要使每一方能够确知对方的存在。要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)。能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。3. 实验环境及需求分析通过Ethereal抓图软件及WinPcap工具来进一步掌握TCP连接建立的过程即三次握手开发环境:Ethereal 开发工具:WinPcap工具Eth

8、ereal 是当前较为流行的一种计算机网络调试和数据包嗅探软件,是一种开发源代码的许可软件,允许用户向其中添加改进方案。在实时时间内,从现在网络连接处捕获数据,或者从被捕获文件处读取数据,还具有设计完美的 GUI 和众多分类信息及过滤选项。用户通过 Ethereal,同时将网卡插入混合模式,可以查看到网络中发送的所有通信流量。Ethereal 应用于故障修复、分析、软件和协议开发以及教育领域。它具有用户对协议分析器所期望的所有标准特征,并具有其它同类产品所不具备的有关特征。Ethereal 可以读取从 tcpdump(libpcap)、网络通用嗅探器(被压缩和未被压缩)、SnifferTM 专

9、业版、NetXrayTM、Sun snoop 和 atmsnoop、Shomiti/Finisar 测试员、AIX 的 iptrace、Microsoft 的网络监控器、Novell 的 LANalyzer、RADCOM 的 WAN/LAN 分析器、 ISDN4BSD 项目的 HP-UX nettl 和 i4btrace、Cisco 安全 IDS iplog 和 pppd 日志( pppdump 格式)、WildPacket 的 EtherPeek/TokenPeek/AiroPeek 或者可视网络的可视 UpTime 处捕获的文件。此外 Ethereal 也能从 Lucent/Ascend

10、WAN 路由器和 Toshiba ISDN 路由器中读取跟踪报告,还能从 VMS 的 TCPIP 读取输出文本和 DBS Etherwatch。WinPcap是Windows平台下访问网络数据链路层的开源库,该库已达到工业标准的应用要求。WinPcap允许应用程序绕开网络协议栈来捕获与传递网络数据包,并具有额外的有用特性,包括内核层的数据包过滤、一个网络统计引擎与支持远程数据包捕获。winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。因此,它不能用于QoS

11、调度程序或个人防火墙。目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且MS也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。有个软件叫sniffer pro.可以作网管软件用,有很多功能,可监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的

12、数据流通情况,可以抓包,可对过滤器进行设置,以便只抓取想要的包,比如POP3包,smtp包,ftp包等,并可从中找到邮箱用户名和密码,还有ftp用户名和密码。它还可以在使用交换机的网络上监听,不过要在交换机上装它的一个软件。还有一个简单的监听软件叫Passwordsniffer,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在HUB网络上。著名软件tcpdump及ids snort都是基于libpcap编写的,此外Nmap扫描器也是基于libpcap来捕获目标主机返回的数据包的。抓包过程依赖于两个主要组件: 一个数据包过滤器,它决定着是否接收进来的数据包并把数据包拷贝给监听程序。数据

13、包过滤器是一个有布尔输出的函数。如果函数值是true,抓包驱动拷贝数据包给应用程序;如果是false,数据包将被丢弃。NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还得决定要保存的字节数。被NPF驱动采用的过滤系统来源于BSD Packet Filter(BPF),一个虚拟处理器可以执行伪汇编书写的用户级过滤程序。应用程序采用用户定义的过滤器并使用wpcap.dll将它们编译进BPF程序。然后,应用程序使用BIOCSETF IOCTL写入核心态的过滤器。这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收。与传统解决方案不同,NPF不解释(inter

14、pret)过滤器,而是执行(execute)它。由于性能的原因,在使用过滤器前,NPF提供一个JIT编译器将它转化成本地的80x86函数。当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤器解释器,这使得处理过程相当快。 一个循环缓冲区,用来保存数据包并且避免丢失。一个保存在缓冲区中的数据包有一个头,它包含了一些主要的信息,例如时间戳和数据包的大小,但它不是协议头。此外,以队列插入的方式来保存数据包可以提高数据的存储效率。可以以组的方式将数据包从NPF缓冲区拷贝到应用程序。这样就提高了性能,因为它降低了读的次数。如果一个数据包到来的时候缓冲区已经满了,那么该数据包将被丢弃,因此就发生了丢

15、包。试验中所用到的tcp报文格式如图3.01所示图3.01 TCP报文格式TCP报文段首部(20个字节)1.源端口和目的端口:各占2个字节,16比特的端口号加上32比特的IP地址,共同构成相当于传输层服务访问点的地址,即“插口”;2.这些端口可用来将若干高层协议向下复用;序号字段和确认序号字段:3.序号:占4个字节,是本报文段所发送的数据部分第一个字节的序号。在TCP传送的数据流中,每一个字节都有一个序号。例如,一报文段的序号为300,而起数据供100字节,则下一个报文段的序号就是400;4.确认序号:占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部

16、中的序号;5.由于序号字段有32比特长,可以对4GB的数据进行编号,这样就可保证当序号重复使用时,旧序号的数据早已在网络中消失了;数据偏移字段6.数据偏移:占4比特,表示数据开始的地方离TCP报文段的起始处有多远。这实际上就是TCP报文段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。7.保留字段: 6比特,供今后使用,目前置为0。8.6个比特的控制字段紧急比特URGent:当URG=1时,表明此报文应尽快传送,而不要按原来的排队顺序来传送。与“紧急指针”字段配合使用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接收方可以知道紧急数据共有多长;确认比特ACK:只有当AC

17、K=1时,确认序号字段才有意义;急迫比特PSH:当PSH=1时,表明请求远地TCP将本报文段立即传送给其应用层,而不要等到整个缓存都填满了之后再向上交付。复位比特ReSeT:当RST=1时,表明出现严重差错,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个非法的报文段或拒绝打开一个连接;同步比特SYN:在建立连接时使用,当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,在发回的报文段中使SYN=1和ACK=1。因此,SYN=1表示这是一个连接请求或连接接受报文,而ACK的值用来区分是哪一种报文;终止比特FINal:用来释放一个连接,当FIN=1时,表明欲发送的

18、字节串已经发完,并要求释放传输连接;窗口字段9.窗口Window:占2字节,表示报文段发送方的接收窗口,单位为字节。此窗口告诉对方,“在未收到我的确认时,你能够发送的数据的字节数至多是此窗口的大小。”10.通知窗口advertised window :接收端根据其接收能力许诺的窗口值,是来自接收端的流量控制。接收端将通知窗口的值放在TCP报文的首部中,传送给对方。11.拥塞窗口congestion window:是发送端根据网络拥塞情况得出的窗口值,是来自发送端的流量控制。12.检验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性的字段,由发端计算和存储,由收端进行验证。13

19、.选项字段允许每台主机设定能够接受的最大TCP载荷能力(缺省536字节) 。图5.02 TCP分节的封装数据流、报文段和序号TCP通信的动作切割:根据适合传输的大小对数据流进行切割最大报文段长度64Kbytes通常:MTU(IP头TCP头)复原:用报文段恢复原始数据流的字节顺序序号:排序、查错及数据流复原图5.03 TCP数据流的切割与复原报文序号依据数据流中的字节序号(流序号)报文序号为报文段中第一字节的流序号如:流序号x,长度L的报文段,则: 报文的序号为x,下一报文序号为xL序号特点报文的顺序关系数据流的位置,更便于流的复原需较大的序号空间(32bit,4Gbyte)4.概要设计 TCP

20、连接的建立采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client),而被动等待连接建立的应用进程叫做服务器(server)。 三次握手:客户端A 发送一个报文给服务器B,服务器B发回确认,然后客户端A再加以确认,来回共三次。 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接。位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置)URG(urgent紧急)Sequence number(顺序号码) Ack

21、nowledge number(确认号码)5.详细设计5.1 客户端向服务器发送请求实验时,本机地址为10.255.76.231(作为客户端)。服务器的地址为220.181.2.225。双击打开Ethereal,单击选择菜单栏上选择Capture项目,选中options选项,在弹出的窗口中确认Capture Filter一栏为空,选择Capture按钮(如图5.01所示)开始监控网络。图5.01 将Capture Filter一栏置空开始检测网络 停止后会显示这段时间客户端的通信情况(如图5.02所示):图5.02 利用Ethereal进行抓包后所得到的数据选中其中一项(表示第一次握手),其协

22、议是tcp,以10.255.76.231为客户端地址,以220.181.2.225为服务器地址,点击后其具体信息将显示在下方(如图5.03所示)。图5.03 第一次握手tcp包的具体形式 可以看出其源端口号为54483,目的端口号为80,序号为f365d1a4,头部长度为32bytes,检验和0x37a3,窗口大小8192,选项12bytes。图5.04 第一次握手tcp报文的相关信息 从图5.04可以看出其窗口大小为8192,检验和为0x37a3,选项为12bytes。图5.05 第一次握手是随机产生的序列号从图5.05可以看出第一次握手似的序列号了f365d1a4图5.06 源、目的端口等

23、相关信息 此时的SYN位为1,URG,ACK,PSH,RST,FIN位都为0,表示客户端向服务器发送连接建立的请求。图5.07 第一次握手时仅SYN置1 5.2服务器向客户端回复同意连接的响应 点击下一条(表示第二次握手)可以发现服务器(220.181.2.225)向客户端(10.255.76.231)回复同意连接的响应。图5.08 点击第二次握手的tcp数据包 具体信息如图5.09图5.09 第二次tcp握手数据包的具体形式图5.10 第二次握手tcp报文的相关信息图5.11 随机给自己选择一个序列号图5.12 第一次的序号加1 从中可以看出在响应的报文段中,SYN和ACK段都已经置1,其余

24、位都为0,随机给自己选择的序列号为66bde6f8,确认号ack为f365d1a5(这时看到服务器回应的确认号=上一次握手客户端发过来序号+1),并且为自己选择了一个初始序号0。源端口号变为80,目的端口号变为54483,头部长度为32bytes,检验和0x38cf,窗口大小5840,选项12bytes。 5.3客户端向服务器发送确认信息 点击第三条(表示第三次握手),其详细信息如图5.13所示:图5.13 第三次握手数据包的具体形式图5.14 ack的值为第二次的序号加1图5.15 第三次握手tcp报文的相关信息 此时报文的ACK段为1,其余位都为0,确认号ack为66bde6f9(这时看到

25、本机回应的确认号=上一次握手服务器发过来序号+1),而自己的序号也为f365d1a5,源端口号变为54483,目的端口号变为80,头部长度为32bytes,检验和0x37a3,窗口大小8192,选项12bytes。此时三次握手完成,tcp的连接已完成。 到此,用抓包软件检测tcp的连接结束。tcp连接完成。 实验中,每次的数据变化如下表5.01所示源地址目的地址源端口目的端口seq(序号)Ack(确认号)控制位SYN控制位ACK其余控制位第一次握手10.255.76.231220.181.2.2255448380f365d1a40100第二次握手220.181.2.22510.255.76.2

26、31805448366bde6f8f365d1a5110第三次握手10.255.76.231220.181.2.2255448380f365d1a566bde6f9010表5.01 三次握手中各主要部分变化情况课程设计总结与体会大家一起进行组队课程设计,让我们深深感受到讨论交流很重要,遇到困难时,大家一起讨论,加强我们的团队合作精神,同时通过这次的课程设计,我们对TCP连接建立过程三次握手有了很深的理解。致谢非常感谢课程设计指导老师对我们组的精心辅导,同时也要谢谢同学们给我们提供的帮助,使得我们小组的课程设计顺利完成。参考文献计算机网络(第五版) 编著:谢希仁评语: 评阅教师签名: 年 月 日成 绩

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号