TCP/IP网络通信协议的实现与探讨

时间:2022-07-24 09:28:56

TCP/IP网络通信协议的实现与探讨

摘要:TCP/IP协议(Transmission Control Protocol/Internet Protocol)是目前最成功的网络通信协议,它被用于当今所构筑的最大的开放式网络系统Internet之上就是其成功的证明。TCP/IP协议具有广泛的兼容性和可伸缩性,可连接不同的计算机网络协议、不同的网络设备。TCP/IP事实上己成为网络互联的标准,并成为支持Internet/Intranet的协议标淮。本文就是针对当前流行的TCP/IP网络通信协议的实现进行了具体的研究和探讨。

关键词:TCP/IP协议;Internet;网络通信

1 前言

TCP/IP初步架构的出现源于1964年,冷战时期美国国防部高级研究计划局DARPA提出ARPANET研究计划,目的是希望美国国防部的很多主机、通信控制处理机和通信线路在战争中,如部分遭到攻击而损坏时,其它部分还能正常工作,同时它希望适应从文件传送到实时数据传输的各种应用需求,因此它要求的是一种灵活的网络体系结构,实现异型网的互联(Interconection)与互通(Intercomunication)。

最初ARPANET使用的是租用线路。当卫星通信系统与通信网发展起来之后,ARPANET最初开发的网络协议NCP (Net Control Protocol,网络控制协议)因其在通信可靠性较差的通信子网中出现了不少问题,导致了新的网络协议TCP/IP的出现。虽然TCP协议和IP协议都不是OSI标准,但它们是目前最流行的商业化的协议,并被公认为当前的工业标准或“事实上的标准”。1974年,Kahn最早定义出了的TCP/IP参考模型(TCP/IP Reference Model ); 1985年由Leiner等人对该模型做了进一步的研究;1988年Clark对该模型的设计思想进行了讨论。

今天,Internet己经发展得更加商业化,更加面向消费者,尽管基本目的发生了改变,但其最初的质量标准(也就是开放式、抗毁性和可靠性)依然是必需的。这些特性包括可靠传输数据、自动检测、避免网络发生错误等。更重要的就是TCP/IP是一个开放式的通信协议,开放性就意味着在任何组合间,不管这些设备的物理特征有多大差异,都可以进行通信。

2 标准TCP/IP协议

如同OSI参考模型一样,TCP/IP也是一种分层模型。与OSI参考模型不同的是,TCP/IP参考模型更侧重于互联设备间的数据传送,而不是严格的功能层次划分。TCP/IP通过解释功能层次分布的重要性来做到这一点,但它仍为设计者具体实现协议留下很大的余地。因此,OSI参考模型适用于解释互联网络的通信机制,而TCP/IP更适合做互联网络协议的市场标准。

TCP/IP协议是一套把因特网上的各种系统互联起来的协议组,可以保证因特网上数据准确又快速地传输。TCP/IP协议是一个很大的协议族,通常表示为一个简化的四层模型。这四层分别是应用层、传输层、网络层和链路层。其中一些常用协议在TCP/IP分层模型中所处的位置如图1所示。

图1TCP/IP层次结构图

3IP协议的实现

3.1 IP数据报格式

IP ( Internet Protocol,互联网协议)是TCP/IP协议中一个最重要的协议。IP数据报以32比特为一个计数单位(组),其格式如图2所示。

图21P数据报格式

3.2IP协议的软件实现

IP是TCP/IP协议中最为核心的协议。所有的数据都以IP数据报格式传输。IP协议可以实现无连接数据报传送、数据报路由选择和差错控制的功能。在本课题中,由于单片机资源有限,结合实际需要只实现了IP数据报传送和接收,没有实现路由选择算法和差错控制,同时也不支持IP数据报的分片和重组。

IP协议主要通过IP接收函数和IP发送函数两个函数实现。

①IP发送函数

void ip_send对来自上层的数据,按照IP数据报的结构构造数据报。通过调用ARP处理程序解析对应IP的物理地址。若返回NULL值,则将数据存入一个已定义的结构体WAITE中,并发送ARP请求。若返回对应IP的物理地址,则将数据交给底层以太网驱动程序处理。

②IP接收函数

void ip rcve (UCHAR xdata*inbuf)单片机收到数据包之后,应先对数据包的类型进行判断。如果是IP数据报,则调用该程序。接着再判断其数据域中所使用的协议类型,是ICMP协议调用ICMP处理子程序,是UDP协议调用UDP处理子程序,是TCP协议调用TCP处理子程序,其它返回。程序流程图如图3所示:

图3IP接收过程流程图

3.3 校验和算法

