tcp协议范例6篇

tcp协议

tcp协议范文1

目前最完成,最被大众接受的通信协议标准就是TCP/IP协议。它的存在能使不相同的硬件结构,操作系统的计算机互相通信。在20世纪60年代末,美国政府出资近资助了一个分组(包)交换网络研究项目ARPAnet,这就是TCP/IP的最初样貌。最初ARPAnet使用的是租用的以点对点为主的通信线路,在后面当通信网和卫星通信系统发展起来之后,它最初开发的网络协议在通信可靠性较差的通信子网络中产生了很多问题,为了解决这些问题,TCP/IP协议就应运而生。作为一个开放的协议,有很多不同的厂家生产了很多型号的计算机,他们各自有完全不同的操作系统,但是在TCP/IP协议组件下,他们能进行通信。在如今的社会,TCP/IP已经成为一个由成千上万的计算机和其使用者组成的全球化网络,此时的ARPAnet也就顺理成章的变成了Internet。TCP/IP是Internet的基础。TCP/IP协议是以套件的形式推出的,在这个套件中包括有一组互相补充、互相配合的协议。在TCP/IP协议族中就包含有IP(互联网协议)、TCP(传输控制协议)和其他协议,在网络通讯中,只有这些协议相互配合,才能实现网络上的信息传输。IP和TCP的组合不仅仅只是表示两个协议,还指整个协议套件,TCP和IP只是作为其中最主要的两个协议,读者应该更好省核此术语的真正含义。TCP/IP协议如果在严格上来说只是人们习惯的说法,更为专业的说法应该称其为Internet协议。同时在国际上,TCP/IP协议也不是ITU-T或OSI的标准,但是它作为一种事实的标准被执行着,并且完全独立于任何硬件或者软件厂商,可以运行在不同体系的计算机上。它采用通用的寻址方案,通过寻址的方法,一个系统能访问到任何其他系统,就算在Internet这样庞大的全球性网络内,寻址的运行也可以说是游刃有余。不管是局域网,还是广域网,TCP/IP都是其中的最大协议最广的使用协议。

二管理TCP/IP的组织机构

Internet因为其开放性,所以不受任何政府部门或者组织所拥有和控制,因此没有统一的管理机构,但是还有非营利机构管理其标准化过程。这些机构承担Internet的管理职责,建立和完善TCP/IP和相关协议标准。与TCP/IP协议相关的组织机构简介如下:

1ISOCISOC为Internet的国际化提供支持、并且是一个非营利性的组织,同时也作为上级组织管理所有Internet委员会及任务组。

2IABIAB是ISOC的技术顾问,主要负责处理Internet技术,协议和研究。

3IETF与IESGIETF制定草案,提出建议,维护Internet标准都是其负责的。IESG在Internet制定标准以及IETF的各项活动中负责。

4IRTF与IRSGIRTF,在Internet发展中所遇到的技术问题,并且处理与TCP/IP相关的协议和一般体系结构研究活动。IRSG则是作为IRTF的指导小组,指导其工作。

tcp协议范文2

TCP/IP协议是当前Internet(广域网)和以太网(局域网)普遍使用的基本的通信协议簇,TCP/IP协议不是一个协议,而是由一系列协议(包括TCP和IP协议)组成的协议簇,正是因为有了TCP/IP协议,Internet才得以迅速发展成为世界上最大的、开放的计算机通信网络。

在使用Windows操作系统的主机中,系统会自动为主机中的网卡绑定TCP/IP协议,简单配置一下该协议,主机就可以使用该网卡与其它主机进行通信了。

TCP/IP协议是美国国防部(DoD)基于战争的需要,在寻求把分散的计算机互联成网络的过程,随着第一个计算机网络ARPA网的出现而出现的。由于TCP/IP协议最初只是在一个小范围内应用,缺少安全性方面的考虑,随着计算机网络的普及,TCP/IP逐渐成为一种开放的网络标准协议,其安全性缺陷也逐渐显现,主要表现在以下几个方面:

1) TCP/IP协议使用明文传输数据,不对数据进行加密处理。如果传输的数据被截获,就会有泄密的风险。

2) TCP/IP协议没有认证机制。发送者无法确认接受方是不是合法的接收者,同样,接收者也无法确认数据的发送方是不是合法的发送者。

3) TCP/IP协议没有数据完整性检测机制。即使要传输的数据在传输的过程中被第三方篡改过,接收者也无从知晓。

2 Sniffer软件的数据捕获与解码

Sniffer是一款可以对计算机网络上发生的不同的数据传送进行跟踪、分析从而对网络行为进行统计、管理的软件。Sniffer提供了丰富的图形工具,可以非常直观地呈现当前网络的连接情况。

Sniffer软件还可以对发生在本网络内的数据传送进行捕获,并进而在网络模型的数据链路层、网络层、传输层等各层进行解码分析,从而找出数据传送的规律或问题。从这一点上看,Sniffer就像是一个外科医生,它可以深入到网络通信的内部,获取网络通信的数据。

