基于TCPIP的以太网通讯端口的设计.doc

上传人:文库蛋蛋多 文档编号:4143744 上传时间:2023-04-07 格式:DOC 页数:47 大小:657.50KB
返回 下载 相关 举报
基于TCPIP的以太网通讯端口的设计.doc_第1页
第1页 / 共47页
基于TCPIP的以太网通讯端口的设计.doc_第2页
第2页 / 共47页
基于TCPIP的以太网通讯端口的设计.doc_第3页
第3页 / 共47页
基于TCPIP的以太网通讯端口的设计.doc_第4页
第4页 / 共47页
基于TCPIP的以太网通讯端口的设计.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《基于TCPIP的以太网通讯端口的设计.doc》由会员分享,可在线阅读,更多相关《基于TCPIP的以太网通讯端口的设计.doc(47页珍藏版)》请在三一办公上搜索。

1、基于TCP/IP的以太网通讯端口的设计摘 要随着Internet的发展,TCP/IP已经成为通信领域事实上的国际标准。嵌入式系统通过嵌入式TCP/IP协议栈连接Internet,甚至Internet,将具有更好的实用性和巨大的经济效益。在对当前国内外嵌入式TCP/IP协议栈产品现状进行调研的基础上,自主研发了可利用TCP/IP协议进行数据传输的方法。本论文对ARP、ICMP、UDP、TCP等几个协议进行详细剖析,包括协议可配置性分析,并阐述TCP/IP协议栈的实现思路及方法。TCP/IP协议栈采用分层体系结构,严格按照IEEE国际标准,没有任何私有协议,也没有做任何假设,从而确保协议的完整性和

2、一致性。TCP/IP协议栈在设计上充分考虑了移植性,整个协议栈架构在系统抽象层之上,通过系统抽象层屏蔽掉硬件体系结构、底层嵌入式操作系统以及编译器等的差异。关键词:TCP/IP,IP协议栈,IEEE国际标准The Design Of Ethernet Communication Interface On The Basis Of TCP/IPAbstractWith the development of Internet,TCP/IP has virtually become the internationalstandard in the communication field.If the

3、 connection,by means of embedded TCP/IPstack,between the embedded system and Intranet,even Internet can come true,theembedded system will be much more practical and bring about enormous economicbenefits.Based on the research and study of the current situation of the embeddedTCP/IP stack products hom

4、e and abroad,independently the configurable embeddedTCP/IP stack-VIP stack has been developed.According to VIP stack,this paperexpatiates on ARP、ICMPv4、UDP、TCP and other protocols,including ananalysis of protocol configuration,and also offers the implementation method of VIPstack.VIP stack,with the

5、adoption of layered architecture,can be carried out by means ofANSI C language,strictly abiding by international RFC standard without any privateprotocol and any assumption,so as to ensure integrality and consistency of the protocolstack.In the aspect of design VIP stack takes full consideration of

6、the property oftransplantation.The whole VIP stack stands on top of the system abstract layer,whicheliminates the differences of hardware architecture,embedded operating system andcompilers.Keywords:TCP/IP, IP stack, IEEE standard目 录1 绪论11.1 课题背景及目的11.2 国内外研究状况11.3 课题研究方法11.4 论文构成及研究内容12 TCP/IP协议的介绍

7、32.1 TCP/IP以太网的连接方式32.2 TCP/IP以太网的工作原理42.3 TCP/IP层次模型52.4 传输协议的介绍82.4.1 ARP协议82.4.2 IP协议102.4.3 ICMP协议112.4.4 UDP协议132.4.5 TCP/IP协议142.5 TCP连接的建立与终止163 硬件实现183.1 电路设计环境183.2 RTL8019AS芯片简介193.2.1 RTL8019AS内部结构213.2.2 网卡的上电复位和初始化243.2.3 接收和发送以太网帧的实现274 上位机软件设计314.1 Winsock概述314.2 RTL8019AS以太网驱动程序324.3

