tcp协议范文

时间:2023-02-25 20:49:25

tcp协议

tcp协议范文第1篇

关键词:TCP/IP协议网络接口层网络层传输层端口应用层

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2012)03-0000-00

因特网是当今世界上最大的信息网络,自80年代以来,它的应用已从军事、科研与学术领域进入商业、传播和娱乐等领域,并于90年代成为发展最快的传播媒介。信息传输和网络互连是根据协议进行的,而因特网使用的就是TCP/IP协议。TCP/IP协议是因特网最基本的协议,是因特网的基础。TCP/IP的全称是Transmission Control Protocol/Internet Protocol的简写,中文译为传输控制协议/因特网互联协议。

1969年,因特网的前身阿帕网(ARPAnet),诞生之初仅连接了4台计算机,供科学家们进行计算机联网实验用。到70年代,ARPAnet已经有了好几十个计算机网络,但是每个网络只能在网络内部的计算机之间互联通信,不同计算机网络之间仍然不能互通。卡恩于1973 年提出开放的网络结构的思想。所谓开放的网络结构,指的是任何类型的网络都可以通过“网络互联结构”与其他网络连接,这是因特网的核心技术思想。为了适应开放的网络结构环境的需要,瑟夫与卡恩共同开发了TCP/IP协议,并于1974年正式提出。TCP/IP是实现不同网络互联的标准,成功地解决了不同硬件平台、不同网络产品和不同操作系统之间的兼容性问题。

TCP/IP协议定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准,它是因特网事实上的国际标准。协议采用了4层的层级结构,层次由低到高依次为:网络接口层、网络层、传输层、应用层。每一层都调用它的下一层所提供的服务来完成自己的需求。

1、网络接口层

网络接口层(通信子网)是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。由于ARPNET的设计者注重的是网络互联,允许网络接口层采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议,因此网络接口层实际上并不是因特网协议组中的一部分。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。[1]

2、网络层

网络层可以接收由网络接口层发来的数据包,并把该数据包发送到传输层;也可以把从传输层接收来的数据包传送到网络接口层。网络层的数据包是不可靠的,因为网络层并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。数据包中含有发送它的主机的地址(源IP地址)和接收它的主机的地址(目IP的地址)。

网络层的协议包括IP协议、ICMP协议、ARP协议、RARP协议等,其中IP协议是网络层的核心协议,完成数据从从源网络传输到目的网络的基本任务。IP协议定义了数据包在网际传送时的格式,目前使用最多的是IPv4版本,这一版本中用32位定义IP地址,可供使用的地址数超过37.2亿,但是仍然不能满足现今全球网络飞速发展的需求,因此IPv6版本应运而生。在IPv6版本中,IP地址共有128位,这样的IP地址数是原IP地址数的296倍,目前来看,IPV6的IP地址是不可能用完的。[2]

3、传输层

传输层提供应用进程间的通信。两个系统之间的应用进程的通信,是用每个信息中的如下四项进行确认的:源IP地址、目的IP地址、源端口号、目的端口号。其中源IP地址和目的IP地址已在网络层的介绍中说明。TCP/IP的端口号是一个软件结构,用来标识本地计算机应用层中各个进程在和运输层交互时的接口。在因特网不同的计算机中,相同的端口号是没有关联的。一个端口号对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、HTTP使用80。客户进程通常使用系统分配的一个随机端口号。[2]

传输层协议主要是传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。TCP协议是一种面向连接的、可靠的的传输机制。通信之前要建立连接,通讯完成时要拆除连接。它提供一种可靠的字节流保证数据完整、无损并且按顺序到达,TCP协议还能尽量连续不断地测试网络的负载并且控制发送数据的速度以避免网络过载,对于一些需要高可靠性的应用,可以选择TCP协议。UDP是一种面向无连接的,不可靠的传输机制。不是它特别不可靠,而是它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。UDP的典型应用是如音频和视频等这样的流媒体,对它们而言,按时到达比可靠性更重要,或者如DNS查找这样的简单查询/响应应用,否则建立可靠的连接所需的额外开销将是不成比例地大。

4、应用层

应用层是大多数与网络相关的程序为了通过网络与其他程序通信所使用的层。数据从与网络相关的程序以这种应用程序使用的格式编码成标准协议的格式并进行传送。来自应用程序的数据一旦被编码成一个标准的应用层协议,它将被传送到TCP/IP协议的下一层。

应用层一般提供面向用户的服务,如HTTP、FTP、SMTP、POP3。HTTP是超文本传输协议,用于浏览网页,FTP是文件传输协议,一般用于下载和上传文件。SMTP是简单邮件传输协议,用来控制信件的发送、中转。POP3是邮局协议第3版本,用于接收邮件。

TCP/IP有一个非常重要的特点,就是开放性,即TCP/IP的规范和Internet的技术都是公开的。目的就是使任何厂家生产的计算机都能相互通信,使Internet成为一个开放的系统。这正是后来Internet得到飞速发展的重要原因。

参考文献

[1]万雅静,黄巍,梁玉凤.网络基础实用教程[C].北京:机械工业出版社,2011:14-16.

[2]刘兵,左爱群.计算机网络基础与Internet应用(第三版)[C].北京:中国水利水电出版社,2006:91-92.

tcp协议范文第2篇

【关键词】 TCP/IP协议 Internet 应用层 传输层 网络层 数据链路层 物理层 网络

TCP/IP协议是Internet各种协议中最基本的协议,也是最重要和最著名的两个协议,即传输控制协议TCP(Transmission Control Protocol)和网际协议IP(InternetProtocol),简单的说,就是主要由底层的lP协议和TCP协议组成。因此,我们经常提到的TCP/IP并不一定是指TCP和lP这两个协议,而往往是指Internet所使用的体系结构或是指整个的TCP/IP协议族。

一、TCP/IP参考模型

TCP/IP协议将Internet分为五个层次,也称为互联分层网模型或互联网分层参考模型。这五个层次分别是应用层(第五层)、传输层(第四层)、网络层(第三层)、数据链路层(第二层)、物理层(第一层)。模型如下图所示:

由于TCP/IP协议在设计时考虑到要与具体的物理传输媒体无关,因此在TCP/IP的标准中并没有对数据链路层和物理层做出规定,而只是将最低的一层取名为网络接口层。这样,如果不考虑没有多少内容的网络接口层,那么TCP/IP体系实际上就只有三个层次:应用层、传输层和网络层。

1、物理层:对应于网络的基本硬件,是Internet的物理构成,例如,PC机、互联网服务器、网络设备等。物理层的任务就是透明的传送比特流。在物理层上所传送数据的单位是比特。传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆等,并不在物理层之内而在物理层的下面。

2、数据链路层:定义了将数据组成正确的帧的规范和在网络中传输帧的规范。帧:是指一串数据,是数据在网络中传输的基本单位。数据链路层的任务是在两个相邻结点间的线路上无差错地传送以帧(frame)为单位的数据。每一帧包括数据和必要的控制信息。在传送数据时,若接收结点检测到所收到的数据中有差错,就要通知发送方重发这一帧直到这一帧准确无误的到达接收结点为止。在每一帧所包含的控制信息中,由同步信息、地址信息、差错控制、以及流量控制信息等。

3、网络层:定义了在Internet中传输的“信息包”的格式,以及从一个源,通过一个或多个路由器到达最终目标的“信息包”转发机制。这里要强调指出,网络层中“网络”二字,已不是我们通常谈到的网络的概念,而是在计算机网络体系结构中的专用名词。

4、传输层:为两个用户进程之间、管理和拆除可靠而又有效的端到端的链接。这一层曾有几个译名,如传送层、传输层或转送层。现在比较一致的意见是译为运输层。在运输层,信息的传送单位是报文。当报文较长时,先要把它分割成若干个分组,然后再交给下一层(网络层)进行传输。

传输层的任务是根据下面的通信子网的特性最佳的利用网络资源,并以可靠和经济的方式,为两端主机(也就是源站和目的站)的进程之间,建立一条运输连接,以透明地传送报文。或者说,运输层向上一层进行的通信的两个进程之间提供一个可靠的端到端的服务,使它们看不见运输层以下的数据通信的细节。在通信子网内的各个交换结点以及连接各通信子网的路由器,都没有运输层。运输层只能存在于通信子网外面的主机之中。运输层以上的各层就不再关心信息传输的问题了。正因为如此,运输层就成为计算机网络体系结构中非常重要的一层。

5、应用层:定义了应用程序使用Internet的规范。应用层是原理体系结构中的最高层,应用层确定进程之间通信的性质以满足用户的需要(这反应在用户所产生的服务请求)。应用层不仅要提供应用进程所需要的信息交换和远地操作,而且还要作为互相作用的应用进程的用户(useragent),来完成一些为进行语义上有意义的信息交换所必须的功能。应用层直接为用户的应用提供服务。需要注意的是,应用层协议不是解决用户各种具体应用的协议。

二、TCP/IP主要协议

TCP/IP是一组通信协议的带名词,是由一系列协议组成的协议簇。它本身至两个协议集:TCP-传输控制协议,IP――互联网协议。网络层、传输层、应用层中使用的TCP、lP主要协议有:

2.1、网络层

TCP/IP网络层包括以下协议:

IP(网间协议)――定义一套在网络中通讯的规则。IP包括地址信息和一些控制信息。IP有两个主要任务:在网络中提供无连接的、尽力而为的数据报传送,以及提供数据报分片和重组以支持具有不同最大传输单元(MTU)的数据连路。IPv4是当前网络中使用的版本;IPv6是新的协议版本。

ARP(地址解析协议)――允许主机动态的发现对应于特定IP网络层地址的MAC(传输媒体访问控制)地址。给定网络中的两个设备,若要通信,它们必须要知道对方设备的物理地址。

RARP(逆地址解析协议)――用于将MAC地址以射到lP地址。未知其IP地址的无盘工作站在启动时可使用RARP,它在逻辑上是ARP的逆过程。RARP依赖于具有MAC地址到lP地址映射表项的RARP服务器。

ICMP(网际控制报文协议)――用以将错误以及其他有关lP分组处理的信息报告给源站。

2.2 传输层

TCP/IP传输层中定义了一下两个传输层协议:

TCP(传输控制协议)――提供IP网络中面向链接的、端到端的可靠数据传输。

TCP使用三次握手机制建立连接。三次握手通过允许各方对初始序列号达成一致来使得连接两端同步。此机制也保证了各方已准备好数据发送/接收,并且知道对方也已准备好。使用此机制保证会话建立期间和会话终止后不会传输或重传分组。

UDP(数据报协议)――作为IP和上层进程接口的无连接协议。与TCP不同,UDP并未给IP加入可靠性、流量控制或差错恢复等功能。由于UDP的简单性,UDP头比TCP包含更少的字节,同时消耗更少的网络开销。

TCP和UDP使用协议端口号来相互区分运行在同一设备上的多个应用。端口号是TCP和UDP段的一部分,用来识别数据段属于哪个应用。众所周知的或标准的端口号被分配给各种应用,以使得TCP/JP协议的不同实现可以互操作。这些众所周知的端口号的例子包括一下几种:

①FTP(传输协议)TCP端口20(数据)和端口21(控制)。②Telnet TCP端口23。③TFTP(普通文件传输协议)UDP端口69。