当前所广泛使用的以太网(局域网)或者是Internet(广域网)都是使用TCP/IP协议进行工作的,TCP/IP协议是明文传输的,没有采取加密措施,这种明文传输的数据一旦被拦截、捕获,就会发生信息泄露,给正常的数据通信造成威胁。该文就是利用Sniffer软件可以对网络内的数据传送进行捕获这一功能,获取网络内的数据通信的一些样本,再对这些样本进行分析,从而更加清楚地看出TCP/IP协议缺乏安全机制这一特点。

3 TCP/IP数据通信实例的Sniffer分析

在使用TCP/IP协议的网络中,可以进行多种类型的数据通信服务,其中Telnet是一种应用较广泛的服务,它是一个通过创建虚拟终端提供连接到远程主机从而可以实现终端仿真的TCP/IP应用。Telnet远程登录服务通常需要通过用户名和口令进行认证,其实现过程一般分为以下几个步骤:

1) 本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的IP地址或域名。

2) 将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包。

3) 将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果。

4) 最后,本地终端撤消与远程主机之间的连接。

本文就以Telnet服务为实例,使用SnifferPro 4.70,抓取其通信过程中的数据,获取其用以建立TCP连接的用户和密码以及在连接建立完成后所发送的通信数据。

首先,确定好用以进行Telnet远程连接的主机其Telnet服务已经开启。在本实例中,远程主机IP地址为192.168.0.106,本地主机IP地址为192.168.0.100,在捕获数据前,可以先进行Telnet远程登录测试,以确保实验可以正常进行。

在确定远程主机可以正常Telnet登录后,打开Sniffer Pro软件,点击工具栏上的开始捕获按钮,Sniffer就开始对网络内的数据通信进行捕获数据了。此时,打开本地主机的命令提示符窗口,在命令提示符下输入telnet 192.168.0.106,回车后输入远程登录的用户名和administrator,密码345678,就可以Telnet到远程主机。

Telnet登录成功后,就可以操作远程主机了,比如,要查看远程主机当前的文件目录,可以在命令提示符下输入dir命令,该命令返回远程主机当前目录的文件列表。

从以上捕获结果可以看出,使用TCP/IP协议进行数据通信的Telnet服务,从初始TCP连接的建立到用户认证,以及通过用户认证后在远程主机上所执行的命令,都可以被Sniffer捕获并分析出来。这种数据通信过程如果被截获,用户名和密码就会被第三方所掌握,远程主机上的资料也会泄露,由此会带来很大的安全问题。

4 基于TCP/IP协议的数据通信安全

通过对网络内数据通信的Sniffer捕获并解码,可以清楚地看出,TCP/IP协议并没有提供数据通信的安全机制,从这一点上说,TCP/IP协议是存在安全缺陷的。但这并不能否认TCP/IP在网络通信中的作用,正是有了TCP/IP协议,才有了今天Internet的蓬勃发展,其在网络通信中基础性作用和地位至今无法憾动,更没有哪一种协议能够取代TCP/IP协议。

人们要做的是在TCP/IP协议的基础上,增加安全性的措施,对TCP/IP加以弥补和完善。从TCP/IP网络模型上看,可以从应用层、传输层或者网际层入手,增加安全性的措施和机制,提高TCP/IP网络的通信安全。

从应用层来看,可以对要传输的数据加密,这样加密后的数据,即使被第三方所捕获,也无从获知其内容,避免数据泄露。在应用层上还可以对要传数据进行哈希运算,以防止要传输的数据被篡改。

SSL(Secure Sockets Layer安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

参考文献:

tcp协议范文3

关键词:嵌入式系统;以太网;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).

tcp协议范文4

TCP/IP协议是网络中使用的基本通信协议。虽然从名字上看它包括两个协议:TCP协议和IP协议,但确切的说,TCP/IP实际上是一组协议,除了最常用的TCP和IP协议外,还包含许多其它的工具性协议、管理协议及应用协议。TCP/IP协议共分为4层,即:应用层、传输层、互连网络层、网络接入层。其中,应用层向用户提供访问Internet的一些高层协议,使用最广泛的有TELNET、FTP、SMTP、DNS等。传输层提供应用程序端到端的通信服务,该层有两个协议:TCP和UDP。互连网络层负责相邻主机之间的通信,该层协议主要有IP和ICMP等。网络接口层是TCP/IP协议软件的最低一层,主要负责数据帧的发送和接收。

典型协议安全性分析与防范

TCP协议

协议工作过程

TCP是基于连接的。为了在主机A和B之间传送TCP数据,必须先通过3次握手机制建立一条TCP连接。若A为连接方、B为响应方,则连接建立过程如下:首先,连接方A发送一个包含SYN标志的TCP报文(即同步报文)给B,SYN报文会指明连接方A使用的端口以及TCP连接的初始序号X; 随后,响应方B在收到连接方A的SYN报文后, 返回一个SYN+ACK的报文(其中SYN是自己的初始序号Y,ACK为确认号X+1,表示客户端的请求被接受,正在等待下一个报文)。最后,连接方A也返回一个确认报文ACK(序列号y+1)给响应方B。到此一个TCP连接完成。