8、 ARP协议的实现334.4 ICMP的程序实现364.5 ARP协议的程序实现384.6 TCP协议的程序实现39结 论41致 谢42参考文献431 绪论1.1 课题背景及目的近年来,由于互联网技术的发展,宽带网络迅速发展,以太网己成为许多住宅小区的基础设施。以太网技术是当今最成熟的网络技术。从以太网出现以来,它的发展一直受到广泛的重视和大量的技术投入,10M、100M的以太网技术早己获得了广泛的应用,1000M的以太网技术也在形成之中。采用以太网传输媒介,在技术支持和升级方面无需专门的研发投入,这一点是任何现有的现场总线技术,包括RS-485技术,都无法比拟的。同时以太网技术得到广泛的开发

9、技术支持,以太网是应用最广泛的计算机网络技术,几乎所有的编程语言都支持以太网的应用开发,例如Java、Visua1C+、ViusalBasic等。这些编程语言由于被广泛应用,为人们所熟悉,并受到软件开发商的高度重视,具有很好的发展前景,其性能也会不断改进。所以,选择以太网作为传输媒介,不会拘泥于一种开发语言或者软件平台,有更宽的选择自由度。1.2 国内外研究状况当前,以太网技术已深入到国民经济的各个方面。在防盗、工控、仪器仪表数据传递、机电控制单元等领域,以太网技术已成为电子系统智能化的最好平台。以太网的应用也随处可见,通过以太网技术和芯片RTL8019AS的组合应用可以实现很多的功能。使其应

10、用在不同的领域。1.3 课题研究方法1、了解现阶段所使用的数据传输方法,选择性能较好的进行设计应用。2、设计以太网的传输速率以及RTL8019AS内部程序,使其达到设计要求。3、对TCP/IP进行数据端口的规划。4、通过软件编程来实现所要实现的功能。1.4 论文构成及研究内容本系统内实现了真正的无缝连接,对外部来说,由于以太网协议的标准性,通用性,使不同系统间的连接非常的方便,为智能小区的互联和信息共享提供了技术支持。同时还可使用户拥有成本下降。掌握以太网技术的工作人员比较多,而无需专人去学习控制网络的方法。所以,若能够采用以太网传输数据,可以避免单独布线的问题,而且TCP/IP协议作为以太网

11、互联的最广泛的协议,其开放性和兼容性使系统的应用范围具有较大的扩展空间。随着科技的进步,住宅小区要求的提高,直接使用以太网传输数据一定会成为将来的主流技术。2 TCP/IP协议的介绍以太网(Ethernet)最初起源于Xeorx公司建造的一个2.9Mbps的CSMA/CD(载波监听/多路访问)系统,它以无源电缆作为总线来传输数据,在1000M的电缆上连接了100多台计算机,并以曾经在历史上表示传播电磁波的以太(Ether)来命名,这就是如今的以太网的鼻祖。随后DEC、Intel及Xerox合作公布了Ethernet物理层和数据链路层1的规范,称为DIX规范。在此基础上,电气和电子工程师协会(I

12、EEE)制定了IEEE802.3标准。以太网可以支持多种传输介质。以太网按传输介质标准主要可分为三类,粗缆以太网、细缆以太网、双绞线以太网,即10BASE-5、10BASE-2、10BASE-T,近几年又出现了以光纤为传输介质的快速以太网。随着技术的不断发展,以太网的传输速度也得到很大提高,从10Mbps逐渐发展到100Mbps、1000Mbps,甚至10Gbps也提上研究日程。2.1 TCP/IP以太网的连接方式1、拓扑结构总线型:所需的电缆较少、价格便宜、管理成本高,不易隔离故障点、采用共享的访问机制,易造成网络拥塞。早期以太网多使用总线型的拓扑结构,采用同轴缆为传输介质,连接简单,通常在