2.3 应用层

在TCP/IP协议中,对应OSI模型的上面三层并成一层,称为应用层。这里由许多应用层协议,它们代表多种应用,主要包括一下几种:①FTP(文件传输协议)和TFTP(普通文件传输协议)用于传输大量数据。②SNMP(简单网络管理协议)用于网络管理,报告网络异常,并设置网络阈值。③SMTP(简单邮件传输协议)提供电子邮件服务。④DNS(域名系统)讲网络节点名转换成网络地址。

三、lP协议和TCP协议所提供的服务分析

3.1 lP协议服务分析

3.1.1 不可靠的投递服务

lP协议提供不可靠的、尽力的、无连接的数据投递服务,它无法保证数据报投递的结果。在传输的过程中,数据报可能会丢失、重发、延迟和乱序等,但是IP服务的本身却不关心这些结果,也不讲这些结果通知收发双方。

3.1.2 无连接的投递服务

每个数据报独立处理和传输,因此,由一台主机发出的数据报序列。可能取不同的路径,甚至其中的一部分数据报会在传输过程中丢失。

3.1.3 尽力的投递服务

lP协议软件决不简单的丢弃数据报,只要有一线希望,就向前投递;尽力投递的另一种体现方法是lP协议软件执行数据报的分段,以适应具体的传输网络,数据报的合段则由最终节点的lP模块来完成。

3.2 TCP协议服务分析

3.2.1 面向流的投递服务

TCP协议在IP协议软件提供的服务基础啊上,支持面向链接的、可靠的、面向流的投递服务。应用程序之间传输的数据可被视为无结构的字节流(或位留),流投递服务保证收发的字节顺序完全一致。

3.2.2 面向链接的投递服务

流传输之前,TCP收发模块之间需建立链接(类似虚电路),其后的TCP报文在此连接基础上传输。TCP连接报文通过lP数据报进行传输,由于IP数据报的传输导致ARP地址映射表产生,从而保证了后继的TCP报文可以具有相同的路径。

3.2.3 可靠地投递服务

发送方TCP模块在形成TCP报文的同时,形成一个所谓的“累计核对”。“累计核对”类似校验和,并随同TCP报文一起传输。接收方TCP模块根据该校验和判断传输的正确性。如果传输不正确,接收方简单的丢弃该TCP报文,否则进行应答。发送方如果在规定的时间内未能获得应答报文,讲自动进行重传操作。

四、结束语

tcp协议范文第3篇

关键词:P2P;CDP;NAT 穿透;基于UDP的TCP

中图分类号:TP317文献标识码:A 文章编号:1009-3044(2007)03-10736-02

1 引言

随着互联网应用广泛推广,基于各种P2P网络技术的产品也越来越多的出现在我们的视野当中。从最早的Napster 到现在的Bittorrent、eMule、skype等产品,P2P这种网络应用模式已经从各个方面深入人心。这些产品在网络实现技术上,都以各自的方法解决着同样面临的一个问题,如何让他们的软件产品在各异的网络拓扑结构中顺利的进行P2P通信。

众所周知,在当今的网络拓扑结构中,普遍使用NAT设备来进行网络地址转换,那么如何让应用程序跨越这些NAT设备进行全双工通信,就成为非常重要的问题。实现跨越NAT 通信有很多种办法:首先是通过服务器进行转发,这是比较粗暴的方法,在用户量较大时,转发服务器需要付出相当大的代价;其次,可以使用NAT 穿透技术。而在NAT 穿透中,UDP 穿透的成功率比起TCP 穿透要高出许多[1]。因此在UDP 协议上构建一些大型的网络应用程序可能会成为很多人的需求。

由于UDP协议本身存在通信不可靠的缺点,对于基于UDP 进行可靠通信的需求就浮现出来了。目前在网络上有许多人正在做着这一工作,UDT、RakNet、eNet 等都是构建在UDP之上的网络可靠通信开发库,但这些库都是针对一些特殊应用进行设计的,不具备通用性。本文提出的CDP协议是在UDP基础之上实现的TCP协议。同时具备了TCP的通用、高效和UDP的高穿透成功率,并提供了简单易用的应用程序开发接口。

2 CDP设计目标

CDP主要的目标就是在UDP 层之上实现TCP 的协议算法,使得应用程序能够在UDP 层之上获得通用、可靠、高效的通信能力。CDP 网络开发库所实现的算法,都来自久经考验的TCP协议算法,以下协议设计部分主要讲解CDP实现中与TCP标准不同的部分。

3 CDP协议设计

CDP协议主要在以下几个方面与TCP有所不同:协议格式、连接建立(NAT UDP PUNCH模式)、保活机制、MTU发现与MSS通告。其他部分,如报文传输、流量控制、超时重传、拥塞控制等,均参照TCP协议实现[2]。下面将对几个不同部分分别进行说明。

3.1 协议格式

CDP的实现的算法虽然与TCP 实现的算法是大致相同的,但CDP 的协议格式只是从TCP协议格式获得参考,但并不完全与他相同,CDP协议格式如图1所示。

图中各字段意义分别为:

4 位首部长度:表示用户数据在数据包中的起始位置。

LIV:连接保活标志。

ACK:确认序号有效。

PSH:接收方应该尽快将这个报文段交给应用层。

RST:重置连接。

SYN:同步序号,用来发起一个连接。

FIN:发端完成发送任务。

16 位窗口大小:接收端可接收数据的窗口大小。

选项:只有一个选项字段,为最长报文大小,即MSS。CDP 选项格式与TCP 选项格式一致,kind=0 时表示选项结束,kind=1 时表示无操作,kind=2 时表示最大报文段长度。如下图:

图2 CDP选项字段

数据:用户通过CDP 传输的数据。

3.2 连接建立(NAT UDP PUNCH模式)

一般情况下,CDP连接的建立过程与TCP相同。但当CDP工作在UDP NAT 穿透(NAT UDP PUNCH)模式下时,在三次握手之前,先要向对端NAT 端口及预测端口以默认2ms的间隔发送默认为10个LIV报文,一来用于打开自已的NAT 端口,二来是用于进入对端NAT端口。默认值可以由用户程序设置。这时的LIV 报文中初始序号及确认序号都为0。

当接收到对端LIV 报文后,CDP立即停止LIV 报文发送,发出SYN 报文进行连接建立。这时有两种可能:一是对端直到接收到该SYN 报文,都没有接收到LIV 报文,或是刚接收到LIV报文,但没有来得及发送SYN 报文,此时将会和一般模式下连接建立的过程一致,经历三次握手;二是对端在接收到该SYN 报文之前,也已经发送SYN报文,此时双方都需要对SYN 报文段进行确认。

3.3 半打开连接及连接保活

半打开连接是指对端异常关闭,如网线拔掉、突然断电等情况导致一端关闭,而另一端却认为连接仍处于打开当中,这种情况称之为半打开连接。CDP中的一个TDP SOCKET描述符由本地IP、本地端口、远端IP、远端端口唯一确定。当远端客户端连接请求到来时,服务端将接收到一个新的CDP SOCKET描述符,当这一个描述符唯一确定信息已经存在时,对新的连接请求发送RST 报文段,通知其重置连接请求。对于旧的连接,由保活机制自动发现是否为半打开连接,如果是半打开连接,则自动关闭该连接。CDP的RST 报文与TCP 中的RST 报文是不一样的。

连接建立之后,CDP 连接需要启动保活机制。TCP 连接在没有数据通信的情况下也能保持连接,但CDP 连接不行。CDP 连接在一定时间内如果没有数据交互的话,将主动发送保活LIV报文段。这个时间根据CDP 连接工作模块不同有所差异,在NAT UDP PUNCH 模式下,默认值为1 分钟(大多数的NAT中,UDP会话超时时间为2-5分钟左右);而在常规模块下这个时间段默认值为5分钟。默认值可以由用户程序设置,用户程序需要指明两种模式下的保活时间周期。

3.4 路径MTU 发现及MSS 通告

CDP连接建立过程中会通告初始MSS(Maximum Segment Size),这个值可以由用户程序进行设置。但这个初始值是静态的,当通信双方跨越多个网络时,使用设置的MSS可能导致传输的IP 报文分片的产生。为了避免分片,CDP在数据传输过程中进行动态的路径MTU(Maximum Transmission Unit)发现,并进行MSS 的更新及通告。

CDP创建UDP SOCKET时,即将IP选项设置为不允许分片: Setsockopt(clientSock, IPPROTO_IP, IP_DONTFRAGMENT, (char*)&dwFlags, sizeof(dwFlag) )。

在发送数据时先以当前MSS 大小进行发送,如果返回值为错误码WSAEMSGSIZE(10040),则表示为报文尺寸大于MTU,需要进行IP 分片传输。此时,缩减MSS大小再次发送,直至不再返回错误码WSAEMSGSIZE(10040)。当MSS 变更并能成功发送报文后,需要向对端通报新的MSS 值。每次MSS 缩小后,默认隔30 秒,CDP 将默认扩大MSS 大小,以检查是否路径MTU 是否增大了,之后隔30*2 秒、30*2*2 秒进行检测,如果三次都未发现MTU 增大则停止进行检测。网络中MTU 值的个数是有限的[3]。因此MSS 的扩大及缩减,可依据一些由近似值按序构成的表,依照此表索引进行MSS 值的扩大与缩减计算。

CDP 中MSS 与MTU 之间关系的计算公式如下:MSS = MTUC20(IP首部)C8(UDP首部)C12(CDP首部)。

4 CDP应用程序开发接口(CDP Socket API)

使用CDP进行网络程序开发是非常容易的,它API与标准socket API是非常相似的,对应功能的函数名称都相同,只是CDP的所有API都处于名称空间CDP 之下。此程序库的实现也参考了BSD Socket的实现。CDP Socket API列表如下:

5 结束语

本文提出了一种基于UDP协议之上的TCP协议实现――CDP协议,并对现实的一些关键部分进行了讨论,最后给出了CDP协议的应用开发接口。CDP协议同时具备了TCP通用、高效的特点,有利用的UDP的NAT穿透特性,可广泛应用与构建各种P2P网络应用。

参考文献:

[1]B. Ford, P. Srisuresh, D. Kegel, Peer-to-Peer Communication across Network Address Translators [EB/OL], draft-ford-midcom-p2p,/pub/net/p2pnat, June 2004.

[2]W.Richard Stevens, 范建华,译,TCP/IP详解――卷Ⅰ:协议[M],机械工业出版社,2000.4.1.

[3]J. Mogul, S. Deering, "Path MTU Discovery"[S], RFC1191, November 1990.

tcp协议范文第4篇

关键词: 嗅探器;IP 漏洞;TCP 劫持;拒绝服务攻击

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)16-21230-04

TCP/IP Protocol Loophole Analysis and Prevention

WANG Xian-feng

(The Department of the Information Engineering of Lu'an Vocational and Technical College,Lu'an 237158,China)

Abstract:his paper is TCP/ IP's application to secure area.It analyzes several problems about a few of critical parts within,TCP/IP in details,discloses its security leakage and gives some constructive solutions in order to pave a basis on the further research.

Key words: Sniffer;IP Leakage;TCP Hijacking;Denial of Service attacks

