计算机网络课程设计实验报告2514842326.doc_第1页
计算机网络课程设计实验报告2514842326.doc_第2页
计算机网络课程设计实验报告2514842326.doc_第3页
计算机网络课程设计实验报告2514842326.doc_第4页
计算机网络课程设计实验报告2514842326.doc_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

厦门理工学院计算机科学与技术系计算机网络课程设计-莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂肁蒁莄袁膃芄蚃袀羃肇虿衿肅莂薅袈膇膅蒁袈袇莁莇袇罿膃蚅羆肂荿薁羅膄膂蒇羄袄莇莃羃肆膀螂羂膈蒅蚈羂芁芈薄羁羀蒄蒀薇肃芇莆薆膅蒂蚄蚆袄芅薀蚅羇蒀蒆蚄腿芃蒂蚃芁膆螁蚂羁莁蚇蚁肃膄薃蚀膆莀葿蚀袅膃莅蝿羈莈蚄螈肀膁薀螇节莆薅螆羂艿蒁螅肄蒅莇螄膇芇蚆螄袆蒃薂袃羈芆蒈袂 计算机网络课程设计课程设计题目:_ pdu及网络数据流分析_指导老师: _ 戴 彬_ 设计人员(学号): 黄龙锋 (20070711156) 苏丁卯 (20070711151) 黄文荣 (20070711130) 林锦 (20070711113) 康碧全 (20070711153) 李冰 (20070711109)班级: _ 07计算机1班 日期: 2010-1-20 计算机科学与技术系目 录1、设计目的.42、pdu的概念43、osi参考模型和tcp/ip参考模型的数据传输53.1 osi参考模型.53.2在osi参考模型中数据传输的基本过程.63.3tcp参考模型.73.4在tcp/ip参考模型的数据传输基本过程.84、对tcp/ip参考模型主要层的pdu分析84.1应用层94.2传输层.104.2.1. 运输协议数据单元(tpdu)114.2.2. 两个重要的传输层协议134.2.3. 套接字154.2.4. tcp连接建立、释放时的握手过程174.3互联层 .204.3.1. ipv4报头的大致内容描述214.3.2.ip数据报的分片与重组234.3.3 在网络层的数据流走向244.4主机-网络层254.4.1.数据链路层中的mac子层.254.4.2数据链路层中的llc子层264.4.3物理层275、封装与解封装276、利用wireshark网络分析工具抓取数据包297、处理已经抓捕下来的包.358、通过分析解决判断是否受到arp攻击40 8.1arp概念及工作原理.41 8.2arp攻击定义及常见类型.43 8.3arp 遭到arp攻击的现象.459、用p2p终结者实现arp攻击47 9.1 p2p arp攻击原理48 9.2使用p2p进行arp欺骗.4910、遭受到arp攻击的解决办法.5011、实例分析51 11.1 tcp传输的连接建立过程与释放过程分析.5211.2 qq登陆原理分析.5311.3arp欺骗过程分析5512、心得和展望.6113、附录62 参考文献.621设计目的在学完计算机网络基础课程之后综合利用所学知识完成一个具有一定难度的综合设计题目。该课程设计的目的和任务是:1、培养正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的创新精神。2、巩固和加深计算机网络课程中所学的理论知识和实际应用能力,培养自身综合运用所学计算机知识,分析和解决工程技术问题的能力。3、通过课程设计训练,基本掌握分析问题,总体结构设计,用户界面的设计,功能实现等各方面的基本技能和技巧。4、培养团体协作精神,获得初步的项目分析应用经验,为以后从事生产和科研工作打下一定的基础。2pdu概念pdu是一种通信数据单元(编码),既协议数据单元(protocol data unit)tcp/ip参考模型中,不同层次有着不同的协议,不同的协议自然对应着不同的协议数据单元,以下两图是tcp/ip各层的协议及所对应的pdu协议数据单元: tcp/ip协议层和相应的pdu名称:3.osi参考模型和tcp/ip参考模型的数据传输3.1 osi参考模型osi参考模型分为七个层次,自底向上依次为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。当接受数据时,数据是自下而上传输;当发送数据时,数据则是自上向下传输的。osi模型并未确切描述用于各层的协议和服务,它仅仅是告诉我们每一层该做些什么。1. 物理层(physicallayel) 物理层是osi的最低层,主要功能是进行二进制数的传输。它屏蔽了物理设备和传输介质的差异,实现了比特流的透明传输。物理层的数据传输单元是比特(bit)。2. 数据链路层(datalinklayer) 数据链路层是osi参考模型的第二层,它将原始的、有差错的物理线路变成对网络层无差错的数据链路,并解决了多用户争用,使其对网络层显示为一条可靠的链路。它采用了差错控制和流量控制的方法,以帧为传输单位。数据链路层又分为逻辑链路(llo子层和介质访问控制(ma(:)子层.ma(:子层面向介质,而llc子层则是面向网络。3. 网络层(network layer) 网络层位与osi参考模型的第三层,它的主要功能是通过路由选择算法为分组通过通信子网选择最恰当的路径,以及实现拥塞控制和网络互联等功能。它的数据传输单位是分组(pa(:k)。4. 传输层(transpo layer) 传输层是osi参考模型中的第四层,它实现了端到端的传输,向高层屏蔽了下层数据的细节。提高了网络层的服务质量。传输层可以及时检测和修正传输过程中的错误,为用户提供有效、可靠的服务。5. 会话层(session layer) 作为osi参考模型中的第五层,会话层负责维护两结点间会话的建立、管理和终止。它利用传输层提供的端到端的数据传输服务,具体实施服务请求者与服务提供者之间的通信,其提供的服务通常需要建立连接、数据传输、释放连接三个阶段。6. 表示层(presentation layer)表示层是osi的第六层,用于处理系统间用户信息的语法表达形式。主要功能包括数据格式变换、数据加密与解压、数据压缩与恢复。7. 应用层(application layer) 应用层位与osi参考模型的最高层,是直接面向用户的一层,是计算机网络与用户间的界面。它的主要功能是为应用程序提供网络服务。3.2在osi参考模型中数据传输的基本过程1当源结点的应用进程的数据传送到应用层时,应用层为数据加上本层控制报头后,组织成应用层的数据服务单元,然后再传输到表示层.2表示层接收到这个数据单元后,加上本层的控制报头构成表示层的数据服务单元,再传送到会话层。依此类推,数据传送到传输层.3传输层接收到这个数据单元后,加上本层的控制报头后构成传输层的数据服务单元(报文).4报文传送到网络层时,由于网络层数据单元的长度有限制,传输层长报文将被分成多个较短的数据字段,加上网络层的控制报头后构成网络层的数据服务单元(分组).5网络层的分组传送到数据链路层时,加上数据链路层的控制信息后构成数据链路层的数据服务单元(帧).6数据链路层的帧传送到物理层后,物理层将以比特流的方式通过传输介质传输。当比特流到达目的结点时,再从物理层开始逐层上传,每层对各层的控制报头进行处理,将用户数据上交高层,最终将源结点的应用进程的数据发送给目的结点的应用进程。3.3tcp参考模型tcp/ip是一组用于实现网络互连的通信协议。internet网络体系结构以tcp/ip为核心。基于tcp/ip的参考模型将协议分成四个层次,它们分别是:网络接口层、网际互连层、传输层、和应用层。1网络接口层网络接口层与osi参考模型中的物理层和数据链路层相对应。事实上,tcp/ip本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与tcp/ip的网络接口层进行连接。2网际互联层网际互联层对应于osi参考模型的网络层,主要解决主机到主机的通信问题。该层有四个主要协议:网际协议(ip)、地址解析协议(arp)、反向地址解析协议(rarp)和互联网控制报文协议(icmp)。ip协议是网际互联层最重要的协议,它提供的是一个不可靠、无连接的数据报传递服务。3传输层传输层对应于osi参考模型的传输层,为应用层实体提供端到端的通信功能。该层定义了两个主要的协议:传输控制协议(tcp)和用户数据报协议(udp)。tcp协议提供的是一种可靠的、面向连接的数据传输服务;而udp协议供的是不可靠的、无连接的数据传输服务。4应用层应用层对应于osi参考模型的高层,为用户提供所需要的各种服务,例如:ftp、telnet、dns、smtp等。3.4在tcp/ip参考模型的数据传输基本过程 1.当应用进程a的数据传送到应用层时,应用层为数据加上本层的控制报头后,将其组织成应用层的数据服务单元,然后向下传输到传输层。2.传输层收到该数据单元后,加上本层的控制报头,构成传输层的数据服务单元,该数据服务单元被成为报文(message)。3.传输层将报文传送到网络层时,由于网络层数据单元的长度有限制,因此,传输层的长报文将被分为若干个较短的数据段.每个数据段再加上网络层的控制报头,就构成了网络层的数据服务单元,它被称为分组(packet)。4.网络层的分组传送到数据链路层时,加上数据链路层的控制信息后构成数据链路层的数据服务单元,它被成为帧(frame)。5.数据链路层的帧传送到物理层后,物理层将以比特流的方式通过传输介质传输出去。当比特流到达目的结点主机b时。再从物理层依层上传,每层对其对应层的控制报头进行处理,将用户数据交给高层,最终将进程a的数据送给主机b的进程b。从用户角度来看,应用进程的数据好像是”直接”传给了对应的应用进程.即对于每台主机的应用进程来说,在五层原理体系中数据流的复杂处理过程实现了透明。实际上数据发送方的各层相当于将各自的控制信息添加到上层传来的数据上,然后一起打包继续向下传递,而数据接收方的各层则是将接到的数据包进行解压,去掉发送方对等层添加在数据上的控制信息,然后传递给上层。4、对tcp/ip参考模型主要层的pdu分析4.1应用层4.1.1 tcp/ip应用层协议有许多种,本文档讲解我们最熟悉的超文本传输协议(http)。超文本传输协议(http)版本1.1是一个草案标准,其描述见rfc 2612。旧的http 1.0是一个指示性协议,rfc 1945对它进行了描述。超文本传输协议是为了传输超文本标记语言(hypertext markup language,html)而设计的协议。html是一种用于创建超文本文档的标记语言。有关html的信息请参见相关的超文本标记语言的书籍。4.1.2 http综述http基于请求响应活动。客户端运行浏览器应用程序,它建立与服务器的连接,并以请求的形式发送一个请求到服务器。服务器用一个状态行做出响应,包括信息的协议版本以及成功或者错误代码,后面跟着一个消息,它包含服务器信息、实体信息和可能的内容。http事务被划分为如下4个步骤。除了实验性应用程序之外,现行习惯要求客户在发出每个请求之前先建立连接,并由服务器在发送响应之后关闭连接。客户和服务器都应当注意任何一方都有可能过早地关闭连接,原因可能是用户操作、自动超时或者程序故障等,他们应当以一种可预见的并且所期望的方式处理这种关闭行为。在任何一种情况下,任何一方或者双方关闭的连接总是终止当前请求,而不管它的状态如何。简单的说http是一种无状态协议,因为它不跟踪连接。例如:为了装入包含两个图形的页面,支持图形的浏览器将打开三个tcp连接:一个连接用于页面,而另外连个连接用于图形。然而大多数浏览器能够同时处理几个这样的连接。如果一个页面包含大量要素,每个资源都新建一个tcp连接,这将占用大量资源。在http1.1中缓和了这个问题,它为每种类型元素建立一个tcp连接,同样类型的元素使用同一个tcp连接。http 1.1不同于http 1.0的地方就是它使用了永久连接。4.1.3统一资源标识uriuri亦可称为web地址,是统一资源定位器(url)和统一资源名称(urn)的组合。依照rfc 1945种的定义,“统一资源标识符是通过名称、位置或者其他的特征标识资源的简单格式字符串”。4.1.4 http消息类型http消息既可以是客户端请求也可以是服务器响应。下面说明了http消息类型:http-message = request | response4.1.5消息头http消息头字段为如下形式之一:l 一般报文头l 请求报文头l 响应报文头l 实体报文头l 消息体:如果未使用传输编码,可以把消息体称为实体。l 消息长度l 5.1一般报文头一般报文头字段既可以用于请求消息,又可以用于响应消息。当前的一般报文头字段选项如下:l 缓存控制(cach-control)l 连接l 日期l 标记(pragma)l 传输编码(transfer-encoding)l 升级(upgrade)l 通过(via)4.1.6http方法http方法是http客户机向服务器发出的命令。http 1.0版本仅定义了三种方法如下表,http1.1版本对其作了扩充。方法描述get提取请求中包含的uri所标识的信息head提取与目标uri相关的元信息post发送数据到http服务器(数据应该作为请求中包含的uri所标识的源的一个新从属)options确定与资源相关的选项和(或)要求或者服务器的功能put发送数据到http服务器(数据应该存储于post请求中指明的uri)delete删除delete请求中uri定义的资源trace调用请求消息的远程应用层回送,允许客户机看到是哪一个服务器从客户机接收connect用于连接到一个代理设备并且通过代理到达最终节点(例如:ssl通道)4.1.7状态码http服务器发送状态码以指出请求的成功或者失败。http 1.1版本定义的http状态码如下:4.2传输层4.2.1 运输协议数据单元(tpdu)tpdu,全称transport protocol data unit,是指传送协议数据单元。代表从一个传输实体发送至另一个传输实体的消息。4.2.2 两个重要的传输层协议. tcp协议简介对于tcp/ip来说网络层就是tcp(传输控制协议)。尽管tcp和udp都使用相同的网络层(ip),tcp却向应用层提供与udp完全不同的服务。tcp提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用tcp的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个tcp连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁,以及当一方通信结束后如何断开连接。l 应用数据被分割成tcp认为最适合发送的数据块。这和udp完全不同,应用程序产生的数据报长度将保持不变。由tcp传递给ip的信息单位称为报文段或段(segment)。l 当tcp发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。l 当tcp收到发自tcp连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。l tcp将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,tcp将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)l 既然tcp报文段作为ip数据报来传输,而ip数据报的到达可能会失序,因此tcp报文段的到达也可能会失序。如果必要,tcp将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。l 既然ip数据报会发生重复,tcp的接收端必须丢弃重复的数据。l tcp还能提供流量控制。tcp连接的每一方都有固定大小的缓冲空间。tcp的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。两个应用程序通过tcp连接交换8位字节构成的字节流。tcp不在字节流中插入记录标识符。我们将这称为字节流服务(byte stream service)。如果一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发方每次发送了多少字节。收方可以分4次接收这8 0个字节,每次接收20字节。一端将字节流放到tcp连接上,同样的字节流将出现在tcp连接的另一端。另外,tcp对字节流的内容不作任何解释。tcp不知道传输的数据字节流是二进制数据,还是ascii字符、ebcdic字符或者其他类型数据。对字节流的解释由tcp连接双方的应用层解释。这种对字节流的处理方式与unix操作系统对文件的处理方式很相似。unix的内核对一个应用读或写的内容不作任何解释,而是交给应用程序处理。对unix的内核来说,它无法区分一个二进制文件与一个文本文件。tcp首部格式图示如果不计可选项,tcp首部通常长度为20个字节。除非含有可选项(可选项长为0-40个字节)。tcp协议标题有很多域组成,现将几个比较重要的域作一个简单介绍。(1) 源端端口号(source port number)域和目的地端口号(destination port number)域:前者的16位域用来识别本机tcp;后者的16域用来识别远程机器的tcp。(2) 顺序号(sequence number)域和确认号(acknowledgment number)域:这两个域是tcp标题中两个最重要的域。32位的顺序号域用来指示当前数据块在整个消息中的位置,而32位的确认号域用来指示下一个数据块顺序号,也可间接表示最后接收到的数据块顺序号。顺序号域和确认号域由tcp收发两端主机在执行可靠数据传输时使用。在介绍顺序号(sequence number)和确认号(acknowledgement number)之前,首先要介绍tcp最大消息段大小(maximum segment size,mss)的概念。在建立tcp连接期间,源端主机和终端主机都可能宣告最大消息段大小mss和一个用于连接的最小消息段大小。如果有一端没有宣告mss,就使用预先约定的字节数(如1500,536或者512字节)。当tcp发送长文件时,就把这个文件分割成许多按照特定结构组织的数据块(chunk),除了最后一个数据块小于mss外,其余的数据块大小都等于mss。在交互应用的情况下,消息段通常小于mss,像telnet那样的远程登录应用中,tcp消息段中的数据域通常仅有一个字节。在tcp数据流中的每个字节都编有号码。例如,一个106字节长的文件,假设mss为103字节,第一个字节的顺序号定义为0 顺序号就是消息段的段号,段号是分配给该段中第一个字节的编号。例如,第1个消息段的段号为0,它的顺序号就是0;第2个消息段的段号为1000,顺序号就为1000;第3个为2000,顺序号为2000; ,依此类推。确认号(acknowledgement number)是终端机正在等待的字节号。在这个例子中,当终端机接收到包含字节0999的第1个消息段之后,就回送一个第2消息段数据的第1个字节编号(本例中为1000),这个字节编号就叫做确认号,本例中的确认号就是1000。依此类推。(3) 检查和(checksum)域,它的功能和计算方法同udp中的检查和。(4) 标志(flag)域:6位标志位中的(urgent pointer,urg)标志用来表示消息段中的数据已经被发送端的高层软件标为“urgent(紧急数据)”,紧急数据的位置由紧急数据指针(urgent data pointer)域中的值指定,遇到这种情况时tcp就必须通知接收端的高层软件;确认(acknowledgment,ack)标志用来表示确认号(acknowledgment number)的值是有效的;psh(push)功能标志等于1时接收端应该把数据立即送到高层;rst(reset)标志等于1时表示tcp连接要重新建立;syn(synchronize)标志等于1时表示连接时要与顺序号同步; fin标志等于1时表示数据已发送完毕。(5) 窗口大小(window size)域:16位的窗口域用于数据流的控制。域中的值表示接收端主机可接收多少数据块。对每个tcp连接主机都要设置一个接收缓存,如图15-22 所示,当主机从tcp连接中接收到正确数据时就把它放在接收缓存中,相关的应用程序就从缓存中读出数据。但有可能当从tcp连接来的数据到达时操作系统正在执行其他任务,应用程序就来不及读这些数据,这就很可能会使接收缓存溢出。因此,为了减少这种可能性的出现,接收端必须告诉发送端它有多少缓存空间可利用,tcp就是借助它来提供数据流的控制,这就是设置tcp接收窗口大小的目的。收发双方的应用程序可以经常变更tcp接收缓存大小的设置,也可以简单地使用预先设定的数值,这个值通常是2 kb64 kb。(6) 标题长度(length)域:4位标题长度域用来说明tcp标题的长度,单位是32位组成的字的数目。由于tcp选择域(option)是可选的,所以tcp标题的长度是可变的。这个域通常是空的,因此该域中的值通常是5,标题的长度合计20个字节。. 确立连接tcp连接不是端对端的tdm或者fdm线路连接,因为收发端之间的路由器并不维持tcp连接的任何状态,tcp连接状态完全是留驻在收发两端的主机中。现在让我们来分析tcp连接建立的过程。假设主机a想与主机b建立tcp连接,主机a就发送一个特殊的tcp“连接请求消息段(connection request segment)”给主机b,这个消息段封装在ip数据包中,然后发送到因特网。主机b接收到这个消息段之后就分配接收缓存和发送缓存给这个tcp连接,然后就给主机a回送一个“允许连接消息段(connection-granted segment)”。主机a接收到这个回送消息段之后也分配接收缓存和发送缓存,然后就给主机b回送“确认消息段(acknowledgement segment) ”,这时主机a和主机b之间就建立了tcp连接,它们就可在这个连接上相互传送数据。由于主机a和主机b之间连接要连续交换3次消息,因此把这种tcp连接建立的方法称为三向沟通(three-way handshake)连接法,如图15-25所示。在三向沟通期间,完成分配收发缓存、分配发送端端口号和接收端端口号等工作。. 确认和重传假设主机a和主机b之间有一个tcp连接,当主机a发送一个包含数据的消息段时,它启动一个定时器后就等待主机b对这个消息段的响应。主机a在发送消息段之后期待在一定的时间范围里接收到b的响应,这个期待的时间称为传输等待时间(timeout)。如果在等待时间之内没有接收到确认消息段,主机a就重发包含数据的消息段。 当主机b接收到一个消息段时,延迟若干分之一秒(通常200 ms)之后就回送一个确认消息段。如果主机b接收到的消息段是无顺序的,tcp执行软件会重新整理使数据流符合主机a的发送顺序,它也会去掉重复的消息段。1. udp协议简介因特网为网络应用提供有两种不同的传输协议:用户数据包传输协议(user datagram protocol,udp)和传输控制协议tcp(transfer control protocol)。不同的网络应用使用不同的协议,如图15-20所示。例如,http使用tcp协议,而普通文件传输协议(trivial file transfer protocol,tftp)则使用udp。udp协议不提供端端的确认和重传功能,它不保证信息包一定能到达目的地,因此称为不可靠协议。应用开发人员选择udp时,应用层协议软件几乎是直接与ip通信。 图为传输层协议与相邻层协议之间的关系http(hypertext transfer protocol) 超文本传送协议ftp(file transfer protocol) 文件传输协议telnet 远程联接服务标准协议smtp(simple mail transfer protocol) 简单邮件传输协议rtp(real-time transport protocol) 实时传输协议图传输层协议与相邻层协议之间的关系udp有下述几个特性:(1) udp是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,udp传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,udp把每个消息段放在队列中,应用程序每次从队列中读一个消息段。(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。(3) udp信息包的标题很短,只有8个字节,相对于tcp的20个字节信息包的额外开销很小。(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。虽然udp是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。udp也用在路由信息协议rip(routing information protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。udp广泛用在多媒体应用中,例如,progressive networks公司开发的realaudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的realaudio audio-on-demand protocol协议就是运行在udp之上的协议,大多数因特网电话软件产品也都运行在udp之上。2. udp协议的标题结构udp信息包由udp标题和数据组成。udp的标题结构如图15-21所示,它由5个域组成:源端端口(source port)、目的地端口(destination port)、用户数据包的长度(length)和检查和(checksum)。其中,前4个域组成udp标题(udp header),每个域由4个字节组成;检查和域占据2个字节,它用来检测传输过程中是否出现了错误;用户数据包的长度包括所有5个域的字节数。从发送端发出的4个(word1,2,3以及检查和)16位二进制数之和为1111111111111111,如果接收端收到的这4个16位二进制数之和也是全“1”,就认为传输过程中没有出差错。许多链路层协议都提供错误检查,包括流行的以太网协议,读者也许想知道为什么udp也要提供检查和。其原因是链路层以下的协议在源端和终端之间的某些通道可能不提供错误检测。虽然udp提供有错误检测,但检测到错误时,udp不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。读者也可能会问,收发两端的两个进程是否有可能通过udp提供可靠的数据传输?答案是可以的。但必需要把确认和重传措施加到应用程序中,应用程序不能指望udp来提供可靠的数据传输。4.23. 套接字套接字接口可分为三类:公认端口 注册端口 动态和/或私有端口套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程 应用层通过传输层进行数据通信时,tcp和udp会遇到同时为多个应用程序进程提供并发服务的问题。多个tcp连接或多个应用程序进程可能需要通过同一个 tcp协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与tcpip协议交互提供了称为套接字(socket)的接口。 区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的ip地址、使用的传输层协议(tcp或udp)和使用的端口号。socket原意是 “插座”。通过将这3个参数结合起来,与一个“插座”socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。 socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入socket中,该socket将这段信息发送给另外一个socket中,使这段信息能传送到其他程序中。如图1:4.2.4. tcp连接建立、释放时的握手过程tcp连接的建立:tcp 三次握手:tcp 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 tcp 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:1. 客户端向服务器发送一个syn置位的tcp报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。2. 服务器收到客户端发送过来的syn报文后,向客户端发送一个syn和ack都置位的tcp报文,其中包含它选择的初始序列号y、对客户端的序列号的确认x+1和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。3. .客户端接收到服务器端返回的syn+ack报文后,向服务器端返回一个确认号y+1和序号x+1的ack报文,一个标准的tcp连接完成。tcp 使用类似的握手过程来结束连接。这可确保两个主机均能完成传输并确保所有的数据均得以接收tcp clientflagstcp server1 send syn (seq=x)-syn-syn received2 syn/ack received ack received, connection established w: isn (initial sequence number) of the clientx: isn of the server 1) syn (seq=x)2) syn (seq=y,ack=x+1)3) syn (seq=x+1ack=y+1)p三次握手及原理:第一次:主机a的tcp向主机b的tcp发出连接请求报文段,其首部中的同步比特syn=1,ack=0,同时选择一个序号x即seqx,表明在后面传送数据时的第一个数据字节的序号是x。 表示希望和主机b建立连接第二次:主机b的tcp收到连接请求报文段后,如同意,则发回确认。在确认报文段中应将syn=1,ack=1,确认序号应为ackx+1,同时也为自己选择一个序号seqy。第三次:主机a的tcp收到此报文段后,还要向b给出确认ack=1,其确认序号为acky+1、seqx+1。tcp连接的建立采用三次握手协议。三次握手的具体过程是:第一方向另一方发送连接请求段,另一方回应对连接请求的确认段,第一方再发送对对方确认段的确认。过程如图。图中syn为请求建立连接的标志,三次握手的过程如下:在t1时刻,a向b发送请求建立连接段序列号为x。在t2时刻,b发送应答a的x序列号的请求建立连接的段,该应答段的序列号为y。在t3时刻,a发送对b的应答段的应答,应答号为y+1,表明应答号为y+1的段已接收。至此,连接建立成功连接释放过程:建立一个连接需要三次握手,而终止一个连接要经过4次握手。这由tcp的半关闭(half-close)造成的。既然一个tcp连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个fin来终止这个方向连接。当一端收到一个fin,它必须通知应用层另一端几经终止了那个方向的数据传送。发送fin通常是应用层进行关闭的结果。收到一个fin只意味着在这一方向上没有数据流动。一个tcp连接在收到一个fin后仍能发送数据。而这对利用半关闭的应用来说是可能的,尽管在实际应用中只有很少的tcp应用程序这样做。正常关闭过程如上图所示。首先进行关闭的一方(即发送第一个fin)将执行主动关闭,而另一方(收到这个fin)执行被动关闭。通常一方完成主动关闭而另一方完成被动关闭。上图中的报文段4发起终止连接,它由telnet客户端关闭连接时发出。这在我们键入quit命令后发生。它将导致tcp客户端发送一个fin,用来关闭从客户到服务器的数据传送。当服务器收到这个fin,它发回一个ack,确认序号为收到的序号加1(报文段5)。和syn一样,一个fin将占用一个序号。同时tcp服务器还向应用程序(即丢弃服务器)传送一个文件结束符。接着这个服务器程序就关闭它的连接,导致它的tcp端发送一个fin(报文段6),客户必须发回一个确认,并将确认序号设置为收到序号加1(报文段7)。下图显示了终止一个连接的典型握手顺序。我们省略了序号。在这个图中,发送fin将导致应用程序关闭它们的连接,这些fin的ack是由tcp软件自动产生的。连接通常是由客户端发起的,这样第一个syn从客户传到服务器。每一端都能主动关闭这个连接(即首先发送fin)。然而,一般由客户端决定何时终止连接,因为客户进程通常由用户交互控制,用户会键入诸如“quit”一样的命令来终止进程。我们能改变上边的标识,将左方定为服务器,右方定为客户,一切仍将像显示的一样工作。4.3互联层4.3.1. ipv4报头的大致内容描述ipv4报头有12个必需的字段和可选ip选项字段,位于要发送的数据之前。如果使用ip层已有的库或其他组件,一般不必考虑报头中的大多数字段,但程序代码需要提供源端和目的端地址。1、版本(4比特) ip协议版本已经经过多次修订,1981年的rfc0791描述了ipv4,rcf2460中介绍了ipv6。2、报头长度(4比特) 报头长度是报头数据的长度,以4字节表示,也就是以32字节为单位。报头长度是可变的。必需的字段使用20字节(报头长度为5,ip选项字段最多有40个附加字节(报头长度为15)。3、服务类型(8比特) 该字段给出发送进程建议路由器如何处理报片的方法。可选择最大可靠性、最小延迟、最大吞吐量和最小开销。路由器可以忽略这部分。4、数据报长度(16比特) 该字段是报头长度和数据字节的总和,以字节为单位。最大长度为65535字节。5、标识符(16比特) 原是数据的主机为数据报分配一个唯一的数据报标识符。在数据报传向目的地址时,如果路由器将数据报分为报片,那么每个报片都有相同的数据标识符。标志位配置描述urg紧急指针( u rgent pointer)有效。紧急指针告诉接收方应该从数据包的那一部分开始读取字节。ack确认序号有效。确认号是另一tcp端的下一个序号。psh接收方应该尽快将这个报文段交给应用层。忽略缓冲,直接把数据传送到高层。它用于对时间要求严格的应用程序中。如果接收到带有psh标志的数据包时,不用把数据保存到缓冲区,而直接传送给应用层。rst关闭连接。它用来关闭整个连接,同时它用来拒绝连接。syn同步序号用来发起一个连接。这是一个握手的进程,表明发送方通知tcp另一端其序号。fin发端完成发送任务。用来表明主机已完成传送,fin标志本身并不明确关闭连接。但是,如果两端都发送fin标志的tcp数据包,并且以适当的ack回应,就会关闭连接。6、标志(3比特) 标志字段中有2为与报片有关。 位0:未用。 位1:不是报片。如果这位是1,则路由器就不会把数据报分片。路由器会尽可能把数据报传给可一次接收整个数据报的网络;否则,路由器会放弃数据报,并返回差错报文,表示目的地址不可达。ip标准要求主机可以接收576字节以内的数据报,因此,如果想把数据报传给未知的主机,并想确认数据报没有因为大小的原因而被放弃,那么就使用少于或等于576字节的数据。 位2:更多的报片。如果该位为1,则数据报是一个报片,但不是该分片数据报的最后一个报片;如果该位为0,则数据报没有分片,或者是最后一个报片。7、报片偏移(13比特) 该字段

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论