13、小规模的网络中不需要专用的网络设备,但由于它存在的固有缺陷,己经逐渐被以集线器和交换机为核心的星型网络所代替。星型:管理方便、容易扩展、需要专用的网络设备作为网络的核心节点、需要更多的网线、对核心设的可靠性要求高。采用专用的网络设备(如集线器或交换机)作为核心节点,通过双绞线将局域网中的各台主机连接到核心节点上,这就形成了星型结构。星型网络虽然需要的线缆比总线型多,但布线和连接器比总线型的要便宜。此外,星型拓扑可以通过级联的方式很方便的将网络扩展到很大的规模,因此得到了广泛的应用,被绝大部分的以太网所采用。2、传输介质以太网可以采用多种连接介质,包括同轴缆、双绞线和光纤等。其中双绞线多用于从主

14、机到集线器或交换机的连接,而光纤则主要用于交换机间的级联和交换机到路由器间的点到点链路上。同轴缆作为早期的主要连接介质已经逐渐趋于淘汰。当前以太网支持光纤和双绞线媒体支持下的四种传输速率:10MbPs-10Base-Ethernet(802.3)100MbPs-FastEthernet(802.3u)1000MbPs-GigabitEthernet(802.3z)10Gigabit Ethernet-IEEE802.3ae2.2 TCP/IP以太网的工作原理1、工作过程以太网采用带冲突检测的载波帧听多路访问(CSMA/CD)机制。以太网中节点都可以看到在网络中发送的所有信息,因此,我们说以太网

15、是一种广播网络。当以太网中的一台主机要传输数据时,它将按如下步骤进行: (l)帧听信道上收否有信号在传输。如果有的话,表明信道处于忙状态,就继续帧听,直到信道空闲为止; (2)若没有帧听到任何信号,就传输数据;(3)传输的时候继续帧听,如发现冲突则执行退避算法,随机等待一段时间后,重新执行步骤1 (当冲突发生时,涉及冲突的计算机会发送一个拥塞序列2,以警告所有的节点);(4)若未发现冲突则发送成功,计算机会返回到帧听信道状态;注意:每台计算机一次只允许发送一个包,所有计算机在试图再一次发送数据之前,必须在最近一次发送后等待9.6微秒(以10MbPs运行)。2、以太网协议以太网协议有两种,一种是

16、IEEE802.2/IEEE802.3,还有一种是以太网的封装格式。一个标准的以太网物理传输帧由七部分组成,如表2.1所示。表2.1 以太网物理传输帧结构PRSDDASATYPEDATAFCS同步位分隔位目的地址源地址类型字段数据段帧校验序列7166246-15004PR:同步位。用于收发双方的时钟同步,同时也指明了传输的速率,是56位的二进制数101010101010.。SD:分隔位。表示下面跟着的是真正的数据,而不是同步时钟,为8位的10101011,跟同步位不同的是最后2位是11而不是10。DA:目的地址以太网的地址为48位(6个字节)二进制地址,表明该帧传输给哪个网卡如果为FFFFFF

17、FFFFFF,则是广播地址,广播地址的数据可以被任何网卡接收到。SA:源地址。48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,同样是6个字节。TYPE:类型字段。表明该帧的数据是什么类型的数据,不同的协议的类型字段不同。如:0x0800表示数据为IP包,0x0806表示数据为ARP包,0x814C是SNMP包,0X8137为IPX/SPX包,(小于0x0600的值是用于IEEE802的,表示数据包的长度)。DATA:数据段。该段数据不能超过1500字节。因为以太网规定整个传输包的最大长度不能超过1514字节(14字节为DA,SA,TYPE)。PAD:填充位。由于以太网帧传输的数据包最

18、小不能小于60字节,除去(DA,SA,TYPE 14字节),还必须传输46字节的数据,当数据段的数据不足46字节时,后面补0 (也可以补其它值)。FCS:32位数据校验位。为32位的CRC校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入。由此可见,以太网帧除了数据段的长度不定外,其他部分的长度固定不变。整个传输包的最大长度不能超过1514字节(14字节为DA、SA、TYPE),最小不能小于60字节。除去DA、SA、TYPE 14字节,还必须传输46字节的数据,当数据段的数据不足46字节时需填充;超过1500字节时,需拆成多个帧传送。发送数据时,PR、SD、FCS及填充字段这