Internet/ Intranet 是基于TCP/IP 协议簇的计算机网络。尽管TCP/IP 技术获得了巨大的成功,但也越来越暴露出它在安全上的不足之处,这是由于TCP/ IP 协议簇在设计初期基本没有考虑到安全性问题而只是用于科学研究。但随着应用的普及,它不仅用于一些要求安全性很高的军事领域,也应用于商业领域,因而对其安全性的要求也越来越高。下面从TCP/IP协议簇本身逐层来看它的安全漏洞。

1 TCP/IP 协议组的基本原理

TCP/IP分为4个层次,分别是应用层、传输层、网际层和物理网络接口层,如下图所示。

其中物理网络接口层相当于OSI的物理层和数据链路层;网际层与OSI 的网络层相对,但由于它考虑到了网际网环境,因而具有更强的网际环境通信能力,在网际层包含有四个重要的协议,它们是IP、ICMP、ARP、RARP;传输层与OSI 的传输层相对应,包含TCP 和UDP 两个协议;应用层相对于OSI的会话层、表示层和应用层功能,主要定义了FTP、TELNET、及E-MAIL 等应用服务。下面我们简要分析中间两层的有关协议。

2 链路层存在的安全漏洞

在以太网中,信道是共享的,数据在网络上是以很小的称为“帧”的单位传输的。如果局域网是由一条粗网或细网连接成的,那么数字信号在电缆上传输信号就能够到达线路上的每一台主机。当使用集线器的时候,发送出去的信号到达集线器,由集线器再发向连接在集线器上的每一条线路,这样在物理线路上传输的数字信号也就能到达连接在集线器上的每个主机了。也就是说任何主机发送的每一个以太帧都会到达别的与该主机处于同一网段的所有主机的以太网接口。当数字信号到达一台主机的网络接口时,根据CSMA/ CD 协议,正常状态下网络接口对读入数据进行检查,如果数据帧中携带的物理地址是自己的或者物理地址是广播地址,那么就会将数据帧交给IP 层软件。当数据帧不属于自己时,就把它忽略掉。如果稍做设置或修改,使主机工作在监听模式下的话就可以使以太网卡接受不属于它的数据帧。或者采用虚拟设备开发技术,动态加载虚拟网络设备(VxD 或WDM) 驱动模块,驻留内存,实施侦听使网卡捕获任何经过它的数据。从而达到非法窃取他人信息(如密码、口令等) 的目的。这类软件被称为嗅探器(Sniffer),如NeXRay,Sniffit,IPMan 等。解决该漏洞的对策是:改用交换式网络拓扑结构,在交换式以太网中,数据只会被发往目的地址的网卡,其它网卡接收不到数据包。但交换机的成本比较高。或者采用加密传输数据,使对方无法正确还原窃取的数据。同时可以安装检测软件,查看是否有Sniffer 在网络中运行,做到防范于未然。

3 ICMP漏洞

ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机. 例如,在1999年8月海信集团“悬赏”50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!可见,ICMP的重要性绝不可以忽视!

比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。

虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。

对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。

设置ICMP数据包处理规则的方法也有两种,一种是在操作系统上设置包过滤,另一种是在主机上安装防火墙。

4 IP漏洞

IP 协议运行于网络层。在TCP/ IP 协议中, IP 地址是用来作为网络节点的惟一标志,但是节点的IP 地址又不是固定的,是一个公共数据,因此攻击者可以直接修改节点的IP 地址,冒充某个可信节点的IP 地址攻击,或者编程(如Raw Socket) ,实现对IP 地址的伪装。

4.1 TCP 劫持

也许对连接于Internet的服务器的最大威胁是TCP劫持入侵(即我们所知的主功嗅探),尽管顺序号预测法入侵和TCP劫持法有许多相似之处,但TCP劫持之不同在于黑客将强迫网络接受其IP地址为一个可信网址来获得访问,而不是不停地猜IP地址直至正确。TCP劫持法的基本思想是,黑客控制了一台连接于入侵目标网的计算机,然后从网上断开以让网络服务器误以为黑客是实际的客户端。下图显示了一个黑客怎样操作一个TCP劫持入侵。

成功地劫持了可信任计算机之后,黑客将用自己的IP地址更换入侵目标机的每一个包的IP地址,并模仿其顺序号。安全专家称顺序号伪装为“IP模仿”,黑客用IP模仿在自己机器上模拟一个可信系统的IP地址,黑客模仿了目标计算机之后,便用灵巧的顺序号模仿法成为一个服务器的目标。

黑客实施一个TCP劫持入侵后更易于实施一个IP模仿入侵,而且TCP劫持让黑客通过一个一次性口令请求响应系统(如共享口令系统),再让一个拥有更高安全性的主机妥协。通过口令系统也让黑客穿过一个操作系统而不是黑客自己的系统。

最后,TCP劫持入侵比IP模仿更具危害性,因为黑客一般在成功的TCP劫持入侵后比成功的IP模仿入侵后有更大的访问能力。黑客因为截取的是正在进行中的事务而有更大访问权限,而不是模拟成一台计算机再发起一个事务。

4.2 源路由选择欺骗

TCP/ IP 协议中,为测试目的,IP数据包设置了一个选项―――IP Source Routing,该选项可以直接指明到达节点的路由。攻击者可以冒充某个可信节点的IP 地址,构造一条通往某个服务器的直接路径和返回的路径,利用可信用户作为同往服务器的路由中的最后一站,对其进行攻击。在TCP/IP协议的两个传输层协议TCP 和UDP中,由于UDP 是面向非连接的,不需初始化的连接过程,所以UDP 更容易被欺骗。

4.3 非同步入侵

TCP 连接需要同步数据包交换,实际上,如果由于某种原因包的顺序号不是接收机所期望的,接收机将遗弃它,而去等待正确顺序号的数据包。黑客可以探明TCP协议对顺序号的要求以截取连接。在这种情况下,黑客或骗取或迫使双方终止TCP 连接并进入一个非同步状态,以使双方再也不能直接交换数据。黑客再用第三方主机(另一个连接于物理媒介并运行TCP 包的计算机)来截获实际中的数据包,经过窜改或伪造,第三方产生的数据包就可以模仿连接中的系统本应交换的数据包,从而以假乱真了。其过程如下图所示。

过程图在非同步状态下,客户端A 向服务器发送的数据包其序列号不是服务器所期望的,服务器便将其抛弃。而黑客主机C拷贝(截获) 服务器丢弃的包,修改其中的数据,并配以正确的序列号,以A 的名义发送出去,服务器便会接收。当然从服务器B到客户端A也存在同样的情况。从而黑客便相当于在客户和服务器之间充当的角色,来往于客户和服务器之间的数据都要经过它。

4.4 Land 攻击

land 攻击是一种使用相同的源和目的主机和端口发送数据包到某台机器的攻击。结果通常使存在漏洞的机器崩溃。在Land攻击中,一个特别打造的SYN包中的原地址和目标地址都被设置成某一个服务器地址,这时将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉。对Land攻击反应不同,许多UNIX实现将崩溃,而 Windows NT 会变的极其缓慢(大约持续五分钟)。

4.5 SYN 洪水攻击

拒绝服务攻击的一种,使用TCP SYN 报文段淹没服务器。利用TCP建立连接的三个步骤的缺点和服务器

端口允许的连接数量的限制,窃取不可达IP 地址作为源IP地址,使得服务器得不到ACK而使连接处于半开状态,从而阻止服务器响应别的连接请求。尽管半开的连接会因为过期而关闭,但只要攻击系统发送的SpoofedSYN 请求的速度比过期的快就可达到攻击的目的。此方法是一种重要的攻击ISP ( Internet Service Provider) 方法,这种攻击并不会损坏服务,而是削弱服务器的功能。

4.6 防范措施

(1)对于来自网络外部的欺骗来说,可以在局部网络的对外路由器上加一个限制,做到只要在路由器里面设置不允许声称来自于内部网络中的机器的数据包通过就行了。当然也应该禁止(过滤) 带有不同于内部资源地址的内部数据包通过路由器到别的网上去,以防止内部员工对别的站点进行IP 欺骗。

(2)当实施欺骗的主机在同一网络内时,不容易防范。可以运用某些入侵检测软件或是审计工具来查看和分析自己的系统是否受到了攻击。

(3)对IP 包进行加密,加密后的部分作为包体,然后再附上一个IP 头构成一个新的IP 包。

(4)提高序列号的更新速率,或是增强初始序列号的随机性,使攻击者无法猜测出正确的序列号。

(5)对于源路由选项欺骗,因该禁止带有源路由的IP包进入内部网。

(6)对于Land 攻击,可以通过配置路由器或防火墙将外部接口上到达的含有内部源地址的数据包过滤掉。

(7)对于SYN 的洪水攻击,可以给内核加一个补丁程序或使用一些工具对内核进行配置。一般的做法是,使允许的半开连接的数量增加,允许连接处于半开状态的时间缩短。但这些并不能从根本上解决问题。实际上在系统内存中有一个专门的队列包含所有的半开连接,这个队列的大小是有限的,因此只要有意使服务器建立过多的半开连接就可以使服务器的这个队列溢出,从而无法响应其它客户的连接请求。

5 ARP欺骗

Arp是一种将IP转化成以IP对应的网卡的物理地址的一种协议,或者说ARP协议是一种将IP地址转化成MAC地址的一种协议,它靠维持在内存中保存的一张表来使IP得以在网络上被目标机器应答。ARP就是IP地址与物理之间的转换,当你在传送数据时,IP包里就有源IP地址、源MAC地址、目标IP地址,如果在ARP表中有相对应的MAC地址,那么它就直接访问,反之,它就要广播出去,对方的IP地址和你发出的目标IP地址相同,那么对方就会发一个MAC地址给源主机。而ARP欺骗就在此处开始,侵略者若接听到你发送的IP地址,那么,它就可以仿冒目标主机的IP地址,然后返回自己主机的MAC地址给源主机。因为源主机发送的IP包没有包括目标主机的MAC地址,而ARP表里面又没有目标IP地址和目标MAC地址的对应表。所以,容易产生ARP欺骗。例如:我们假设有三台主机A,B,C位于同一个交换式局域网中,监听者处于主机A,而主机B,C正在通信。现在A希望能嗅探到B->C的数据, 于是A就可以伪装成C对B做ARP欺骗――向B发送伪造的ARP应答包,应答包中IP地址为C的IP地址而MAC地址为A的MAC地址。 这个应答包会刷新B的ARP缓存,让B认为A就是C,说详细点,就是让B认为C的IP地址映射到的MAC地址为主机A的MAC地址。 这样,B想要发送给C的数据实际上却发送给了A,就达到了嗅探的目的。我们在嗅探到数据后,还必须将此数据转发给C, 这样就可以保证B,C的通信不被中断。克服此问题的方法是:让硬件地址常驻内存,并可以用ARP 命令手工加入(特权用户才可以那样做);也可以通过RARP服务器来检查客户的ARP 欺骗。因为RARP 服务器保留着网络中硬件地址和IP 的相关信息。

6 路由欺骗