TCP协议的安全问题

在连接过程中,可能受到的威胁如下:攻击者监听B方发出的SYN+ACK报文,然后向B方发送RST包。接着发送SYN包,假冒A方发起新的连接。B方响应新连接,并发送连接响应报文SYN+ACK。攻击者再假冒A方对B方发送ACK包。这样攻击者便达到了破坏连接的作用。若攻击者再趁机插入有害数据包,则后果更严重。

例如,在TCP的3次握手中,假设1个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(即第3次握手无法完成),这种情况下服务器端一般会再次发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);1个用户出现异常导致服务器的一个线程等待1分钟并不是什么大问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。服务器端将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,此时从正常客户的角度看来,服务器失去响应,这种情况我们称作服务器端受到了SYN Flood攻击。

防范方法

对于SYN Flood攻击,目前还没有完全有效的方法,但可以从以下几个方面加以防范:

(1)对系统设定相应的内核参数,使得系统强制对超时的SYN请求连接数据包复位,同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的SYN请求数据包;

(2)建议在该网段的路由器上做些配置的调整,这些调整包括限制SYN半开数据包的流量和个数;

(3)建议在路由器的前端做必要的TCP拦截,使得只有完成TCP三次握手过程的数据包才可进入该网段,这样可以有效的保护本网段内的服务器不受此类攻击。

IP协议

IP协议的安全问题

IP协议在互连网络之间提供无连接的数据包传输。IP协议根据IP头中的目的地址项来发送IP数据包。也就是说,IP路由IP包时,对IP头中提供的源地址不作任何检查,并且认为IP头中的源地址即为发送该包的机器的IP地址。这样,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。其中最重要的就是利用IP欺骗引起的各种攻击。

以防火墙为例,一些网络的防火墙只允许网络信任的IP数据包通过。但是由于IP地址不检测IP数据包中的IP源地址是否为放送该包的源主机的真实地址,攻击者可以采用IP源地址欺骗的方法来绕过这种防火墙。另外有一些以IP地址作为安全权限分配依据的网络应用,攻击者很容易使用IP源地址欺骗的方法获得特权,从而给被攻击者造成严重的损失。事实上,每一个攻击者都可以利用IP不检验IP头源地址的特点,自己填入伪造的IP地址来进行攻击,使自己不被发现。

防范方法

基于IP欺骗的防范方法有:

(1)抛弃基于地址的信任策略。这是最简单的方法。

(2)进行包过滤。如果网络是通过路由器接入Internet的,那么可以利用路由器来进行包过滤。确认只有内部LAN可以使用信任关系,而内部LAN上的主机对于LAN以外的主机要慎重处理。路由器可以过滤掉所有来自于外部而希望与内部建立连接的请求。

(3)使用加密技术。阻止IP欺骗的一种简单的方法是在通信时要求加密传输和验证。当有多种手段并存时,加密方法可能最为适用。

ICMP协议

ICMP协议的安全问题

ICMP即Internet控制消息协议。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。Ping就是最常用的基于ICMP的服务。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。此外,向目标主机长时间、连续、大量地发送ICMP数据包,使得目标主机耗费大量的CPU资源处理,也会最终使系统瘫痪。

防范方法

对于“Ping of Death”攻击,可以采取两种方法进行防范:

(1)路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内。这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;

tcp协议范文5

关键词:TCP协议;网络安全;协议攻击;安全防御

中图分类号:TP393 文献标识码: A 文章编号:1009-3044(2007)15-30682-01

Security Problems Study in the TCP/IP Protocol

LI Bei

(The Information Management Department,University of Qinghai Finance and Economics College, Xining 810001, China)

Abstract:The TCP/IP protocol use very extensive now, but it oneself also have the some the blemish on the safety.I described every kind of each kind aims at the attack of these blemishses, including the preface row number attack, SYN Flood attack.Put forward the defense method that some to these attackstone.

Key words:TCP protocol;Network security;Protocol attack;Protocol security.

1 引言

TCP协议现在用得非常广泛,但除了对它不正确使用造成不安全因素外,它本身也有一些安全上的缺陷。一些缺陷

是由于主机使用IP源地址作为认证机制引起的;Berkeley 的r系列调用就是一个明显的例子。其它的一些缺陷是由于网络控制机制,特别是路由协议,缺少认证机制引起的。

描述这些攻击的前提是攻击者或多或少控制了某些连在互联网上的机器。被控制的机器有的是因为本身有漏洞,有的是自身没有保护机制的个人电脑。也有可能攻击者是一个系统管理员。

我不讨论协议具体应用上的漏洞,比如被互联网“蠕虫”利用的漏洞。讨论的是协议本身的问题。只要小心地使用这些协议,有些问题是可以避免的;我也不讨论经典的网络攻击,比如切断物理线路,篡改或插入消息,而主要讨论的是仅仅由于协议本身引起的问题。