19、几个数据段由以太网控制器自动产生;而接收数据时PR、SD被跳过,控制器一旦检测到有效的前序字段(即PR、SD),就认为接收数据开始。2.3 TCP/IP层次模型TCP/IP协议(Transfer Control Protocol/Interface Protocol)叫做传输控制/网际协议,又叫网络通讯协议,是70年代中期美国国防部为ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的州TERNET是目前国际上规模最大的计算机网络,正因为创INTERNET的广泛使用,使得TCP/IP成了事实上的标准。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP)

20、,但TCP/IP实际上是一组协议,包括:TCP(TransPort Conrtol Portocol)传输控制协议3,IP(Internetwoking Protocol)网间协议,UDP(User Datagram Protoeol)用户数据报协议,ICMP(Internet Control Message Protocol)互联网控制信息协议和简单邮件传输协议SMTP(SimpleMailTrnasefrportoeol),SNMP(Simple Network message Protocol)简单网络管理协议,FTP(File Transfer Protocol)文件传输协议,ARP(

21、address resolation Protocol)地址解析协议等许多协议。TCP/IP分成四个概念层次,从上到下依次为应用层,运输层,网络层和链路层。每一层分别由若干不同的协议组成,完成相应的数据处理任务。之所以采取分层的体系结构是为了简化通信协议的复杂性,使其各个任务独立出来,使数据传输更加透明。TCP/IP分层模型的四个协议层分别完成以下的功能:第一层:链路层TCP/IP模型的物理层和数据链路层的任务主要依靠以太网控制芯片RTLSO19AS完成,而网络层、传输层、应用层则由相关的协议软件实现。物理层协调在物理媒体中传送比特流所需的各种功能。物理层涉及到接口和传输媒体的机械的和电气的规

22、约,它还定义了这些物理设备和接口为所发生的传输所必须完成的过程和功能。物理层定义在设备与传输媒体之间的接口特性,传输媒体的类型,传输速率(即每秒发送的比特数)也在物理层定义。换言之,物理层定义一个比特持续时间。物理层还定义在两个设备之间的传输方式,即单工、半双工或全双工。数据链路层将物理层(即原始的传输设施)转换为可靠的数据链路,它使物理层对上层(网络层)看起来好像是不产生差错的。数据链路层把从网络层收到的比特流划分成可以处理的数据单元,即组帧。如果这些帧需要发送给网络上的不同系统,那么数据链路层就要把一个首部加到帧上,以明确帧的发送器和/或接收器。如果这个帧是要发送给在发送器的网络以外的一个

23、系统,则接收器地址就应当是将本网络连接到下一个网络的连接设备的地址。数据链路层增加了一些措施来检测和重传受损伤的帧或丢失的帧,因而将物理层增加了可靠性。它还有防止出现重复帧的机制,差错控制通常是在帧的最后加上一个尾部实现。第二层:网络层该层用来处理机器之间的通信问题。它传送的IP数据报。它接收运输层请求,传输某个具有目的地址信息的分组。该层把分组封装到IP数据报中,填入数据报的首部(报头),使用选路算法来确定是直接交付数据报,还是把它传递给路由器,然后把数据报交给适当的网络接口进行传输。该层还要处理传入的数据报,检验其有效性,使用选路算法来决定应该对数据报进行本地处理还是应该转发。如果数据报的

24、目的机处于本机所在的网络,该层软件就会除去数据报的首部,再选择适当的运输层协议来处理这个分组。最后,网络层还要根据需要发出和接收ICMP差错和控制报文。第三层:运输层运输层的基本任务是提供应用程序之间的通信服务。传送的是运输协议分组。这种通信又叫端到端通信。运输层要系统地管理信息的流动,还要提供可靠的传输服务,以确保数据到达无差错、无乱序。为了达到这个目的,运输层协议软件要进行协商,让接收方回送确认信息以及让发送方重发丢失的分组。运输层协议软件把要传输的数据流划分为小块(分组),把每个分组连同目的地址交给下一层去发送。运输层要从若干程序那里接收数据并把它们送给下一分层。为此,运输层还要对每一个