路由协议(RIP) 用来在局域网中动态路由信息,但是各节点对接收到的信息是不检查它的真实性的(TCP/ IP 协议没有提供这个功能),因此攻击者可以在网上假的路由信息,利用ICMP 的重定向信息欺骗路由器或主机,伪造路由表,错误引导非本地的数据报。另外,各个路由器都会定期向其相邻的路由器广播路由信息,如果使用RIP 特权的主机的520 端口广播非法路由信息,也可以达到路由欺骗的目的。解决这些问题的办法是:通过设置主机忽略重定向信息可以防止路由欺骗;禁止路由器被动使用RIP和限制被动使用RIP的范围。

7 结束语

通过对TCP/IP 协议的分析,我们不难发现其在设计和实现上存在的种种缺陷,这是由于TCP/IP协议在设计初期只是用于科学研究,而未考虑到当今会如此广泛地被应用。黑客或黑客工具往往利用这些漏洞,对网络进行破坏。了解这些漏洞并熟悉相应的对策,做到知己知彼,我们才能构建一个安全稳固的网络。

参考文献:

[1] 张小斌,严望佳.黑客分析与防范技术[M].北京:清华大学出版社,2005.

[2] 闫宏生.计算机网络安全与防护[M].北京: 电子工业出版社,2007.

[3] (美)科默,林瑶,等.译.用TCP/IP进行网际互连.第1卷.原理、协议与结构(第五版) [M].北京:电子工业出版社,2007.

tcp协议范文第5篇

关键词=TCP/IP协议;网络安全;防范

1 引言

随着信息技术的迅猛发展,计算机网络技术已经广泛地应用到名个领域。Internet,Intranet是基于TCP/IP协议簇的计算机网络。TCP/IP协议簇在设计初期只是用于科学研究领域,因而没有考虑安全性问题。但随着Internet应用迅猛发展和应用的普及,它不仅用于安全性要求很高的军事领域,也应用于商业及金融等领域,因而对其安全性的要求也越来越高。对TCP/IP协议及其安全性进行分析和研究就显得尤为重要。

2 TCP/IP的工作原理

TCP/JP协议是一组包括TCP协议和P协议、UDP协议、ICMF协议和其他协议的协议组。TCP/IP协议共分为4层,即应用层、传输层、网络层和数据链路层。其中应用层向用户提供访问internet的一些高层协议,使用最为广泛的有TELNET、FTP、SMTP、DNS等。传输层提供应用程序端到端的通信服务。网络层负责相邻主机之间的通信。数据链路层是TCP/IP协议组的最低一层,主要负责数据帧的发送和接收。其工作原理是:源主机应用层将一串应用数据流传送给传输层,传输层将其截成分组,并加上TCP报头形成TCP段送交网络层,网络层给TCP段加上包括源主机和目的主机IP地址的IP报头,生成一个IP数据包,并送交数据链路层;数据链路层在其MAC帧的数据部分装上IP数据包,再加上源主机和目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发往目的主机或IP路由器。目的主机的数据链路层将MAC帧的帧头去掉,将IP数据包送交网络层:网络层检查IP报头,如果报头中校验和与计算结果不一致,则丢弃该IP数据包。如果一致则去掉IP报头,将TCP段送交传输层;传输层检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据,若正确,则向源主机发确认信息,若不正确则丢包,向源主机要求重发信息,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序。这样目的主机接收到的字节流,就像是直接来自源主机一样。

3 TCP/IP各层的安全性分析

3.1 数据链路层

数据链路层是TCP/IP协议的最底层。它主要实现对上层数据(IP或ARP)进行物理帧的封装与拆封以及硬件寻址、管理等功能。在以太网中,由于信道是共享的,数据以“帧”为单位在网络上传输,因此,任何主机发送的每一个以太帧都会到达与其处于同一网段的所有主机的以太网接口。当数字信号到达一台主机的网络接口时,根据CSMA/CD协议,正常状态下,网络接口对读入数据进行检查,如果数据帧中携带的物理地址是自己的或者物理地址是广播地址,那么就会将数据帧交给IP层软件。当数据帧不属于自己时,就把它忽略掉。然而,目前网络上存在一些被称为嗅探器(sniffer)的软件,如NeXRay、Sniffit、IPMan等。攻击方稍作设置或修改,使网卡工作在监听模式下,则可达到非法窃取他人信息(如用户账户、口令等)的目的。防范对策:(1)装检测软件,查看是否有Sniffer在网络中运行,做到防范于未然。(2)对数据进行加密传输,使对方无法正确还原窃取的数据,并且对传输的数据进行压缩,以提高传输速度。(3)改用交换式的网络拓扑结构,使数据只发往目的地址的网卡,其他网卡接收不到数据包。这种方法的缺点是交换机成本太高。

3.2 网络层

3.2.1 IP欺骗

在TCP/IP协议中,IP地址是用来作为网络节点的惟一标志。IP协议根据IP头中的目的地址来发送IP数据包。在IP路由IP包时,对IP头中提供的源地址不做任何检查,并且认为IP头中的源地址即为发送该包的机器的IP地址。这样,攻击者可以直接修改节点的IP地址,冒充某个可信节点的IP地址攻击或者编程(如RawSocket),实现对IP地址的伪装,即所谓IP欺骗。攻击者可以采用IP欺骗的方法来绕过网络防火墙。另外对一些以IP地址作为安全权限分配依据的网络应用,攻击者很容易使用IP欺骗的方法获得特权,从而给被攻击者造成严重的损失。防范对策:(1)抛弃基于地址的信任策略。(2)采用加密技术,在通信时要求加密传输和验证。(3)进行包过滤。如果网络是通过路由器接入Internet的,那么可以利用路由器来进行包过滤。确认只有内部IAN可以使用信任关系,而内部LAN上的主机对于LAN以外的主机要慎重处理。路由器可以过滤掉所有来自于外部而希望与内部建立连接的请求。

3.2.2 ICMP漏洞

ICMP运行于网络层,它被用来传送IP的控制信息,如网络通不通、主机是否可达、路由是否可用等网络本身的消息。常用的Ping命令就是使用ICMP协议,Ping程序是通过发送一个ICMP Echo请求消息和接收一个响应的ICMP回应来测试主机的连通性。几乎所有的基于TCP/IP的机器都会对ICMP Echo请求进行响应。所以如果一个敌意主机同时运行很多个Ping命令,向一个服务器发送超过其处理能力的ICMP Echo请求时,就可以淹没该服务器使其拒绝其它服务。即向主机发起“Ping of Death”(死亡之Ping)攻击。死亡之Ping是较为原始的拒绝服务攻击手段。解决方法较成熟:(1)可给操作系统打上补丁(patch)。(2)在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。(3)利用防火墙来阻止Ping。但同时会阻挡一些合法应用。可只阻止被分段的Ping。使得在大多数系统上只允许一般合法的64Byte的Ping通过,这样就能挡住那些长度大于MTU(Maximum TransmiSsIon Unit)的ICMP数据包,从而防止此类攻击。

3.3 传输层

TCP是基于连接的。为了在主机A和B之间传递TCP数据,必须通三次握手机制建立连接。其连接过程如下:AB:A向B发SYN,初始序列号为ISNI;BA:B向A发SYN,初始序列号为ISN2,同时对ISNI确认;AB:A向B发对ISN2的确认。建立连接以后,主要采用滑动窗口机制来验证对方发送的数据,如果对方发送的数据不在自己的接收窗口内,则丢弃此数据,这种发送序号不在对方接收窗口的状态称为非同步状态。由于TCP协议并不对数据包进行加密和认证,确认数据包的主要根据就是判断序列号是否正确。这样一来,当通信双方进入非同步状态后,攻击者可以伪造发送序号在有效接收窗口内的报文,也可以截获报文,篡改内容后,再修改发送序号,而接收方会认为数据是有效数据,即进行TCP会话劫持。目前存在一些软件可以进行TCP会话劫持,如Hunt等。防范对策:(1)在传输层对数据进行加密。(2)使用安全协议,对通信和会话加密,如使用SSI代替telnet和ftp。(3)运用某些入侵检测软件(IDS)或者审计工具,来查看和分析自己的系统是否受到了攻击。

3.4 应用层

在应用层常见的攻击手段是DNS欺骗。攻击者伪造机器名称和网络的信息,当主机需要将一个域名转化为IP地址时,它会向某DNS服务器发送一个查询请求。同样,在将IP地址转化为域名时,可发送一个反查询请求。如果服务器在进行DNS查询时人为地给出攻击者自己的应答信息,就产生了DNS欺骗。由于网络上的主机都信任DNS服务器,一个被破坏的DNS服务器就可以将客户引导到非法的服务器,从而就可以使某个地址产生欺骗。防范对策:(1)直接用IP访问重要的服务,从而避开DNS欺骗攻击。(2)加密所有对外的数据流。在服务器端,尽量使用SSH等有加密支持的协议;在客户端,应用PGP等软件加密发到网络上的数据。

4 结束语

tcp协议范文第6篇

关键词:TCP/IP;网络拥塞;拥塞控制;算法

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)07-1513-03

随着网络用户的不断增加,制约网络应用和发展的关键瓶颈是网络拥塞问题,对进入网络的数据流量进行控制是拥塞控制的主要目的,通过控制拥塞保证用户发送的数据流对通信网络不造成阻塞,并且瓶颈资源能够被合理的使用。可以在网络协议的不同层次上实施拥塞控制,首先对网络拥塞产生的原因进行分析,分类、归纳拥塞控制,持续时间越长的拥塞需要越高的控制层次来解决拥塞问题,并且拥塞控制的实现主要在传输层和网络层。

1 网络拥塞概述

网络的性能会逐渐下降,当过多的数据包存在于网络中时,这种现象被称为网络拥塞。吞吐量下降在发生网络拥塞的时候,并且严重的时候拥塞崩溃的现象会在发生。通常而言,增加的网络负载导致网络效率降低,在此时容易发生拥塞崩溃的现象。拥塞现象的描述如图1 。

图1 拥塞现象的描述

在较小的网络负载时,吞吐量随着负载的增长也会增长,两者为线性关系,相应的时间也缓慢增长。当网络容量被负载达到的时候,相应的时间急剧增加,吞吐量呈现缓慢增长,这一点被成为Knee点。吞吐量在负载超过一定量时开始急剧下降,路由器在负载继续增加的情况下开始丢包,这一点是死锁点。在拥塞控制机制中有拥塞控制和拥塞避免两种方式,前者的目的是在控制运行在死锁点附近的网络拥塞现象,后者是避免网络运行在Knee点的时候发证拥塞现象。前者是一种恢复措施,使网络从拥塞中恢复过来,进入正常运行状态;后者是一种预防措施,使网络维持在低延迟、高吞吐量状态,网络拥塞现象得以避免。

2 分析网络拥塞产生的原因

网络的处理能力和资源容量被网络的负载超出了是网络拥塞产生的根本原因,也就是网络对资源的总需求量大于总的可用资源,下面分析一下网络拥塞产生的原因。

1)不足的存储空间

一个输出端口需要对各种报文在接收端口的缓冲区域中进行排队,因为它接受的报文是由多个端口转发而来的,若满足使用要求的缓冲空间在输出端,报文就会丢失,尤其是突发的数据流也会丢失。这一矛盾的缓解通过增加存储空间来实现。但将会出现更加严重的拥塞现象在不断增加存储容量时。因为缓冲区网络结点的延时增加的时候,报文也会增加,最终端到端的确认时间也增加了,就会产生超时重发。网络负载因此会进一步增加,拥塞现象最终会加重。