本文所讨论的协议是Berkeley(早期的TCP/IP协议)协议,因为它实际上已成为大部分厂商的标准,而不仅仅是UNIX系统。

2 TCP序列号预测攻击

TCP序列号预测攻击最早是1985年由Robort.Morris对这一安全漏洞进行阐述的。他使用TCP序列号预测,即使是没有从服务器得到任何响应, 来产生一个TCP包序列。这使得他能欺骗在本地网络上的主机。

2.1 攻击方法

TCP协议有一个非常令人着迷的漏洞,简单的说,就是通过预测初始序列号来伪造TCP包,并且不需要得到回应。这样就可以使攻击者伪装成一台和服务器在同一个局域网上的一台可信任的机器。

通常建立TCP连接需要三次握手。客户机送一个初始序列号ISNc,服务器应答它并送出它自己的序列号ISNs,客户机再发出一个应答包。这三个数据包发送以后,就可以传输数据了。这个

过程可以用下图来表示:

C->S:SYN(ISNc)

S->C:SYN(ISNs),ACK(ISNc)

C->S:ACK(ISNs)

C->S:data

and/or

S->C:data

这就是说,要使一个连接建立起来,C必须知道ISNs,这个数多少有一些随机性。

假设入侵者X有一种方法可以预测ISNs。在这种情况下,他可以通过以下的步骤来模仿可信任的主机T:

X->S:SYN(ISNx),SRC=T

S->T:SYN(ISNs),ACK(ISNx)

X->S:ACK(ISNs),SRC=T

X->S:ACK(ISNs),SRC=T,nasty-data

即使S->T的数据包不经过X,X也能知道它的内容,因此能发送数据。如果X在一个能够执行命令的连接上实行这种攻击(例如,Berkeley rsh 服务),他就可以运行一些恶意的命令。

那么怎样预测随机的ISN呢?在Berkeley系统中,初始序列号变量是以每秒固定的数目递增的,而每次连接的序列号就是这个变量的一半。因此,如果有人通过合法的连接观察ISNs,他就有很大的机会通过计算得到下一次连接的ISNs。应该指出的是服务器的应答消息

S->T:SYN(ISNs),ACK(ISNx)

并没有消除这种攻击;虽然真正的T主机将接收到它,并且会重设连接。这并不是一个严重的障碍,因为我们可以通过一些拒绝服务的攻击使T主机暂时失效,也可以在T主机关机或重起的时候攻击。

还有一种通过netstat服务对TCP序列号进行的攻击。在这种攻击中,入侵者模仿一台关闭的主机。如果在目标机上有netstat服务,它就会提供另一个端口必要的序列号信息;这样就根本不需要猜测了。

2.2 防御

很明显,这种攻击的关键是Berkeley系统中初始序列号变量变化方式太简单了。TCP标准要求这个变量必须以每秒钟将近250,000的速度增长;Berkerey系统则使用了一个比它慢得多的速度。然而关键的因素是间隔的大小而不是平均速度。从4.2BSD系统的每秒增加128到4.3BSD的每秒增加125,000的改变是没有意义的。

下面让我们来看看以250,000的频率运行是否有用。为了简单起见,我忽略了其它连接产生的问题,仅仅考虑本计数器固定速度的改变:

为了知道当前的序列号,必须发送一个SYN包,并接收它的回应,如下:

X->S:SYN(ISNx)

(上接第682页)

S->X:SYN(ISNs),ACK(ISNx) (1)

第一个使服务器产生下一序列号的伪造的数据包,可以紧跟在服务器对探测包的回应后送出:

X->S:SYN(ISNx),SRC=T (2)

序列号ISNs在应答中使用

S->T:SYN(ISNs),ACK(ISNx)

它是由数据包(1)产生到服务器接收到数据包(1)之间的时间唯一确定的。但是这个时间是由X到S的来回时间确定的。因此如果攻击者能够测量或预测到这个时间,即使使用一个能精确的4μ秒的时钟也不能阻止这种攻击。

对来回时间的测量能精确到什么程度呢?如果假设网络很稳定,我们可以精确到10毫秒左右。很明显,互联网不可能长期这么稳定,但是却有可能在一个较短的时间内稳定。因此我们有2500个ISNs的可能值。考虑到重新测量来回时间所需的时间,我们假设每次尝试需要化5秒,那么一个攻击者很可能在7500秒内获得成功。条件更好的网络或更精确的测量,能够提高成功的可能性。因此,仅仅是按TCP协议标准是不行的。

在这里,我们默认的假设是目标机上不运行任何进程。实际上,当新的请求到达时,是会运行一些进程的。在一个6MIPS的机器上,一个时钟周期-4μ秒-大约可执行25条指令。高优先级的中断,TCB分配顺序的不同,都对下一个序列号有相当大影响。这种随机的效果是被认为是主机的优点。必须注意的是,越快的主机越容易攻击,这是由于它执行指令的时间会减少,因此对初始序列号增加的影响也会减少。当然,CPU的速度增加是很快的。