25、分组附加信息,包括一些代码,标识该分组是由哪个应用程序发送的、要送给哪个应用程序等,还包括一个校验和。接收到分组的机器使用校验和来检验数据4是否出错,并通过目的代码确定将分组发给哪个对应的应用程序。第四层:应用层在这个最高层中,用户调用应用程序通过TCP/IP互连网来访问可用的服务。与各个运输层协议交互的应用程序负责接受和发送数据。每个应用程序选择适当的传输服务类型(包括独立的报文序列和连续字节流两种类型)。应用程序把数据按照运输层的格式要求组织好之后向下层传输。数据在发送端从上到下依次经过各层,由各层加上本层的控制信息再传递给下层,最后在物理层转换成光电信号在传输介质上传送到接收端。在接收端

26、正好相反,数据从下到上依次剥去控制信息交付给相应的进程,完成数据的传输。分层结构如图2.1所示。图2.1 TCP/IP协议层次结构2.4 传输协议的介绍由于该系统的通信部分主要涉及到链路层,网络层和运输层,在此主要介绍这三个层次中的重要协议。包括ARP协议,TCP协议,UDP协议,ICMP协议以及IP协议。2.4.1 ARP协议当源端的IP数据报要发送到目的端时,需要将IP数据报封装成数据链路帧,这时就需要知道目的端的物理地址,完成查找目的物理地址这一功能就需要ARP协议。要在网络上通信,发送方必须要知道接收方的物理地址,地址解析就是将主机lP地址映射为物理地址的过程。A即用于获得在同一物理网

27、络中的主机的物理地址。在解析本地IP地址时,发送方先在A即缓存中查找接收方的物理地址,如果找不到映射的话,就建立一个请求,将自己的IP地址和物理地址包含在请求中,再将请求广播出去,让所有本地主机均能接收并处理。当某台主机断定请求中的IP地址与自己的相同时,直接发送一个ARP答复,将自己的物理地址传给发送方。当ARP报文从一台机器传输到另一台时,必须放入物理帧中。为了识别ARP报文的帧,发送方给帧首部的类型字段分配了一个特殊值,并把ARP报文放在该帧的数据字段中。当每一帧到达计算机时,网络软件通过帧类型5确定其内容。在以太网中,携带ARP报文的帧类型字段是0x0806。这是以太网管理机构分配的一

28、个标准值,其他的网络硬件技术使用了不同的值。A即应答协议报文和ARP请求协议报文类似。不同的是,此时,以太网帧头部的目标MAC地址为发送A即地址解析请求的主机的MAC地址,而源MAC地址为被解析的主机的MAC地址。同时,操作类型字段为l,表示ARP应答数据包,目标MAC地址字段被填充以目标MAC地址。对于一个ARP请求来说,除目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。ARP协议主要完成IP逻辑地址到物理地址的映射,具体可分为静态映射和动态映射,

29、一般采用动态映射。A即软件包由三个组件构成:输出处理模块、输入处理模块和高速缓存控制模块。其中高速缓存控制模块负责维持一个含有物理地址信息的高速缓存表并定期更新表的信息。由于发送站经常与目的站通讯,发送站往往有一个以上的IP数据报要发送到同一个目的地。对发送到同一个主机或路由器的每一个数据报都使用A协议是非常低效的,解决这个问题就是使用高速缓存表。当主机或路由器收到一个IP数据报的相应的物理地址时,就可将此物理地址存储在高速缓存表中。在以太网上解析IP地址时ARP请求和应答分组的格式如表2.2所示。表2.2 用于以太网的ARP请求或应答分组格式以太网目的地址以太网源地址帧类型硬件地址协议类型硬

30、件地址长度协议地址长度DATA发送端以太网地址发送端IP地址目的以太网地址目的IP地址在本系统中只用到了ARP请求和应答。接下来的四个字段是发送端的硬件地址(以太网地址)、发送端的协议地(IP地址)、目的端的硬件地址6和目的端的协议地址。注意在以太网的数据帧报头中和ARP请求数据帧中都有发送端的硬件地址。2.4.2 IP协议因特网协议。它给数据包加上源地址和目的地址,组成IP数据包,然后单独发送出去。IP协议具有分组交换的功能,能把数据包通过不同的路径传送到接收方,提高通信线路的利用率。由于每个IP数据报7的处理都是独立的,它们各自选择自己的路由传输,因此可能后发送的包先到达。接收方也可不按发