在大多数TCP/IP协议中采用的差错检验方法是校验和,校验和是在分组上附加的信息。校验和能够防止分组在传输时所受到的损伤。在发送端先计算检验和并将得到的结果与分组一起发送过去。接收端对包括校验和的整个分组重复进行同样的计算。若得到的结果正确则接收此分组,否则就将其丢弃。发送端和接收端的校验和计算方法分别如下:

①发送端按以下步骤产生校验和

②接收端按以下步骤产生校验和

下面给出校验和算法的源程序:

UINT Checksum (UCHAR xdata *checks UINT length)//计算校验和

{LONG sum=0; UINT i:UINT xdata *ptr: ptr=(UINT xdata *)check;

for (i=0:i

{sum+=*ptr++;}

if (length&0x01)//表示长度为单数

{sum=sum+((*ptr)&Oxff00);}

sum=(sum&Oxffff)+((sum;16)&Oxffff);//高16位和低16位相加

if(sum&OxffffU000){sum++;}//表示有进位

return((UINT)((sum)&Oxf});}

4TCP协议的实现

4.1 TCP数据报格式

TCP(Transfer Control Protocol,传输控制协议)是传输层最常用的协议,是一个比较复杂的协议。TCP和IP一样,也是TCP/IP协议族中最重要的协议。它可以提供面向连接的、可靠的数据传输服务。TCP数据报文段格式如图4所示:

图4TCP报文段的格式

4.2 TCP协议的实现

TCP协议的实现是整个TCP/IP协议栈中最复杂的一个。TCP协议是面向连接的、端对端的可靠通信协议。TCP采取了很多机制来保证它的可靠性,比如TCP连接的建立与关闭机制、超时重传机制、数据包确认机制、流量控制机制等等。在嵌入式系统中实现TCP协议所要做的就是实现这些机制,当然要在不影响协议栈功能的前提下适当做一下简化。

4.3TCP的超时重传与流量控制机制的实现

当一个TCP连接顺利建立起来后,TCP连接的双方可以互相传递数据了。TCP的可靠传输是靠确认机制来实现的,也就是每发送一个数据包后,只有接收到对方发送确认包后,才能确定该数据包已经成功发送,否则就要重发。

TCP的流量控制是为了协调通信双方的收发速率不均衡而设计的。远端的客户机一般是通用计算机,相对与本地的嵌入式Web Server来说运行速度要快得多。因此,当远端快的发送方向本地慢的接收方发送数据的时候,如果发送速度很快,则会导致本端来不及处理,甚至导致死机。TCP连接建立时,双方会利用TCP首部中的Window窗口字段通报双方的可用窗口。实际上,接收方通报的窗口大小是根据其接收缓存的大小而定,考虑到本系统在使用TCP协议时,只设置了一个中等IP包大小接收缓存,因此接收窗口设为1024。同时,每次接收包的ACK确认时,窗口大小不再动态改变,恒定设置为1024。这样远端主机就会以较慢的传输速率与本端的Web Server进行通信。

5 结论

本文主要针对目前流行的TCP/IP网络通信协议的实现进行研究和探索,由于时间仓促,加上本人对该领域的研究才刚刚起步,所以还存在一些问题值得进一步研究探讨,主要有:

(1) 对于TCP/IP协议,时间的控制非常重要。包括TCP的超时重传,TCP状态的保活等。如果时间处理不当,将影响整个系统的通讯性能。

(2)如何进一步实现TCP/IP对于多点通信以及完整协议栈的实现还有待于进一步研究。

(3) IPv6作为下一代互联网的核心协议,能够提供几乎无限的地址空间,从根本上克服了IPv4中地址空间不足的问题。因此,下一步可增加对IPv6协议的研究与实现。

参考文献

[1] 胡海.嵌入式TCP/IP协议栈研究与实现[D].西南交通大学,2005.8.

[2] 袁晓莉,徐爱均.基于OS-II和TCP/IP的远程温度监测系统.2005.5.

[3] 吴艳光.嵌入式TCP/IP协议栈设计方法的研究 [D].太原理工大学,2004.

[4] 马永力. 基于SX52BD的嵌入式Web服务器的设计与实现.山东大学,2005.

[5]路英娟.TCP/IP协议小议[J].科技情报开发与经济,2004(6).

[6]葛志辉,李陶深.TCP/IP协议的脆弱性与相应的对策.2004.

---------

作者简介:张凯(1980-),男,湖南益阳人,广东省湛江师范学院,助教,主要研究方向:计算机网络工程。(广东 湛江 524300)

联系地址:广东省湛江市遂溪城遂海路182号, 电话:13590059258。

上一篇:迷你没商量――迷你迅雷VS迷你快车性能探底 下一篇:资源发现与标识新技术研究