2)不足的宽带容量

在低速链路中流通的高速数据流经常会产生拥塞现象,在数据发送率小于信道容量的时候,拥塞现象才会避免。不然在节点的缓冲区域堆集大量的报文就会产生拥塞。

3)速度缓慢的节点处理机

报文被放入其CPU队列中进行缓存当被路由器对其进行接收的时候,路由器来选择路由并且把报文转发到相应的节点。此时路由器的处理速度的快慢是能否出网络现拥塞的关键因素。

总而言之,只有考虑到从以上三方面的因素,来解决拥塞现象,优化整体性能。只考虑一方面内的因素拥塞问题不仅不能够解决,反而拥塞问题还会更加严重。

3 控制拥塞的策略

1)Tahoe和Reno拥塞控制算法

随着网络技术的发展,TCP拥塞控制有快速恢复(fast recovery)、快速重传(fast retransmit)、拥塞避免(congertion avoidance)、慢启动(slow start)这四种,其中常用的是TCP Tahoe和TCP Reno两种算法。快速重传、拥塞避免、慢启动是Tahoe包括的三个部分,并且改进了往返时间RTT,从而对超时重发计时器进行更好的重新设定,具体的算法描述如下:

最多发一个报文在一个RTT内。其中窗口的大小由w来表示,慢启动门限值由ssthresh来表示,是慢启动进入拥塞避免的分界值。

这种算法的基本思想是通过线性增加速率源端对网络中的空闲容量进行探测,当拥塞被检测到的时候用指数递减它的速率,在源端丢包被检测到的时候确认拥塞。实现拥塞避免和慢启动的例子如图图2 慢启动和拥塞避免的实现举例

由上图可知,每当一个丢包被检测到的时候,慢启动门限值被源端设置为当前窗口的一半,对丢失的包重传,窗口被设置为1,重新进入慢启动。

2)TCP中拥塞控制的关键

TCP协议在Internet上被95%的数据流使用,对发送端的发送速率进行控制是TCP中拥塞控制的关键。可以采用控制算法中的乘法减少加法增加(AIMD)的来解决拥塞问题。每个拥塞窗口由发送方维持着,如果没有发生窗口中的报文丢失,那么目前是良好的网络状况,窗口的大小被发送者加大,同时报文的发送速率加大。当窗口内的一个报文被发送方发现丢失的时候,则认为报文的丢失是由网络拥塞造成的,于是窗口的大小减半,随之发送速率也减小,拥塞加重的现象得以避免。

3)慢启动阶段的拥塞控制

一个连接被TCP启动的时候多个数据包被发送到网络时会造成不必要的网络拥塞和数据丢失,而慢启动可以避免这种现象的发生,还能避免吞吐量在AIMD算法中增加引起网速过慢的问题。初始化拥塞窗口cwnd为一个数据包大小在新的TCP连接建立的时候,按照cwnd大小源端进行数据的发送,也就是随着RTT的增长cwnd呈指数增长。

4)拥塞避免阶段

处理丢失数据包的方法被称为拥塞避免算法。当重复确认被发送方收到或数据包超时被发送方发现的时候,网络拥塞就会发生,此时进入拥塞避免阶段,置为1的cwnd在数据包发送超时并且重复确认被发送方收到时,那么每收到一个ACK,cwnd将增加segsize*segsize/cwnd。其中数据包的大小被称为segsize,cwnd在拥塞避免阶段不是呈指数增长而是呈线性增长的。

5)快速恢复和快速重传阶段

当3个或3个以上的重复ACK被源端收到的时候,发送方认为出现数据包丢失的现象,对数据包进行重新传输,而且启动阈值ssthresh被设置为一半的当前cwnd,然后对丢失的数据包重新传输,这个过程被称为快速传输。系统执行的不是慢启动算法而是拥塞避免算法,这被称为快速恢复,能够使TCP连接的吞吐量提高。另外,不必要的重传超时要想避免可以应用一种受限传输机制:在接收方中允许如果有广播窗口,一个或两个重复的ACK被发送方接收到后,发送方对新的报文段继续传输,具有较小窗口的TCP在受限的传输机制的允许下进行错误码恢复,不必要的重传得以避免。

6)IP 拥塞控制策略

对于Internet 的健壮性而言基于窗口的端到端的TCP拥塞控制起着关键性作用,在Internet的迅速发展的今天网络的规模也越来越大,并且日趋复杂的结构在不断出现,端对端的拥塞控制已经不能满足需求,那么对拥塞的控制也需要在网络层进行,需要在路由器中采用数据丢弃和排队算法策略。其中丢弃策略进行分配缓存是通过决定哪些包被丢弃来实现的,排队算法进行分配宽带是是通过决定哪些包可以被传输来实现的。IP 拥塞控制的方法有:先进先出、公平排队算法、加权公平排队算法。

总而言之,无论哪种拥塞控制方法都有它的优势,总体上包括TCP 拥塞控制和IP 拥塞控制两种,下面表格针对这两种方式进行了比较:

[TCP 与IP 拥塞控制的比较\&参数\&TCP 拥塞控制\&IP 拥塞控制\&实现位置\&端系统中\&网络内部\&短期拥塞\&可以处理\&较好处理\&长期拥塞\&可以处理\&无法处理\&不同数据流间的公平性\&难于实现\&可以实现\&延迟\&较大\&无\&]

4 结束语

通过上述网络拥塞概述、网络拥塞产生的原因、控制拥塞的策略,可以得知,随着互联网用户越来越多,网络宽带等资源也在持续增加,但是用户的需求仍然不能得到满足,逐渐暴漏出网络拥塞问题,拥塞如何更好的预防和控制,使网络具有同时到达资源并且低延时和低丢包率的最大效用。无论TCP拥塞控制还是IP 拥塞控制都有自身的优势,要想在这个基础上更好的解决网络拥塞问题,需要结合各种方法并且灵活的使用。

参考文献:

[1] The Stream Control Transmission Protocol (SCTP) as a Transport for the Session Initiation Protocol(SIP).internet Draft,IETF,Jan,2005 Work in Progress.

[2] 黄卫平.TCP/IP 协议中拥塞控制算法探讨[J].广西工学院学报,2003,14(2):71-73.

[3] Gonzalo Camarillo,Raimo Kantola.Evaluation of Transport Protocols for SIP .IEEE Network September/October 2003.

[4] 武航星,慕德俊,潘文平.网络拥塞算法综述[J].计算机科学,2007,34(2):51-54.

[5] 郭伟.流控制传输协议研究[J].中兴通讯技术,2004(4).

tcp协议范文第7篇

关键词:可视分析;协议;课程教学

中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2014)23-0067-03

“TCP/IP协议”是邵阳学院为网络工程、物联网工程专业高年级本科生所开设的一门必修课程。该课程为“计算机网络”的后续课程,旨在让学生学完网络体系结构之后,深入掌握协议核心技术,理解协议原理,能设计简单的网络协议,为网络互联与设计打好基础。[1,2]在课程教学中,教师难教和学生难学成为了大家的共识。

一、课程教学状况

TCP/IP作为现代网络运行的基础协议,课程要求学生能理解和深入掌握协议的相关知识,理解协议的思想,并能加以应用,最终提高学生的网络应用程序开发能力与网络安全防护能力,增强网络分析能力。

目前各高校的“TCP/IP协议”教学主要采取协议软件分析、多媒体技术辅助及网络编程方式进行。如将wireshark等软件用于协议分析教学;[3]利用多媒体技术辅助教学;[4]通过网络编程模拟仿真方式进行协议教学等。[5]另外,有研究人员提出将举例教学法、[6]开放源码教学[7]用于“TCP/IP网络协议”课程教学中。文献[8]探讨了计算机网络协议分析与开发试验的一种新教学方法。

虽然有不少针对“TCP/IP协议”课程的教学改革,也取得了一定的成果。但由于课程的重要性和特殊性,“TCP/IP协议”课程教学内容难免抽象与枯燥乏味,学生难学、教师难教仍然是高校相关教师普遍的共识。

本文在深入分析协议课程教学特点的基础上,探索了一种协议可视分析与仿真相结合的办法,提供模拟图示例,进行图形可视化交互分析,增强教学过程的趣味性,化抽象为生动,以通俗浅显的图形化方式传达学生协议的核心思想。

二、基于可视的协议分析教学概述

1.可视分析基础

可视分析是利用图形学和图像处理相关技术,将数据转换成图形显示出来。不同领域需要不同的可视分析技术,在“TCP/IP协议”课程教学方面,将某种拓扑结构下节点之间通信的协议直观表示出来,节点之间数据包交换过程中繁杂的数据用图形的方式显示,能够使得网络通信变得更直观,也有助于协议的开发及应用。

2.链路状态路由教学的图形化表示

在路由选择协议的教学过程中,OSPF协议是典型的链路状态协议,其原理与距离向量路由选择的原理不同。学生往往对路由表的构造非常陌生。以图1为例,描述了一个简单的有五个结点的域。每个结点用相同的拓扑来创建路由表,但是每个结点的路由表却是独一无二的。通过对图1稍加转换,从A和B的角度去看各自的链路状态,可见,结点A知道它以度量6连接到结点B,以度量2连接到C,以度量3连接到D;结点B知道它以度量6连接到A,以度量4连接到C,以度量5连接到E。A和B所看到的链路状态如图2所示。

当多个路由器通过一个LAN连接起来时,此时情况会变得很复杂,图3显示了一个LAN直接连接到两个路由器A和C上的情形,每个路由器都连接到一个或者多个其他的路由器上。此时需要对LAN进行可视化建模,将LAN本身当成节点来考虑。通过对图3的分析,可引入新的节点(比如伪节点N,图4中的云),它与A、C连接起来。并且在LAN上从A到C是可能的,可以表示为路径ANC,这样可以使得复杂的问题简单化。

3.路由表的构造

路由表构造过程中,每个节点需要使用最短路径树产生一个最短路径。最短路径树通过Dijkstra算法实现,教师教学过程中一般会给学生展示一个简化的算法版本:一是初始化。选择作为树的根的节点,把它加入到路径中。为根的所有邻站设置从根到这些邻站之间的最短距离。设根到自己的最短距离为0。二是循环。重复下面两个步骤,直至所有节点都被加入到路径中。三是加入下一个结点到路径中。搜索不在路径中的节点,选择一个具有最短距离的结点,把它加入到路径中。四是更新。用上述步骤中移到路径中的节点来更新所有剩余节点的最短距离。

算法描述的是最短路径树的得到,其实就是经过一个初始化步骤和若干次的循环,该算法可以用可视化的图形进行表述。如图5所示,假设以节点A为例创建最短路径树,其初始化步骤和循环过程不难从上述简化算法中得出,图6给出了以节点A和B为根的最短路径树构造结果。由于篇幅原因,这里没有给出详细构造过程,可让学生进行课堂或课外练习。总之,通过图形化的表示,最短路径树构造过程能清楚呈现在学生面前,也有助于对该算法的深层次理解。

三、基于OSPF的LSA仿真模拟教学

1.OSPF及其LSA简述