31、送顺序接收包。在交换数据前它并不建立会话,另一方面,数据在被收到时,IP不需要收到确认,所以它是不可靠的,它不保证IP数据包能正确到达目的地。IP有一个简单的错误处理算法:丢弃该数据包,然后发送ICMP消息给发送端。任何要求的可靠性必须由它的上层来提供(如TCP)。1、IP数据报的格式IP数据报的一般格式如表2.3所示。表2.3 IP数据报格式版本首部长度服务类型总长度标识标志片偏移生存时间协议首部校验和源地址目的地址可选字段(长度可变)填充数据部分报文中各个字段的含义如下:版本(Version):占4Bits,记录IP的版本编号,目前最常见的IP版本是IPVersion 4,即0100B,后

32、续版本为IP Version 6。首部长度(IHL,IntemetHedaerLength):占4Bits,表示IP报头的长度。IP报头的长度必然是4的倍数,且最大长度为60Bytes,最短长度20Bytes。服务类型(Type of service):占8Bits,包含6个参数。第一个参数Precedence(占3Bits)是用来决定IP封包的优先等级,接下来4个参数Delay、ThroughPut、Rellbaility、Cost则是提供路由器选择路径时的参考,最后一个参数Reserved则是保留使用。总长度(Total Length):占16Bist,用来记录整个IP封包的长度,单位By

33、te。标识码(Identification):占16Bits,记录IP封包的标识码,在封包的分割和重组中,起到重要作用。封包分割标志(Flag):占3Bits,第一位保留,第二位DF,定义IP封包是否可以分割;第三位MF,定义此PI分片是否为原始封包的最后一个IP分片。分片偏移(Fragment Offset):占13Bits,当IP封包切割后,原始封包内IP Payload的数据会分散到每个IP分片之中,Fragment offset便是用来记录IPfragment所载送的是原始Payload的那一段数据。Fragment offset的单位是8Bytes。存活时间(TimetoLive):

34、占8Bits,用来记录IP封包的“存活时间”,限制IP封包在路由器之间转送的次数。当路由器收到Time to Live字段为1的IP封包时,便直接丢弃,不再转送。协议(Protocol):占8Bits,用来记录上层所使用的协议。报头错误校验和(Header Checksum):占16Bist,用来进行数据校验计算,以保证数据正确,数据校验只进行IP报头校验。源IP地址(Source Address):占32Bits,记录来源装置的IP地址。目的IP地址(Destination Address):占32Bits,记录目的装置的IP地址。2、IP数据报的封装当一台机器把一个IP数据报发送到另一台机

35、器时,整个数据报通过网络帧的数据部分传输。IP数据报的封装如表2.4所示。表2.4 IP数据报封装对底层网络来说,数据报类似于其他任何在机器间发送的报文。硬件不识别数据报的格式,也不理解IP目的地址。IP数据报封装在一个帧中,物理网络把包括首部在内的整个数据报都看作数据。2.4.3 ICMP协议互联网控制信息协议。ICMP与IP位于同一层,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。1、ICMP的报文类型:常见的ICMP报文有8类,包括:回应应答:目标接到回应