另一个对付序列号攻击的方法是:随机的增加初始序列号变量。必须要全部位都是随机的,如果假设只有低8位是随机的,那么增加的间隔也是容易猜测的。我们应该结合使用好的间隔增量和一个小的随机数发生器或使用一个32位随机数发生器。注意,有很多假的随机数产生器是很容易倒转的。实际上,假设大部分这种产生器是通过它的输出的反馈来工作的,入侵者就可以通过简单的计算来得到下一个随机数。有些技术使用32位发生器,但仅仅使用它的16位,用穷举攻击法就可以得到它的结果。我们必须最少把随机数的16用在每一次增加中,以使网络探测失效,但是用于防御搜索结果的位就太少了。要通过更多的研究和仿真来决定合适的参数。

与其用这么大的数,不如对ISNs加密。数据加密标准算法(DES)加上一个简单的计数器是一个很好的选择。也可以在输出反馈模式使用DES而不要计数器。不管用哪一种方法,都必须小心的选择密匙。在当今使用开机时间是不行的,入侵者能够取得足够多的关于开机时间的信息,从而实现穷举攻击。但是如果开机时间用密匙加密后,随机数产生器就很难破解了。初始序列号产生器的性能是没问题的。每一次连接只需要产生一个初始序列号,即使使用软件来实DES加密也足够了。

还有一些防御措施包括做好日志和报警系统。测量来回时间通常是用ICMP报文来实现的,我们可以记录超常的ping请求。也可以记录短时间的、不完全的tcp连接请求。同样,伪装一台活动的主机会产生异常的RST包,这些都应该被记录下来。

3 SYN Floods攻击

3.1 什么是SYN Floods攻击

SYN Floods攻击是以TCP/IP协议的三次握手为基础的,所以要了解SYN Floods攻击,必须了解TCP/IP协议的三次握手,这在前面已经介绍过了。

SYN Floods攻击就是通过一些工具如SYN Flooders或通过raw socket编程向目标机发送一些源地址不存在的SYN数据包,目标机收到这些数据包后就会发出应答并等待回应,然而由于源地址的主机不存在,所以目标机因得不到回应而一直等待,直到超时。如果有人向目标机发送大量这样的数据包,目标机就会因为接收连接的队列填满而不再接受连接请求,这样目标机就暂时失效了,因此SYN Floods攻击是一种拒绝服务的攻击。大部分这种攻击只是使服务器不再接受连接而不影响已经建立起来的连接;但在有些情况下,会使系统内存不足而导致系统崩溃。这种攻击比较难以预防,因为当三次握手的第一个SYN数据包到来的时候,没有办法知道它的源地址是真的还是伪造的。

3.2 解决方法

有两种方法可以缓解或禁止这种攻击。第一种是SYN Storm Modifications,另一种是SYN Cookies。

SYN Storm Modifications(也叫Adaptive Time-Outs):

这种方法是通过稍微修改算法以使TCP连接请求队列中能容纳更多的TCP连接请求(可以有成千上万个连接请求)。通过修改算法,就能够缓解或阻止这种攻击。这种修改已被应用在Unix 环境中(SunOS,FreeBSD,OpenBSD 和 NetBSD),不过就我所知,微软还没有采用这种技术。

SYN Cookies:

这种技术通过在TCP包头中的特定字段抽出一个秘密数字,SYN Floods 攻击几乎能被防止。这个抽出的数字必须包含包头其它部分的索引。把这个信息用不可逆算法加密,并把它作为应答包头的一部分。当有一个ACK包到达时,把包头中的加密字与服务器上的作比较,如果相同就建立连接,不同就把这个包丢弃,并且三次握手没有完成。用这种方法,服务器不需要等,因此SYN Floods攻击被禁止了。

4 总结

以上介绍了由于TCP协议本身缺陷所引起的两种攻击及其防御对策,在这两种防御对策中,都用到了加密技术。加密技术对网络安全是非常重要的,因为系统的漏洞是不可避免的,因此没有绝对安全的系统。而加密技术可以使你的系统在被入侵后,把损失减到最小。从本文可以也可以看出,加密技术对预防攻击也是很有效的。

参考文献:

[1] HILL G R,et al.Ptransport network layer based on optical network elements[J].LightwaveTechnol.,1998,11:887-879.

[2] D.S.Siyan,P>Rybaczyk,Ware 实现网际互联[M].清华大学出版社,1998.

tcp协议范文6

等特点,对常用 tcp/ipv6 协议栈进行了裁减和简化,裁减掉一些不常用但不影响基本通信 功能的协议模块,同时对要保留下来要实现的各个协议进行简化,只实现其基本功能。设计完 成实现后的协议栈,具有代码量少,运行效率高和良好的可移植性等特点,适合于各种嵌入 式设备,是一种解决嵌入式设备接入 ipv6 网络的可行方案。

关键词:ipv6;嵌入式操作系统;邻居发现;icmpv6;地址解释

abstract

via the research and analyse for the ipv6 technique in this article.in allusion to the mcu on embeded system is not fast,and the storage capability is low,we cut down the common ipv6 stack. in this design we cut down some unusuary used but not affect basic communication protcols.besides, for the saved protocols we only realize it’s basic function.after the achievment we find that this stack little-codes, efficiency-runing and have good grafted ability. so it fit for embeded system devices, and be