开放最短路径优先(Open Shortest Path First,简称OSPF)是一种基于链路状态路由选择的域内路由选择协议。OSPF里定义了不同的链路,如点对点链路、穿越链路等,也有自治系统等概念,这些都可以用图形化方式进行描述,帮助学生对这些专业术语进行理解。

OSPF运行的核心实际就是链路状态更新分组(link state update packet),路由器正是用它来通过各自的链路状态的,每个更新分组可能包含几个不同的LSA(链路状态通告)。获得并分析LSA,可实现网络拓扑发现。完整的LSA信息被封装在报文中,而其LSA类型多,对于每一类型具体条目的分析十分复杂和枯燥。6种基本类型的LSA如表1所示。

表1 6种基本类型的LSA及作用

类型 作用

类型1 路由器链路公告

类型2 网络链路公告

类型3 网络摘要链路公告

类型4 AS边界路由器摘要链路公告

类型5 AS外部链路公告

类型7 非纯残域网络公告

因此,可以通过对LSA仿真,使学生对OSPF协议有更深入的理解和应用。

2.仿真实验配置

本文采用GNS 3模拟器,仿真OSPF四级组网情形,并对表1中的一、二、三、四、五、七等六类LSA予以仿真实现。网络拓扑结构如图7所示。由图7可知,主要有三个OSPF区域以及一个外部区域,骨干区域为area0,所有区域都与骨干区域相连,是OSPF四级网的核心,相当于是一个市级中心网,而其他区域是所连的地县。图中区域2配置为NSSA区域,因为7类LSA本身在特殊区域才有。

仿真过程中,首先规划好整个网络的IP地址,对路由器基本信息进行配置,接下来对接口进行配置及链路进行测试。例如对RT1的接口配置如下:

RT1:

interface loopback0

ip address 1.1.1.1 255.255.255.255 //回环地址

interface serial0/2

ip address 10.0.15.1 255.255.255.252 //链路地址

interface ethernet3/0

ip address 10.1.1.1.1 255.255.255.0 //业务地址

同理,对其他路由器接口进行配置,之后再进行链路连通性测试,直接通过ping命令的使用,通过反馈结果看测试链路是否存在问题。

基本配置之后,重点是对OSPF的配置及测试,每个路由器都指定一个router-id,并将本路由器上的所有网段都分布到OSPF进程中去,配置如下:

RT1:

router ospf 1 //运行OSPF进程

router-id 6.6.6.6 //唯一标识自己的router-id

network 6.6.6.6 0.0.0.0 area 0

network 10.2.6.0 0.0.0.0.255 area 2

通过对OSPF的配置过程的可视化,对协议运行过程中邻居的建立和路由一目了然。通过OSPF的运行,每个路由器都有了属于自己的完整拓扑,实现了全网的互联互通。

3.仿真图分析

通过模拟仿真OSPF,解决了全网的连通性,OSPF邻居的建立,尤其是可以通过命令查看每类LSA。通过运行命令,能较好地实现不同类LSA详细状态的可视化。图8为一类LSA的描述信息,通过该仿真图能更直观地理解、分析、研究各类链路状态的通告情况,包括LSA头部字节所包括的一些基本信息。

图8给出的是区域0的一类LSA,给出了邻居ID,与其他路由器连接的接口IP地址、开销等,并指出了IP属于哪个网段和掩码。通过对仿真图的可视分析,一类LSA特点可以总结如下:描述了直连链路的状态信息,由每个发起路由器通告,只在本区域内传递。简而言之,LSA1描述自身直连信息。

对LSA1进行仿真可视分析后,对部分配置参数进行修改,同理得到二、三、四、五、七等基本类型的LSA情况,并能通过仿真实验结果图将六种类型的LSA情况予以可视化分析,从而实现了将抽闲、枯燥的理论知识变的形象化、可视化和易于理解掌握。

四、结论

本文主要针对“TCP/IP协议”课程教学协议抽象、理论性强、枯燥等特点,探索一种图形化、可视化的方法,使得协议教学变得更加形象、生动、易于理解掌握,也更好地培养了学生的应用能力。

参考文献:

[1]TCP/IP协议族[M].第4版.王海,张娟,朱晓阳,等,译.北京:清华大学出版社,2011.

[2]计算机网络[M].第4版.潘爱民,译.清华大学出版社,2004.

[3]程立,张浩军,吴勇.网络协议可视化分析教学方法探究――Wireshark在计算机网络课程中的应用[J].教育教学论坛,2013,(1).

[4]周灵.网络类课程教学手段的改进与实践[J].计算机时代,

2008,(8).

[5]黄岚,刑敏.网络协议理论与实践整合的教学研究[J].吉林省经济管理干部学院学报,2006,(3).

[6]徐志芳.举例教学法在《TCP/IP网络协议》中的运用[J].考试周刊,2011,(90).

[7]王雪梅,林晓勇.“TCP/IP网络设计及实现”开放源码教学研究[J].中国电力教育,2011,(28).

tcp协议范文第8篇

关键词 计算机网络教学;TCP协议;NS2;确认机制;拥塞控制

中图分类号:TP393.01 文献标识码:A 文章编号:1671-489X(2012)03-0013-03

Research on Application of NS2 in TCP Protocol Teaching//Wang Xiaofeng, Mao Li

Abstract TCP is one of the most important protocols of computer networks, but as its implementation mechanisms are complex, the TCP teaching has become a difficult point in computer network teaching. The TCP teaching demonstration based on NS2 is presented, which can analyze and demonstrate the TCP protocol’s key implementation mechanisms, such as connection establishment, acknowledgement scheme and congestion control etc., and thus can improve teaching effectiveness.

Key words computer network teaching; TCP protocol; NS2; acknowledgement scheme; congestion control

Author’s address School of Internet of Things Engineering, Jiangnan University, Wuxi, Jiangsu, China 214122

1 引言

Internet作为20世纪人类最伟大的发明之一,已经深入人类社会的各个方面。当前,以Internet为代表的计算机网络技术得到飞速发展,计算机网络课程已逐渐成为高校计算机相关专业的一门专业基础课。计算机网络教学涉及大量复杂的网络协议,尤其是作为Internet核心协议之一的TCP协议。为实现在不可靠的IP协议上的可靠数据交付,TCP协议包含了大量复杂的机制[1],这使得初学者感到抽象难懂,因此,TCP协议成为计算机网络教学的一个难点。

为提升学生对TCP协议的直观认识,增强学习的兴趣与效果,可搭建由物理网络设备组成的网络实验平台,但这花费成本高、运用不便。鉴于当前网络模拟技术已得到广泛研究,各种成熟的网络模拟工具层出不穷,通过现有网络模拟软件,构建虚拟的TCP协议模拟与仿真教学环境,不仅可以增强学生对TCP协议复杂机理的直观理解,提高学习的兴趣与效率,而且可以为教师提供有力的TCP协议教学辅助工具。本文基于经典NS2网络模拟软件,提出TCP协议关键实现机理(包括连接建立、确认机制以及拥塞控制等)的分析和演示教学方法。

2 网络模拟器简介

2.1 网络模拟技术介绍

在众多研究计算机网络的方法中,由于网络模拟技术具有成本低,实现简单,使用方便,并能用于研究尚未实施的网络机制等优点,因此被广泛应用于网络研究的每一个角落,各种网络模拟器也层出不穷[2]。当前网络模拟器一般都基于离散事件模拟技术实现。所谓离散事件模拟,就是模拟系统的状态变化在离散模拟时间点上发生,事件的发生使得模拟系统从一个状态跳转到另一个状态。离散事件网络模拟技术则针对数据包的每一跳转发都依靠离散事件来刻画。下面介绍当前比较经典的网络模拟器。

1)NS2[3]。NS2(Network Simulator 2)是一个单机多协议离散事件网络模拟工具,由USI/ISI、Xerox PARC、LBNL和UC Berkeley等美国大学和实验室合作,在DARPA资助的VINT工程研究中实现的模拟工具。NS2有很多特点,比如具有开放的体系结构;可扩展、易配置和可编程的事件驱动模拟引擎;带有大量协议库的支持,尤其适合于对基于TCP/IP的网络进行模拟;支持大规模多协议网络模拟;提供开放的用户接口、可视化工具:可动画显示网络模拟过程,图形显示数据结果等。NS2是一个完全免费的软件,在国际上享有很高的学术声誉,被世界各国的网络研究者广泛使用。

2)OPNET。OPNET是美国OPNET Technologies Ins公司的产品,是一个单机的、基于离散事件驱动的网络模拟器。OPNET的特点包括:支持面向对象的建模方式,并提供图形化的编辑界面;提供各种通信网络和信息系统的结构化模拟模块;具有完善的结果分析器,为网络性能的分析提供有效而直观的工具;具有支持各种业务的模型等。目前OPNET是公认的优秀通信网络、通信设施、通信协议的模拟与建模工具,在全球的通信、电讯、网络及国防科技产业上已经被普遍采用并受到好评。但是由于是收费的商业软件,限制了其在研究领域的广泛应用。

3)SSF[4]。SSF(Scalable Simulation Framework)是一组用来描述离散事件模拟的应用程序接口,它采用DML(Domain Modeling Language)语言来描述网络模拟应用。SSF具有面向对象、简洁、功能强大等特点,此外,它支持高性能并行网络模拟并且在不同的计算环境之间具有可移植性。SSF有好几个实现版本,包括SSFNet、iSSF(即DaSSF)等。SSFNet采用JAVA实现,是DARPA支持的项目S3(Scalable Self-organizing Simulations)中的一部分,主要支持IP包级别上的细粒度模拟,链路层和物理层的协议模型以独立的组件方式提供。DaSSF采用C++实现,由达特茅斯学院开发,目前被设计为能够基于MPI运行在分布式内存并行计算机上。

2.2 NS2网络模拟器

从上述分析看出,NS2是一款非常优秀的开源软件,并且提供开放的用户接口以及提供模拟过程的动画演示及模拟结果的图形显示,因此非常适合于计算机网络教学。本文基于NS2实现TCP协议教学演示。下面是基于NS2的网络模拟基本步骤分析。

1)基于Otcl脚本语言设置模拟网络的拓扑结构以及链路的基本特性。

2)基于Otcl脚本语言设置协议,包括协议绑定和建立通信业务量模型。

3)设置trace对象、NAM对象等。依靠trace以及NAM可以记录网络模拟过程中所产生的各种数据。

4)其他的辅助命令的设置,如设定模拟结束时间、各种通信业务量的起止时间等。

5)对1~4步编写的Otcl脚本用NS2解释执行,并形成trace、NAM文件记录。

6)分析trace文件,得出实验所需数据;或分析NAM文件,动画演示网络模拟运行的整个过程。

7)对配置拓扑结构和通信业务量模型进行调整,并重复进行上述模拟过程,直至模拟效果满意为止。

3 NS2在TCP协议教学中的实例

3.1 模拟应用设置

基于NS2模拟器,设置所模拟的网络拓扑如图1所示,共有6个网络节点,并将Router(0)与Router(1)之间的链路设为瓶颈链路。Host(0)与Server(0)之间进行UDP数据流的传输,这作为背景流量;Host(1)与Server(1)之间进行TCP数据流的传输,这作为TCP协议教学的示范应用。设定模拟时间为5秒,其中UDP数据流持续时间为2.5~5.0秒,TCP数据流持续时间为0.1~5.0秒。模拟应用设置的关键TCL脚本代码如图2所示。