36、请求,回应:收到;目标不可达:找不到目标;源抑制:由于阻塞,要求主机放慢发送;重定向:由于路由出问题,请求改变路由;请求回应:向目标发送一个请求回应报文;地址掩码请求:用于测试网络或子网;地址掩码响应:用于测试网络或子网;在本系统中只用到Ping类型的ICMP报文。2、ICMP报文的封装ICMP报文需要两级封装。每个ICMP报文放在IP数据报的数据部分中通过互联网传递8,而IP数据报本身放在帧的数据部分中通过物理网络传递。为了标识ICMP,数据报协议字段包含的值为1,ICMP报文的封装如表2.5所示。表2.5 ICMP报文的封装3、Ping类型的ICMP报文Ping(Packet Intern

37、et Gopher分组网间网探测器)利用了ICMP协议的“回应”功能来实现主机/服务器是否有应答的测试。Ping协议分为Ping请求和Ping应答,通过类型域的值来区分,类型域取值。0表示应答,8表示请求。Ping数据包的格式如表2.6所示。表2.6 Ping数据包的格式2.4.4 UDP协议用户数据报协议。UDP全名为(User Datagram Protocol) 9,位于网络层与应用层之间,对上可接受应用层协议所交付的信息,形成UDP数据;对下则是将整个UDP封包交付给IP,成为IP数据包。1、UDP具有以下特性(1)UDP报头可记录封包源端和目的端的连接端口信息,让封包能够正确的送到目

38、的端的应用程序。(2)无可靠性 (Connectionless)的传送特性,这使得UDP传送过程较为简单,但是相对的可靠性较差,在传送过程中若发生问题,UDP并不具有确认、重传等机制,而是必须依赖应用层的协议来处理这些问题。与TCP相比,由于UDP仅提供基本传输层的功能,因此在应用上没有TCP广泛,但使用UDP的应用程序,通常为了降低对计算机资源的要求;而且应用层本身以提供数据完整性的检测机制,因此不必依赖传输层的协议保证;当使用组播和多播等一对多的传送方式时,必须使用UDP。2、UDP数据报首部结构表2.7 UDP报文结构UDP报文结构如表2.7所示。报文中各个字段的含义如下:源端口号:这是

39、在源主机上运行的进程使用的端口号。它有2字节长,这就表示端口号可以从0到65535。若源主机是客户端(当客户进程发送请求时),则在大多数情况下这个端口号就是动态端口号,它由该进程请求,由源主机上运行的UDP软件进行选择。若源主机是服务器端(当服务器进程发送响应时),则在大多数情况下这个端口号是通用端口号。目的端口号:这是在目的主机上运行的进程使用的端口号。它也是2字节。若目的主机是服务器端(当客户进程发送请求时),则在大多数情况下这个端口号是通用端口号。在这种情况下,服务器将它收到的请求分组中的动态端口号复制下来。长度:这是一个2字节字段,它定义了用户数据报的总长度。2字节可定义的总长度是从0

40、到65535字节。但是,最小长度是8字节,它指出用户数据报只有首部而无数据。因此,数据的长度可以从0到65507(即65535-20-8)字节(20字节的IP首部和8字节的UDP首部)。检验和:这个字段用来检验整个用户数据报(首部加上数据)出现的差错。UDP要封装在IP数据报中传输,其封装方法如表2.8所示。表2.8 数据报的封装2.4.5 TCP/IP协议传输控制协议10。与UDP协议同属于运输层,是一种面向连接的传输层协议。它负责把要传送的数据分成若干个数据包,并给每个数据包加上包头,包上有相应的编号,这样可以在数据接收端将数据还原为原来的格式。在传送过程中可能出现数据包丢失或损坏的情况,

41、如果接收方在规定时间内不能收到这些数据包,TCP协议会让发送方重新发送丢失的数据包,直到数据包正确到达接收方或出现网络超时。1、TCP首部分析TCP数据报结构如表2.9所示。表2.9 TCP数据报结构报文中各个字段的含义如下:源端口/目的端口:各占2个字节。运输层服务访问点TSAP,作用是让应用层的各种应用程序都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。发送序号:是本报文段所发送的数据部分第一个字节的序号。确认序号:占4字节。TCP是面向数据流的,TCP传送的报文可看成为连续的数据流。TCP把在一个TCP连接中传送的数据流中的

42、每一个字节都编上一个序号。整个数据的起始序号在连接建立时设置。首部中的序号字段就是指期望收到的数据(下一个消息)的第一字节的序号。确认号:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号,也就是期望收到的下一个报文段首部的序号字段的值。数据偏移:占4比特,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,实际上是TCP报文段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。数据偏移的最大值是60字节,这也是TCP首部的最大长度。保留:占6比特,保留为今后使用,目前置为0。控制比特:一共6个,分别为URG、ACK、PSH、RST、SYN、FIN。作用如下:紧急比特