considered as a feasible scheme for embedded system connecting to ipv6 network.

keywords: pv6; embedded operating system; neighbor discovery; icmpv6; address resolution.

1. 引言

嵌入式internet技术是指把internet技术 应用于嵌入式设备, 实现嵌入式设备的信息 交互,是嵌入式技术与internet技术的结合, 具有非常广大的市场前景。目前不少厂商都 在进行这方面研究, 并推出了不少嵌入式 internet解决方案,比较常用的成熟的解决方 案有,瑞士计算机科学院adam dunkels写的 ulp和 lwip,它们以ipv4技术为基础,以精 简为指导思想,把复杂的tcp/ip技术引入嵌 入式设备,满足嵌入式设备接入网络的需 求。而作为ipv4改良版本的ipv6,是对ipv4 的升级和改进,是下一代网络的核心,如何 以ipv6技术为基础,设计一款和嵌入设备结 合的具 有 代码量 少 ,功能 简 单的精简 tcp/ipv6协议栈是一件非常现实意义的挑 战,也是本课题设计的目的所在。

2. ipv6 协议栈

ipv6协议栈是基于ipv6网络层的协议, 和ipv4一样,遵循现有互联网四层网络互联 体系结构,如图1所示。从图中我们可以看到, 协议栈分为网络接口层,互联网

层,传输层,应用层四层。应用层直接面 向用户,并提供访问其它层服务的功能;传 输层用于提供源主机和目的主机上的对等 实体对话;网络接口层屏蔽了具体的硬件实

现细节,负责底层数据的接收和发送;网络

层是整个tcp/ip体系结构的关键部分,其主 要功能是在网络上提供可靠的主机到主机 的数据传送。ipv6协议正是位于该层,它包 含的主要协议模块有ipv6,icmpv6,邻居发 现nd,ipsec等。

 

2.1 ipv6 协议

根据rfc2460对ipv6功能的描述,ipv6 主要负责把上层来的数据段添加ipv6报头, 交由底层发送;把下层接收到的报文经过处 理和分析,交给tcp,udp或icmpv6处理。 和ipv4相比 ipv6的改变主要集中在以下几 个方面:地址容量的扩展,报头格式的简化, 支持扩展和选项的改进,数据流标签的能力,认证和保密的能力等[1]。

2.2 icmpv6 协议

icmpv6协议合并了ipv4中icmp(控制 报文协议),i- gmp(组成员协议)、arp(地 址解析协议)等多个协议的功能,实现差错 控制,地址解释等功能,并支持mobile ipv6。 icmpv6报文封装在ip报文中,是ip报文的 有效载荷数据,它通过它的各种错误报文和 信息报文的交换来实现差错控制,地址解释 和路由前缀信息获取等功能。 

2.3 邻居发现(neighbor discovery) 协议

邻居发现协议nd是ipv6协议栈中的核 心协议,是ipv6解决邻节点交互的一个重要 协议。它定义了下列问题的解决机制:路由 发现,前缀发现,参数发现,地址自动配置, 地址解释,下一跳决定,邻居不可达,重复 地址检测,重定向。邻居发现的这些功能是 通过5个icmp报文(邻居请求/邻居通告报 文,路由器请求/路由器通告报文,重定向报 文)的交换来实现的。 3. ipv6 协议栈的精简

协议栈精简的核心是“微型化”,我们对 协议栈进行协议模块裁减和单个协议简化。

3.1 协议模块裁减

协议模块裁减是指在保障基本通信功 能的前提下尽可能去掉一些协议模块,节省 系统资源。网络接口层我们只考虑 802.3 以 太网协议(csma/cd,mac,llc),不考 虑面向 can,rs-232,rs-485,射频,蓝牙等 相关的支持模块。接入方式上只考虑用路由 器接入方式,不考虑拨号连接方式,去掉和 拨号连接方式相关的面向点对点连接的 ppp 协议和 slip 协议,这两个协议在网络 接口层占用的代码量比较多;ip 层只实现基 本的报头,不实现扩展报头,去掉基于认证 头和封装安全载荷头选项的 ipsec 协议,安 全控制交给其他层。icmpv6 和 nd 是核心

协议必须保留;传输层 tcp 和 udp 可以全 部实现也可以只实现一种,考虑的适应性, 本设计中都给予实现。因此协议模块裁减后 要实现的核 心协议族 为 802.3 , ipv6 ,

icmpv6,nd,tcp,udp。

3.2 单个协议简化