3.2 模拟结果分析与演示

在模拟过程中开启NS2的trace记录、NAM记录以及Queue Monitoring记录,并进行相应分析与演示。

1)TCP连接建立的分析与演示。图3中显示了关键的trace记录,为了能够便于分析,做了一些精简(trace记录中每一跳数据包转发记录仅保留enque记录,删除deque记录以及接收记录)。依靠图中第1行~第7行、第9行与第11行,可以演示TCP建立连接的3次握手过程。其中第1~3行表明3次握手中的第一个报文,经过三跳数据包转发到达目的节点,4~6行表明3次握手中的第二个报文,上述2个报文不涉及数据的传递,报文字节长度为40。第7、9、11行为3次握手中的第三个报文,该报文采用捎带应答,伴随数据传送一并进行,其字节长度为1 040。

2)TCP确认机制的分析与演示。TCP的可靠传输依靠确认机制实现,以图3中第7~17行、第20行为例,可以演示TCP的确认机制。其中第7~12行,TCP的发送方连续发出2个长度为1 040字节的报文(标号分别为2与3),这两个报文分别经过三跳数据包转发到达目的节点;第13行与第14行分别表明,当目的节点分别收到标号为2与3的报文后,发出ACK报文4与5进行确认。

依靠NAM记录,生成相应的NAM动画,如图4所示,可以比较分析有确认机制的TCP协议以及无确认机制的UDP协议的区别,加深学生对确认机制的印象和理解。当NAM动画演示的模拟时间推进到2.5秒之后,同时出现UDP数据流以及TCP数据流,如图4所示,可以演示出UDP数据流仅是从Host(0)到Server(0)的单向传输;而TCP数据流不仅包括从Host(1)到Server(1)方向的数据传输,还包括从Server(1)到Host(1)方向的确认报文传输。

3)TCP拥塞控制的分析与演示。依靠Queue Monitoring对Host(1)与Router(0)间的链路进行记录并进行相应处理,获得整个模拟过程中TCP数据流的发送速率,如图5所示,依靠该图演示TCP的拥塞控制过程。在0.1秒,Host(1)开始发送TCP数据流,流量大小逐渐上升,到0.3秒流量达到最大值,这个过程可以演示为TCP协议的慢开始阶段。在0.3秒,TCP流量瞬时发送速率达3.66 Mb/s,远超过Router(0)与Router(1)之间的链路带宽2 Mb/s,因此出现网络拥塞,于是TCP协议执行拥塞避免的“乘法减小”策略,在0.35秒,TCP流量瞬时发送速率减为2.16 Mb/s,在随后的过程中,TCP流量发送速率基本维持在2.00 Mb/s。

从2.5秒开始,Host(0)开始发送UDP数据流,并与TCP数据流争用瓶颈链路带宽,这使得网络频繁出现拥塞,TCP协议执行“乘法减小”策略,拥塞窗口多次减少,导致TCP流量发送速率从2.55秒的2.00 Mb/s逐渐减为2.95秒的0 b/s,随后TCP协议继续进行慢开始过程,流量大小逐渐增大,直到再次探测到出现网络拥塞。

4 结论

本文基于网络模拟软件NS2,编写用于TCP协议教学的TCL脚本,并通过NS2的trace记录、NAM记录以及Queue Monitoring记录工具,实现对TCP协议连接建立、确认机制以及拥塞控制等机理的演示教学。通过在TCP协议教学中使用网络模拟软件NS2,能让学生更加轻松地学习网络理论知识,提升学生的钻研兴趣,并取得良好的教学效果。在以后的教学工作中,拟在计算机网络实验环节让学生自己动手编写计算机网络协议模拟代码,进一步提升学生的能动性,培养创新思维。

参考文献

[1]谢希仁.计算机网络[M].5版.北京:电子工业出版社,2008:180-220.

[2]王晓锋.提高大规模离散事件网络模拟性能方法的研究[D].哈尔滨:哈尔滨工业大学,2007:4-10.

[3]Fall K, Varadhan K. The NS Manual[EB/OL].www.isi.edu/nsnam/ns/doc/.

tcp协议范文第9篇

关键词:嵌入式IP;TCP/IP;嵌入式TCP;嵌入式Internet

中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)08-1815-02

The Design and Implementation of the Embedded TCP/IP Protocol

LIU Chun-yan1, YAN Xing-jian2

(1.Yunnan Province School of Posts and Telecommunications, Kunming 65000, China; 2.China Mobile Group Yunnan Co., Ltd., Kunming 65000, China)

Abstract: This paper analyzed the designed principal and the implementation method of the embedded TCP/IP protocol stack. The source code of the embedded TCP/IP protocol is developed with the GNU tool chain on the Linux operating system. In the concrete implementation, this paper concentrates in the reduction of the standard TCP/IP protocoland is mainly achieved IP, TCP, ARP, ICMP protocol to make it applicable to embedded systems.

Key words: embedded IP; TCP/IP; embedded TCP; embedded Inernet

1 概述

嵌入式系统应用日益广泛,其TCP/IP协议的实现,业界开展了不少工作,结合对嵌入式TCP/IP协议栈的分析,本文给出了一种设计实现并就相关问题进行了探讨,为方便以后的叙述,将所设计和实现的嵌入式TCP/IP协议栈命名为EmbedIP。

2 EmbedIP设计与实现描述

使用Linux系统作为嵌入式TCP/IP的设计与实现开发的操作系统。GNU工具的编译器和项目管理工具,主要包括:GNU GCC,Make,Gdb,Binutils等。源代码调试工具使用gnu gdb, DDD和kgdb作为辅助的源代码调试工具。对于TCP/IP协议开发来说必须使用IP包处理工具来完成IP包的发送和侦测,这里选用netwag作为IP包的发送和侦测的工具。netwag共集成221相关的网络工具,其中最为常用的工具为sniff和spoof两个工具。另也同时使用ethereal,它是优秀的网络抓包工具,并有一定错误提示功能。并且一般linux系统都有基于命令行的tcpdump,这个软件也是一很好的IP包侦测工具。将netwag,ethereal,tcpdump三种工具灵活地组合使用将极大地帮助了嵌入式TCP/IP的设计与实现,高质量和快速地完成。

在PC机系统上TCP/IP协议栈的实现通常符合RFC标准,而在嵌入式环境下进行TCP/IP协议栈设计时不可能像PC机系统一样实现完全符合RFC标准的TCP/IP协议栈。嵌入式TCP/IP协议的设计与实现必须对TCP/IP协议进行一定裁减,并尽可能在最大程度上兼容和满足RFC标准。

结合实际的应用,在EmbedIP中实现了必要的几种协议:IP、 TCP、 ARP、ICMP。现对EmbedIP的整体执行流程作一介绍,EmbedIP整体流程看参见图1。

由图1可看出,EmbedIP的处理是基于事件处理模型的思路设计的,该设计思路主要参考了uip 0.6[4] 的实现方法。

在图1中,读入的链路层数据帧存储于一长度为1500字节的缓冲区内,处理好的数据放入这1500字节的发送缓冲区内,然后将数据发送。图中超时处理由文件eip_tcp.c中的TCPTimerProc()函数来进行时钟的管理,ARP协议的处理由位于文件eip_arp.c中的ARPProc()函数来进行处理,IP包头的处理由位于eip_ip.c中的IPProc()函数来进行处理,TCP协议处理由位于eip_tcp.c中的函数TCPProc()来进行处理。

以下对两个主要协议进行说明。

3 EmbedIP中的IP协议

IP层是整个INTERNET层次模型中的核心部分。IP协议规范在RFC791中进行了定义,IP协议是网络层的核心协议,在EmbedIP中暂不支持IP包的分片传送和重组,在这样的情况下,通常IP包头长度都是标准的20字节。

根据IP包头的协议格式可以得出IP包头的C语言描述。IP包头的C语言描述见上。对于网络层来说主要处理的是IP包头,由IP包头的判断决定下一步使用的处理协议。IP包头的处理流程参见图2。在图2中有5个包含有检查字样的活动状态,在这5个检查状态中一旦检查出错就直接转到终止状态。

4 EmbedIP中的TCP协议

为使TCP协议能在嵌入式的环境中运行,可进行裁减。

现设计的嵌入式TCP/IP主要应用于服务器端,因此那些在客户端才会使用的TCP协议部分就将其裁减掉。这样在TCP协议中就不支持主动打开,与之相应的状态就不再实现,而仅支持被动打开。同时地,超时处理的相关模块也就不用实现与之相关的内容。考虑到在实用中时很少使用urgent功能,所以urgent功能也裁减掉,不实现。因窗口协议需要大量的缓冲区,这在嵌入式系统中,没有足够的RAM来完成这一要求,因此,TCP窗口协议也裁减掉,不实现。这样一来,TCP协议就变得相对简单,TCP协议的实现也就集中到TCP状态机的实现上,这不仅能符合实际需求,还能使TCP协议能在小型嵌入式系统上良好的运行。

TCP协议的整体流程见图3。IP包头处理完后,若是TCP协议,那么程序就会转入TCP处理模块,这也就是TCP协议处理的开始。TCP协议的处理通常是按照TCP的标志位进行分流的,从而转向不同的处理过程。TCP协议在开始处理时,最为重要的步骤是根据TCP段的IP地址,端口号区分该段是一要求建立新连接的段还是一已存在的连接的TCP段,然后才进行进一步的处理。对于是一要求建立新连接的TCP段,先找到一个未用的连接数据结构,然后根据所得的TCP段填写相关的内容,一切好了以后,被动打开端应返回确认帧,并为三次握手定理作好准备,这个时候作为被动打开端的服务器的TCP连接状态处于SYN_RCVD状态。当TCP段的IP地址和端口信息为某一连接的信息时,证明该TCP段为某一连接应处理的TCP段,这个时候,程序对TCP段进行必要的处理后就进入到TCP状态机的处理。

当所有输入处理都完成了,程序将根据是否有数据要发送的信号为数据的发送准备数据,最终设置并启动数据发送函数。

TCP状态机的处理通常伴随着超时处理,两者相辅相成共同完成任务。因在TCP协议的实现时对TCP协议进行了裁减,并裁减了一部分TCP状态,这造成在状态机转换时与RFC标准有所不同,但实现了的状态机转换一定必须符合RFC标准。现已实现的TCP状态机转化和超时处理见图4。

图4 状态机转化和超时处理 图5 TCP层数据发送流程

TCP协议是基于IP协议的,所以其在进行数据发送时就比IP协议的数据发送处理要复杂,这里就对TCP协议进行发送的流程作一说明。TCP协议层的数据发送过程见图5。

以上的流程在实现时用两个函数TCPSndPreProc()和TCPAppDataSnd()进行了抽象。由图5可见,数据发送时,由高层数据开始,往底层处理,处理每一层时加上符合该层的数据,最终调用链路层接口将数据发送出去。

5 结束语

在本嵌入式TCP/IP的设计与实现中,设计和实现了TCP/IP协议通信的必要部分,这包括:IP、TCP、ARP、ICMP协议的实现四个部分。结合应用实践,实现时进行了必要剪裁,通过测试该协议正确,在此基础上今后可进一步对EmbedIP进行完善,以使其更为有用和更为健壮。