43、(URG):URG=l时表示加急数据,应尽快发送,此时紧急指针的值为加急数据的最后一个字节的序号。确认比特(ACK):ACK=l时表示确认序号字段有意义。急迫比特(PSH):当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP就可以使用急迫比特。将PSH置1,并立即创建一个报文段发送出去,接收TCP收到急迫比特置1的报文段,就尽快地交付给接收应用进程。复位比特(RST):RST =1表示出现严重差错,必须释放连接,然后再重新建立运输连接。同步比特(SYN):在连接建立时用来同步序号。SYN=1,ACK=0表示连接请求消息。SY

44、N=l,ACK=l表示同意建立连接消息。终止比特(FIN):用来释放一个连接。FIN=1时表示数据已发送完,要求释放连接。窗口大小:占2字节。通知发送方接收窗口的大小,即最多可以发送的字节数。校验和:占2字节。校验和字段检验的范围包括首部和数据两个部分。和UDP一样,在计算校验和时要在TCP报文段的前面加上12字节的伪首部,接收端接收到次报文段后,要加上这个伪首部来计算校验和。选项:长度可变。TCP只规定了一种选项,即最大报文段长度MSS(Maximum segment size)。MSS告诉对方TCP自己缓存能够接收的报文段的数据字段的最大长度是MSS个字节。在连接建立的过程当中,双方都将自

45、己能够支持的MSS写入这一字段。在以后数据传送阶段,MSS取双方提出的较小的那个数值。若主机未填写这项,则MSS默认值为536字节长。TCP报文在传输时必须添加IP报头进行封装,然后交付给IP层传送。TCP数据被封装在一个IP数据报中如表2.10所示。表2.10 IP数据报的封装2.5 TCP连接的建立与终止TCP协议是面向连接的协议。运输连接是用来传送TCP报文的。TCP的运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。连接建立采用的过程叫做三次握手。当主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同步比特SYN应置为1,同时选择一个序号x,表明在后面传送数据时的第

46、一个数据字节的序号是x。主机B的TCP收到连接请求报文段后,如同意,则发回确认。在确认报文段中应将SYN置为1,确认号应为x+1,同时也为自己选择一个序号y。A的TCP收到此报文段后,还要向B给出确认,其确认号为y+l。运行客户进程的主机A的TCP通知上层应用程序,连接己经建立。当运行服务器进程的主机B的TCP收到主机A的确认后,也通知上层应用进程,连接已经建立。此后就可以开始传送数据。在数据传输结束后,通信的双方都可以发出释放连接的请求。假设主机A的应用程序先向去TCP发出连接释放请求,并且不再发送数据。TCP通知对方要释放从A到B这个方向的连接,将发往B的TCP报文段首部的终止F创置1,其

47、序号x等于前面己经传送过的数据的最后一个自己的序号加1。主机B的TCP收到释放连接通知后即发出确认,其序号为x+1,同时通知高层应用进程。此后,主机B不再接收主机A发来的数据。但若主机B还有一些数据要发往主机A,则可以继续发送。主机A只要正确接收到数据,仍应向主机B发送确认。在主机B向主机A的数据发送结束后,其应用进程就通知TCP释放连接。主机B发出的连接释放报文段必须将终止比特FNI置为1,并使其序号y等于前面已经传送过的数据的最后一个字节的序号加1,还必须重复上次己经发送过的ACK=x+l。主机A必须对此发出确认,给出ACK=y+1。这样才把从B到A的反方向连接释放掉。主机A的TCP再向其应用进程报告,整连己经全部释放。3 硬件实现3.1 电路设计环境本设计提供了一个由微处理器8051+以太网控制器11RTL8019AS构成的以太网节点,其中微处理器是使用8051 内核的P89C668 负责 RTL8019AS 初始化及通过控制 RTL8019AS实现网络协议,进行数据的接收和发送

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号