单个协议简化是指以单个协议为目标, 进行功能和数据结构的简化。对 ipv6 协议 来说,只接收,发送报文,不支持报文的分 片与重组,不支持扩展报头选项,对可靠连 接传输来讲,包过大得不到确认,会根据拥 塞控制机制和重传机制,减少数据分组长 度,进行重新发送,对大多数应用来说这不 会产生其他严重问题。对 icmpv6 来说,只 实现错误报文中的目的不可达报文,信息报 文中的应答回复报文,不实现超时报文,报 文过大报文和应答请求报文,一般包过大, 超时报文由路由器实现,应答请求报文用于 主动测试中发起测试的 pc 机一端。对邻居 发现 nd 模块来说,只实现邻居请求和邻居 应答报文,嵌入式设备刚接入网络,它可以静 态的等待网络上路由器定时发送的路由公 告报文,而不是主动发送路由请求报文来获 取,不需实现路由请求/路由应答报文。嵌 入式设备连接的邻居接点,路由一般简单, 传输量少,不需重定向报文来进行路由定 向。简化的大块在 tcp,tcp 是整个协议簇 中最复杂,代码量最多的协议。它的功能模 块有:滑动窗口,流量控制,拥塞控制,tcp 连接状态机,往返时间估计,重传协议。本 协议栈的目标是有操作系统支持的嵌入式 系统,速度和存储量比 8 位和 16 位单片机 都有提高,不必采用分配固定缓冲区的形式 进行接收一帧处理一帧,可以考虑采用分配 一个较大的缓冲区实现滑动窗口机制,用来 提高传输效率,实验证明,传输效率的提高 是明显的,往返时间估计和重传机制比较简 单,代码量不大,可以实现,tcp 状态机表 示 tcp 进程通信的状态迁移,是 tcp 的核

心必须实现,可以不实现流量控制机制,因

为流量不是很大。因此 tcp 模块实现的功 能有:tcp 有限自动机,滑动窗口,往返时 间估计,重传协议。忽略流量控制与拥塞控 制模块,在可靠连接中,当因拥塞而发生数 据丢失的时候,发送方收不到确认就采用重 传机制重发数据[2]。

4. 嵌入式精简 ipv6 协议栈的设

计与实现

在设计协议栈过程中,我们在嵌入式操 作系统基础上设计和实现一个操作系统模 拟层,实现基本的时钟,消息管理和进程同 步等基本操作系统功能。协议进程方面,把 所有的协议栈封装到单独进程中,应用程序 可以驻留在其中或作为一个单独的进程,这 样既实现了与操作系统分离,又避免了层间 切换。对于内存管理采用类 bsd buf 结构, 把静态缓冲区和动态缓冲区链接起来[3]。

4.1 ipv6

ipv6 模块主要用于完成对接收到的 ipv6 数据报进行处理,对需要发送的 ipv6 数据包进行构造并递交底层发送。当接收到 一个数据包时,网络设备驱动调用 ip_input() 函数来对其 ip 报头进行检查,检查其版本 号,报文长度,载荷长度,目的节点地址和 下一报头,待检查无误后,根据下一包头的 类型分别提交给不同的处理模块。当要发送 数据时 , 必须要知道发 送报文的下 一跳 ipv6 地址,以及该地址的相对应 mac 地址, ip_route()函数就是为实现这样的功能而设 计的,其获取下一跳 ipv6 地址与其对应 mac 地址的处理流程如图 2 所示。 图中,目的缓存用来存储着一系列最近 的报文流量与对应的下一跳 ip 地址的关系,

前缀列表存储着一系列子网前缀和其他地 址前缀及其对应的下一跳 ip 地址的关系, 如果两者中都没有找到匹配的记录,则再从 前缀列表中选择默认路由器作为传输的下 一跳 ipv6 地址。

 

在成功获取了下一跳 ipv6 地址后,数

据就进入传输阶段,传输阶段由 ip_outputif() 函数控制,ip_output()函数填充好报头,选择 好发送网络接口,然后激活发送网络接口进 行数据发送[4]。

4.2 icmpv6

icmpv6 负责接收, 解释和发 送 icmpv6 报文。收到报文后,如果为邻居信 息报文则转交给邻居发现模块,如果为诊断 报文则交给 icmpv6 诊断模块。icmpv6 模 块只实现了应答回复报文,目的不可达报 文。当处理到达的 ip 报文时,如果下一报 头既不是 tcp,udp 也不是 icmpv6,那么 表示在嵌入式设备端的协议栈的已经到达 ip 层,是端口不可达,发送目的不可达报文。 当收到 icmpv6 的应答请求报文时,就发送 应答回复报文,其格式与请求报文相似,在收 到的请求报文的基础上改变报文类型,重新 计算校验和,

在 ip 报头中将源,目的地址对调就可 以了。4.3 邻居发现

邻居发现是精简 ipv6 协议簇最核心的 协议,它利用邻居请求报文和邻居公告报文 的交换,实现地址解释,地址重复性检测, 以及地址自动配置功能。不实现路由器请求

/路由器公告报文,和重定向报文。

邻居请求报文

类型值为 135,报文 ip 头的源地址域为 发送邻居请求报文接口的地址或者未指定, 目的地址域为与被请求目标地址相关联的 被请求节点组播地址,或者就是被请求目标 地址本身。icmpv6 报头域中的目标地址域 为被请求目标地址。选项域可以包含源链路 层地址选项,用来告诉对方发送请求节点的 mac 地址,当源地址为指定