参考文献:

[1] Stevens W R.TCP/IP详解 卷一:协议(英文版)[M].北京:机械工业出版社,2002.

[2] Stevens W R.TCP/IP详解 卷三:TCP事务协议(英文版)、HTTP、NNTP和UNIX域协议(英文版)[M].北京:机械工业出版社,2002.

[3] Stevens W R.TCP/IP详解 卷二:实现(英文版)、HTTP、NNTP和UNIX域协议(英文版)[M].北京:机械工业出版社,2002.

[4] Dunkels A.uIP源代码[EB/OL].(2006-04).www.sics.se/~adam/uip/.

tcp协议范文第10篇

关键词:嵌入式系统;以太网;TCP/IP协议;UDP;ARP

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-10947-03

1 引言

目前,嵌入式系统与网络的结合已经成为嵌入式系统发展过程中所必须要面对的问题之一。嵌入式系统的网络接入一般可以通过RS-232或RS-485等间接接入,也可以通过网络协议直接与网络相互连,其中,直接接入方式正逐步成为嵌入式系统接入网络的主要方式,但是需要精简TCP/IP协议栈的支持。目前使用广泛的通用TCP/IP协议栈所包含的协议内容比较全,但同时也比较复杂。由于硬件平台的差别,这些协议站无法直接应用于嵌入式系统,主要表现在以下三个方面:

(1)嵌入式操作系统都面向特定的领域和需求,嵌入式应用对实时性要求比较高。

(2)多任务操作系统的内存分配是动态的,但是在嵌入式系统中片RAM是静态分配的,用于存放收到的数据包的的空间很有限。

(3)嵌入式系统在程序的具体实现上与通用计算机系统有所不同,主要体现在指针、参数传递、变量和数据结构的定义等方面。

因此,需要通用TCP/IP协议栈的基础上进行精简和改写,以设计出精简、高效的TCP/IP协议子集,以供嵌入式系统接入网络使用。

2 TCP协议分析与简化

通用计算机系统有足够的资源支持,但是嵌入式系统则不同,因为其CPU处理能力和系统存储能力都受到成本限制,充分利用资源、提高系统性价比是开发嵌入式应用的根本特点。

2.1 嵌入式TCP/IP协议栈的特点

嵌入式系统一般都是为了满足某一特定的需求,对网络支持的要求相对比较低,需要什么协议就添加相应的模块,不需使用完整的TCP/IP协议。嵌入式TCP/IP协议栈应具有以下的特点:

(1)代码比较简洁,占用的存储空间尽可能小,尽可能为应用程序节省系统资源。

(2)需要传输的数据量一般比较少,协议的实现代码要有较高的执行效率,具有较高的实时性。

(3)便于裁剪和扩展,对于面向不同应用的嵌入式系统应当根据特点对协议进行简化或扩展,整个协议栈在满足功能需求的前提下尽可能精简。

TCP/IP协议栈具有层次特性,各个协议都有自己的数据格式,每次发送数据都要进行上下层协议的数据交换,进行打包和拆包的过程,在这个过程中如果采用数据拷贝的策略进行数据传递则会大大增加系统开销。在嵌入式系统中,往往无法建立起数据传递的缓冲区,需要采用“零拷贝”技术用传递数据指针的方法来解决各层协议间的数据传递,以提高系统的实时性能。

2.2 TCP/IP协议的精简

TCP/IP是几百种网络协议的集合。通用计算机系统有足够的资源支持通信协议在内核实现,因此完整的TCP/IP协议栈(如图1)能够在数据传输的可靠性和数据流量的控制上做很多工作。

但是对于嵌入式系统来说,其硬件资源十分有限,同时对协议的要求也相对较低,必须对通用的TCP/IP协议进行精简。进行精简的途径有两种:

(1)将无关于系统功能的协议削减掉。即保留必需的协议,而对其它无关协议进行裁剪。

(2)对单独的协议进行简化。例如完整的ARP协议支持以太网、令牌环等网络,但是嵌入式系统可能是面向于某一具体类型网络的,对于其他的部分就可以简化掉。

图1

简化后的协议仍然需要符合规定的标准:在网络接口层,系统需实现ARP应答协议,该协议用于将IP地址映射成以太网MAC地址;在网际层,需要实现IP协议,主要负责IP报文报头的正确性,并且对TCP和ICMP报文实行分流,此外,为了能够测试系统与网络的连接,在网际层还需要实现ICMP协议中的Ping应答协议,主要用于检查网络在传输层是否连通。作为运输层的主要协议,TCP和UDP协议一般都不能缺少,对于具体的应用,一般都至少要实现其中之一。HTTP、FTP等应用层协议一般无需实现。这样简化后,就可以得到图2所示的嵌入式TCP/IP协议栈的结构:

图2 嵌入式TCP/IP协议栈结构

3 各协议的具体实现

本文实现的嵌入式TCP/IP协议运行于以89C51单片机和RTL8019AS网络控制器为核心元件的硬件平台上,协议代码在Keil C51 V7.0环境下编写。在程序的initial文件中提供了相关函数对89C51和RTL8019AS进行了初始参数设置,限于文章篇幅,与具体硬件相关的问题不再作详细说明。

3.1 ARP协议的实现

ARP协议不携带用户的有效数据,报头长度为28字节。在ARP报头中操作码域表明了ARP包是ARP请求还是ARP回答,其值为1时为请求,为2时为应答。目标以太地址为目标节点IP对应的MAC地址,解析前是未知的。发送ARP请求应使用广播方式,网段内的各个主机收到后检查包内的IP地址,如果和本机的IP地址一样则使用单播的方式返回ARP应答,在应答ARP包中源以太地址的域中填入自己的MAC地址。在具体设计时,要考虑到系统解析地址的实时性,如果每次互联都要进行地址解析,则系统的实时性要下降,一般的做法是建立一个ARP地址映射表,存放常用IP地址与MAC地址的映射,这样在解析地址时首先遍历该表,如果目标地址已经被解析过则可以省去解析过程了。解析过程中还需要为ARP缓存中每个新生成条目赋予一个初始生存时间,使用定时器中断,经过某一时间间隔对所有条目进行刷新检测,若发现有条目发生超时,将其从ARP缓存中删除。ARP缓存条目结构设计如下:

typedef struct

{unsigned long ip_addr; //IP地址

unsigned char macaddr[6]; //MAC地址

unsigned char timer; //定时器}

ARP_CACHE; //ARP缓存条目结构

3.2 IP协议及Ping 应答的实现

IP协议是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP包都以IP数据报格式传输。IP报头的标准长度为20字节。在具体项目中由于数据量比较小,可以不考虑数据报分段的问题,即不允许数据报超出IP包的有效载荷。标准以太网帧数据域为1500字节,除去IP头之外还有1480字节可以为上层协议提供有效的数据载荷,应该能够满足数据传送的要求。这样简化可以省去软件处理IP数据分段和重组的开销,可以提高系统数据传输的实时性。IP协议对上一层传下来的报文加上IP首部和IP校验和并发往下一层,同时还要对下一层传上来的报文进行校验和检查,将校验正确的去掉IP首部,送往上一层。

为了便于测试,需要实现PING程序,在收到ICMP的回显请求包后按照格式组装一个ICMP的回显应答包并发送。相关的主要函数有:

void ping_request() //PING请求

void ping_answer() //PING应答

void ping_echo() //PING应答收到后回显

3.3 UDP协议的实现

UDP际上是直接利用IP协议进行数据报的传输,也就是将报文包含在IP数据包中 。UDP的数据传输是无连接,不可靠的,因为它不像TCP那样,为了达到目标,首先要在两点之间建立一个可靠的连接,因此UDP协议无法保证数据可靠性。但UDP协议具有对网络资源开销较小,数据处理速度快的优点,UDP协议属于简单的端到端的数据传输协议,其报头只有8字节,其中源端口表示UDP应用进程的端口号,除了0~1023预定的端口外,其余的都可以使用。具体实现时要完成对应用层传下来的数据包,加上UDP首部和UDP校验和,发往下一层。以及对下一层传上来的数据包,进行校验和检查,若正确去掉UDP首部,提出数据送给应用层。需注意的是,要产生一个伪首部用于UDP数据检验和计算,涉及到的主要函数有:

unsigned char verifyudpcrc(union netcard xdata *pRxdnet) //对ucp头进行校验,错误返回0

void udp_send(union netcard xdata *pTxdnet, unsigned char xdata * psource, unsigned int len) //UDP包发送处理

void udp_recieve(union netcard xdata *pRxdnet)UDP包接收处理

3.4 TCP协议的实现

TCP协议是面向连接的、端对端的可靠通信协议,可分以下几个步骤实现:

(1)建立连接。这一过程就是我们常说的三次握手过程。

(2)验证。采取相应的措施消除传输中的错误,保障传输的可靠性,利用序列号解决通信时重复和失序的问题。

(3)流量控制。设置发送和接收窗口。

TCP协议的功能是为应用层协议提供可靠的面向连接的数据传输服务,是嵌入式应用系统协议栈中最为复杂的协议。在TCP协议实现中,由于请求发起端(客户端)与请求相应端(服务器端)在通信中所处地位不同,相应地两者的中间演变状态也不完全相同。客户端与服务器端在一个TCP连接从正常建立到正常中止分别经历5个和6个状态,相应控制信息均在TCP头部信息的6位控制标记位中得以表示。对于嵌入式系统中TCP协议的实现,应从嵌入式应用的角度出发,尽可能减少冗余状态。程序中需要构造一个TCP_STATUS结构来记录每一个TCP连接的状态信息,其结构如下:

typedef struct

{unsigned long ip_addr; //源IP 地址

unsigned int port; //端口号

unsigned long remo_sequ; //对方序列号

unsigned long local_sequ; //本方序列号

unsigned long old_sequ; //上一次序列号

unsigned long remo_ack; //对方应答号

unsigned char timer; //超时用定时器

unsigned char quiet; //连接活动性

unsigned char state; //当前状态

}TCP_STATUS; //连接状态结构

4 结束语

嵌入式系统的应用非常广泛,解决嵌入式系统的网络接入问题具有十分重要的意义。本文实现的精简TCP/IP协议栈在具体应用中有良好表现,可以满足正常的数据传输。由于设计与实现的过程中将应用层协议全部精简,协议在运行过程中的流量控制能力及协议自身的安全性都有所下降,在对安全性和稳定性要求较高的应用场合(如军事、金融等领域),需要对协议的简化有所斟酌。

参考文献:

[1]罗蕾. 嵌入式实时操作系统及应用开发[M]. 北京:北京航空航天大学出版社. 2005.

[2]徐爱钧,彭秀华. Keil Cx51 V7.0单片机高级语言编程与μVision2应用实践[M]. 北京:电子工业出版社,2004.

[3]程耕国,高厚礼. 基于TCP/IP协议单片机上网的设计与实现[J]. 武汉科技大学学报(自然科学版),2004,(2).

[4]田夏利,汪继军,薛胜军. 嵌入式Internet中UDP协议的实现[J]. 计算机与数字工程,2006,(2).

[5]er. 用TCPIP进行网际互联[M]. 北京:电子工业出版社,2000.

上一篇:借款协议范文 下一篇:框架协议范文