地址时必须包含该选项。

邻居公告报文

类型值为 136,用来响应邻居请求报文, 或者用来告知节点其链路层地址的改变,报 文 ip 头的源地址为发送邻居公告报文的接 口地址,目的地址为发送邻居请求的单播地 址,或者是用来公告给所有邻居节点其链路 层地址改变的全节点多播地址。目标地址就 是被解释的 ipv6 地址,或者在地址唯一性

验证中将要采用的 ipv6 地址。 地址解释就是节点仅仅知道邻居节点

ip 地址的情况下,通过发送邻居请求报文和 接收邻居公告报文,来得到对应节点链路层 地址的过程,是邻居发现模块中最重要的一 个功能模块,其处理过程如图 3 所示。

 

节点 a 知道节点 b 的链路 ipv6 地址

fec0:0:0:1::b 但不知道节点 b 的链路层地 址 00-10-5c-f7-5c-96,沿箭头方向,a 发送邻 居请求报文,ip 域的目的地址是要求被解释

的目标地址 fec0:0:0:1::b。节点 b

收到邻居请求报文后,查看目标地址就是属 于本机,是则发送一个单播的邻居公告报文 给 a,在邻居公告报文的目的链路层地址选 项 里 包含节 点 b 的链 路层 地址

00-10-5c-f7-5c-96。这样

节点 a 知道了节点 b 的链路层地址, 地址解释过程完成[5]。

5. 测试与验证

5.1 在 altera de2 上的实现与测试

课题的开发环境: altera de2(硬件平 台), quartus ii 5.1 和 nios ii 5.1(软件平 台),整个开发过程以 lwip1.1.0 为参考, 在理解了 lwip 的结构后在结合开发环境改 写。完成后对协议栈进行了测试和验证,测 试主要集中在网络层的 nd,ipv6,icmpv6 模块。由 于邻居发 现模块建 立在 ipv6,icmpv6 基础上的,对邻居模块的测试 相当于对 ipv6 和 icmpv6 也进行了测试,

很具有代表性[6]。

受周围网络环境中无 ipv6 路由器所 限,测试在 ipv6 局域网上进行,altera de2 通过以太网与 pc 机直接相连。测试对象电 路板 mac 地址为 00-10-5c-f7-5f-

5d,其经过地址转换算法得到的本地 ipv6 地址为:fe80:210:5cff:fef7:5f5d,当它 接入网络时,为了对自己将要配置的地址进 行唯一性验证,它要发送邻居请求报文,通 过 pc 端网络抓包工具 sniffer,我们抓到了由 目标板发出的邻居请求报文,如图 4 所示:

 

图 4 邻居请求报文

从图中看到其报文的类型值为 135。目

标地址为 fe80:210:5cff:fef7:5f5d。

测试协议栈在获取链路地址后,我们在

pc 机端执行 ping6 fe80::210:5cff:fef7:5f5d。 这个过程中要知道目标板的链路层地址,于 是发起针对目标板 ipv6 地址的地址解释。 在地址解释过程中,我们抓到了目标协议栈 发送的,包含自己链路层地址的单播邻居公 告报文,如图 5 所示。

 

图 5 邻居公告报文

由图可得知,报文类型值为 136,目标

地址为目

标板本地 ipv6 地址

fe80::210:5cff:fef7:5f5d。

5.2 在 s3c4410box 上的移植

移植目标平台:基于 s3c4410box 处理器的 arm7 开发板,按照通用的方法,先移植了 uc/os-ii 嵌入式操作系统,在移植好 的基础上用操作系统函数编写了操作系统 模拟层,把网络接口层的函数指针指向电路 板提供的网卡驱动程序,在系统启动初试化 函数中添加针对 ipv6 协议栈的启动代码。 完成这些后我们使用 altera de2 上一样的测试方法进行测试,实验结果证明协议栈满足基本通信功能。证明协议栈可以在该电路板 上进行移植[7]。6. 结束语

本文介绍了嵌入式精简 tcp/ipv6 的设 计思想和实现方法,精简性和可移植性是其 考虑的主要方面,该协议栈是一种解决了嵌 入设备和接入 ipv6 网络的可行解决方案。

参考文献

[1] robert e f. embedded internet systems come home[ j]. ieee internet computing,2001,5(1):52-53.

[2] ruhuarvi j,mahonen p,saaranen m j. providing

[3] soung s. network-driven layered multicast with ipv6[j],lecture notesin computer science, 2000 , volume

18 :11.

[4] liu li-feng,zou shi-hong. a congestion and rate control scheme based on directed diffusion in wireless sensor networks[j].journal of beijing university of posts and telecommunications,2006,29(2):54-58.

[5] chris m,maillik t, a look at native ipv6

multicast[j], ieee internet computing,2004 volume8 issue4: 48

[6] 周立功. sopc 嵌入式系统实验教程. 深圳:北京航空航天出版社. 2006 :241-248

上一篇tpp协议

下一篇赔偿协议书