TCP/IP协议栈

关键词: 互联网 协议

TCP/IP协议栈(精选十篇)

TCP/IP协议栈 篇1

TCP/IP协议, 即传输控制协议/互联网互联协议、网络通信协议, 其主要组成部分是位于传输层的TCP协议和位于网络层的IP协议。TCP/IP协议的体系结构主要有4个层次, 各个层次通过下层的网络来实现自己的需求, 从而将设备连接到互联网中, 并保证数据在TCP/IP通信协议中的传输。

TCP/IP的体系结构包括4层, 即网络接口层、网际层、传输层、应用层。每个层次的需求都有下层所提供的网络来实现, 各个层次相互配合, 来完成整个协议的任务。网络接口层包括多种协议, 各个协议由硬件和软件相配合, 以实现网络之间的数据传输。网际层只有一个协议, 即IP协议, IP协议主要是为不同网络的主机之间提供无连接的网络服务。传输层的协议包括两个, 即TCP协议和UDP协议, TCP协议提供面向连接的可靠的字节流传输, UDP协议提供无连接的不可靠的数据包传输。应用层包括多种应用协议, 如HTTP协议、FTP协议、DNS协议、Telnet协议等。TCP/IP协议中各个层次都是互相独立的, 上层通过与下层的接口来为下层提供服务, 而下层网络的实现过程对于上层是保密的, 以此网络通信的实现是逐层完成的。

2 TCP/IP 协议栈的特点

首先, TCP/IP通信协议对特定网络传输硬件没有依赖性, 用户可以根据自己的需要使用网络中的传输硬件, 如以太网、令牌环网等。

其次, TCP/IP通信协议对特定的计算机硬件、操作系统等也没有依赖性, 同时可以提供开放的协议标准, 因此TCP/IP通信协议可以在多个系统中实现其功能。

最后, 在全世界范围内, 每一个TCP/IP网络有唯一的网络地址, 有了该网络地址, 无论物理用户在哪儿, 都可以对其进行访问。

3 TCP/IP 协议栈的简化

一般来说, TCP/IP协议栈对计算机的内存、处理器等都有很高的要求, 另一方面, 嵌入式系统的资源的限制, 使得嵌入式系统达不到TCP/IP通信协议对系统资源的要求, 因此, 为了使TCP/IP协议与嵌入式系统结合的更贴切, 有必要对TCP/IP协议栈进行监护, 从而减少嵌入式系统的存储开销。

3.1 TCP 协议

在应用TCP协议进行数据传输的过程中, 主要是采用以字节为单位的滑动窗口来实现。为了简化TCP协议, 可以将滑动窗口算法进行优化。在此提出一种停止等待算法, 该算法产生的数据量少, 不对对网络的拥塞产生不利影响, 因此, 该算法可以减少网络中的数据量, 提高网络数据的传输速度。另一方面来说, 停止等待算法的效率与滑动窗口算法的效率相当, 不会降低网络的效率, 反而可以轻松的实现。停止等待算法不设TCP的发送缓存区和接收缓存取, 使得占用网络的存储空间大大降低, 从而可以实现TCP/IP协议栈的简化。

3.2 IP 协议

通过IP协议可以实现不同网络主机间的通信。IP数据报具有固定的格式, 从而确定了IP协议所具有的功能。为了实现数据报传输的效率, 使IP数据报能够正确的找到下一跳的地址, 需要在IP数据报前加上IP协议头。在嵌入式系统中, IP只是一个传输工具, 因此, 对IP进行简化不会影响嵌入式系统的工作效率。在嵌入式系统中, 对于IP数据报, 只对其IP数据报的版本、首部检验和、标志、源地址、目的地址进行确认, 从而对协议类型进行解析, 并将IP数据报传输到下一个层次进行处理。如果不能正确的对协议类型进行解析, 都要丢弃相应的IP数据报。IP数据报的总长度 (首部加数据之和) 为16位, 即数据报的最大程度为216-1=65535字节, 在嵌入式系统中, 受到资源的限制, 没有空间容纳如此长度的数据报, 并且不支持分段传输, 因此, 要对嵌入式系统中接收数据报的方式进行限制, 从而使程序更加简单, 且不会破坏数据报的完整性。

3.3 ARP 协议

ARP为地址解析协议, 主要是根据主机的IP地址来找到对于的物理地址。在嵌入式系统中, 服务器以被动的方式来接受请求, 因此不会主动的发送ARP请求数据帧, 因此, 为了简化ARP协议, 可以只对ARP的应答数据帧进行管理。在将ARP数据帧发送到网络以前, 需要填充数据帧, 使得数据帧达到网络要求的最小长度, 同时将请求数据帧的源IP地址和物理地址添加到应答数据帧的目的IP地址和物理地址里, 从而实现数据帧传输过程中的可靠传输。同时, 高速缓冲区中的IP地址和物理地址在不断的进行更新, 从而减少数据帧传输过程中的错误率, 提高效率。然而在嵌入式系统中, IP地址和物理地址之间的映射关系很少, 且不会经常更新, 因此, 可以对ARP协议进行简化, 以提高数据的传输效率。

4 TCP/IP 协议的实现

4.1 TCP 协议

TCP协议实现数据传输的过程包括建立连接、数据传输、释放连接。一般客户端是发起连接的, 而服务器端是被动接受连接的, 即客户端请求建立连接, 而服务器端答应建立连接的请求, 从而建立双方的连接, 并可以进行下一步的数据传输。如果在TCP的上层实现服务器端的功能, 就可以将通信双方建立连接的过程进行简化, 从而实现TCP/IP通信协议的简化。当释放连接时, 包括主动断开和被动断开, 当主动断开连接时, 需要发送一个fin数据报得到通信双方的确认, 从而断开连接, 而被动断开连接的方式就比较简单。

4.2 IP 协议

IP协议主要是对数据报的首部进行检验, 同时对数据报进行解析, 从而得到下一跳的网络地址, 进行数据的传输。在对IP协议进行简化后, IP只需要对数据报进行判断, 如果正确则根据数据报的类型进行下一步的传输, 否则将数据报丢弃。

4.3 ARP 协议

在网络中进行通信需要针对硬件的物理地址, 因此有必要对硬件的物理地址进行解析, 即完成将硬件的IP地址到物理地址之间的转换。ARP协议中, 网络上有主见与物理地址之间的映射表, 根据映射表可以很快的根据硬件的IP地址找到对应的物理地址, 为TCP/IP通信提供保障。

5 结语

TCP/IP协议对于嵌入式系统互联的实现具有深远的影响, 对TCP/IP协议进行简化, 让TCP/IP协议更好的适应嵌入式系统的特点, 使TCP/IP协议的作用发挥到最大, 对嵌入式系统的发展有很大的促进作用。经过简化后的TCP/IP协议, 能够较好的适应嵌入式系统, 利用较少的代码就可以实现相应的功能, 实现简单、结构合理、操作方便, 同时能够根据需要进行功能的扩充和系统的移植, 具有良好的性能。因此, 将TCP/IP协议引入到嵌入式系统中具有良好的可行性。

摘要:TCP/IP协议是实现网络通信最基本的协议, 对网络数据的可靠性传输有很大的影响。随着网络技术的发展, 将嵌入式系统中引入TCP/IP协议具有明显的现实意义。然而受到嵌入式系统资源的限制, 需要将TCP/IP协议进行简化, 从而实现嵌入式系统中TCP/IP协议的有效利用。本文对TCP/IP协议状况进行概述, 并对TCP/IP协议的特点和TCP/IP协议的简化进行分析, 最后提出TCP/IP协议的实现方法, 旨在简化操作, 提高嵌入式系统的运行效率。

关键词:TCP/IP协议,嵌入式系统,TCP,IP

参考文献

[1]王原丽, 王丽.基于ARM的嵌入式TCP/IP协议栈的实现[J].现代电子技术, 2008, 22:3-6.

TCP/IP协议栈 篇2

(1)从应用层上来看,攻击者每次攻击时,与8300端口都有建立最多两、三百个tcp连接,

(2)从防火墙监控来看,攻击的流量非常微小,以至于防火墙的流量报警都未触发。

(3)每次攻击产生时,原先的玩家的tcp连接并未断开(应用程序未抛出TCP连接断开的异常),但服务端的再也接收不到来自客户端的任何消息。服务端进程的CPU飙到100%,而内存使用未发现异常。

(4)而且服务端也从未接收到来自攻击者的tcp连接的任何消息。

(5)我们对tcp半连接进行了监控,排除了基于tcp的半连接攻击。

(6)重启服务端程序后,一切恢复正常。

我们的动作以及思考:

(1)最开始,我们以为是服务端程序出现问题,导致CPU 100%,后来通过详细检查程序代码,并使用文本日志定时记录程序每个线程的状态(每5秒钟一次),排除了这一可能性。也就是说,在攻击的过程中,服务端内的各个线程的运行都是正常的。(后来,我们进一步确认了这一点 -- 我们在游戏服务器前加了一个简单的tcp代理服务器,游戏服务器不再对外暴露,所有客户端都与代理服务器连接,由代理服务器在游戏服务器和客户端之间转发所有的数据,结果代理服务器被攻击,代理服务器的代理程序进程的cpu达到100%(也是重启代理程序即恢复正常),而游戏服务器进程一直正常),

(2)排除程序的问题后,我们开始怀疑攻击者攻击的是TCP/IP协议栈(也许是根据TCP/IP的一些漏洞进行攻击),而导致操作系统在处理底层的TCP/IP数据报时,陷入忙碌的状态,而导致CPU 100%,而当底层陷入忙碌的时候,来自客户端的正常消息就来不及接收或者来不及提交到应用层(即我们的服务端程序)了。

我们还未确定,攻击的方式究竟是什么?以前我们碰到的大多是流量攻击,而针对这种低带宽的攻击或TCP/IP漏洞攻击,没有任何经验。不知哪位大侠碰到过类似的情况,能够指点一二,感激不尽了,呵呵

附:我在网上找到了一些可能与我们的攻击有关系的TCP/IP攻击相关的资料,与大家共享一下:

(1)TCP协议堵塞窗口算法攻击技术 :sec.chinabyte.com/207/8816207.shtml

(2)TCP RST攻击 :baike.baidu.com/view/1044719.htm

(3)低速率拒绝服务攻击原理 :blog.chinaunix.com/u/12592/showart_2058363.html

(4)TCP漏洞可导致致命DoS攻击 :sec.chinabyte.com/279/8339279.shtml

(5)泪滴攻击 :baike.soso.com/v4492311.htm

TCP/IP协议安全问题的探讨 篇3

关键词: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,P.Kuo.NetWare 实现网际互联[M].清华大学出版社,1998.

[3] Blum,M. And Micali,S.SIAM J.[J] Computing, vol.13,no.4,pp.850-864,Nov,1988.

TCP/IP协议栈 篇4

关键词:Linux内核,TCP/IP,源代码,教学

1 学习Linux内核中TCP/IP协议栈源代码的先修课程

学生学习Linux内核中TCP/IP协议栈源代码之前,必须修完下述课程:

TCP/IP协议。该课程主要从整体上讲述了TCP/IP协议族的工作原理和电信标准。

C程序设计。在Linux内核TCP/IP协议栈中,绝大部分的源代码都是用标准C语言写的(除了极少数是用汇编语言写的)。TCP/IP协议栈源代码包含了非常多的函数,它们之间的调用关系也极其复杂,而且很多函数都很长。

操作系统。在Linux操作系统中,TCP/IP协议栈本身就是操作系统的一个有机组成部分,TCP/IP协议栈与操作系统的其他部分联系紧密。

微机原理。在TCP/IP协议的最底层是网络接口层,这个层的源代码与具体的网络接口硬件有着千丝万缕的联系,这就涉及到微机原理课程里的很多知识。

TCP/IP socket网络编程。这部分不作为必需课程,但是学生若对socket编程有一个初步的了解或者有一定的编程经验,那么学习TCP/IP协议栈源代码可能会更容易一些。

2 学习TCP/IP协议栈源代码对学生能力的培养

TCP/IP协议栈源代码是一项庞大而复杂的体系,绝非一门课程所能讲授,而且既不可能,也没有必要。我们只需要选择TCP/IP协议栈中一些典型的部分进行学习和探讨,学生可以挑选自己感兴趣的部分。

2.1 理解TCP/IP协议的实现机制

在TCP/IP协议课程中,学生重点学习了TCP/IP协议族中最重要的概念和标准,了解了TCP/IP协议族的基本工作原理,知道怎样去利用TCP/IP协议进行通信和网络互联。但是TCP/IP协议很抽象,学生很难真正理解掌握,即便理解了,也会产生“TCP/IP协议族是如何实现的?TCP/IP协议族为什么要这样实现?”的困惑。

TCP协议在TCP/IP协议族中的地位,非常重要也非常不好掌握。在TCP/IP课程中,重点讲解了TCP连接的建立和关闭、状态图以及流量控制、拥塞控制等。强调了TCP在无连接的网络上实现可靠的面向连接服务。在TCP的源代码中,学生发现TCP有一个结构struct tcpcb邀…妖,即TCP传输控制块TCB,这个结构记录了TCP实例每个连接的各种属性,比如缓存区大小、定时器值、本地与远程的邀IP:PORT妖对等,通过对这个结构的分析,学生对TCP的连接管理、滑动窗口、各种计时器有了更深层次的认识,而且对于远程主机崩溃/重启、网络出现故障对本地TCP带来的信息反馈等没有学过的知识也有了了解。

2.2 对C程序设计能力的培养

Linux内核TCP/IP协议栈源代码是一个真实的、运行在成千上万台Linux服务器、主机上的大型软件。全部采用C语言编写,在学习TCP/IP源代码过程中,不要求学生面面俱到,但是必须对某个方面有所精通。学生必须下功夫搞清楚他所阅读的函数的功能以及每条语句的作用,然后,对其中的一些语句作出修改,指出其作用以及修改前后的函数功能的差异(由于条件所限,修改代码只局限于讨论和书面的解释,并没有实际编译)。

在学习TCP/IP协议栈源代码的过程中,很多学生遇到了以前在《C程序设计》课程中学习过,但是很少实践的C语言技能,由于Linux支持多种网络协议,从中可以深刻体会到C语言实现代码重用的技术。

对某些学生,在学习了ICMP协议的原理和源代码后,启发他们采用socket编程开发出自己的Ping程序和Traceroute程序,这又促进了他们学习TCP/IP源代码。

2.3 加深对操作系统、微机原理等课程的融会贯通

对于操作系统来说,学生都会画转换图,但是却没有见过真正的进程阻塞、唤醒、创建子进程、僵尸进程、父子进程竞争等代码,面的小程序演示了如何创建子进程以及父子进程之间如何竞争的情况[2]。

其结果如下,是不确定的。

(1)coutput from child utput from parent(2)coutput from child utput from parent(3)output from child output form par-ent

学生可学习父进程派生子进程以后两者的竞争关系等知识点。而在TCP/IP协议栈源代码中,这种形式的代码非常多,通过学习可提高学生对操作系统诸多知识点的理解。

在TCP/IP协议栈源代码的网络接口设备部分,有很大一部分是关于如何初始化网卡、网卡收发数据、查找MAC地址等和硬件联系紧密的C代码。特别是网卡接收数据部分,会涉及到硬件中断和软件中断。

3 结束语

通过学习,学生更加深刻地理解了TCP/IP工作原理和实现机制,在C程序设计、软件工程、操作系统和微机原理等取得了可观的效果。

参考文献

[1]Wehrle K,Ritter H,Daniel.Linux网络体系结构[M].北京:清华大学出版社,2006.

怎样安装“TCP/IP”协议? 篇5

第一步:在桌面上单击“开始”一“设置”一“控制面板”,双击“网络”。

第二步:如果在列表框中找不到TCP/IP,单击“配置”一“添加”,开始安装。

第三步:在“请选择要安装的网络组件”列表框中单击“协议”,再单击“添加”。

第四步:在“厂商”列表框中单击“Microsoft”,在“网络协仪”列表框中单击“TCP/IP”。

第五步:在光驱中放入Windows安装光盘。

TCP/IP协议栈 篇6

【摘要】针对电信企业内部网络设备复杂、多样、分散等特性,通过使用TCP/IP协议编程实现了此类设备的智能化管理,实时收集各网络设备的运行状态,并实现与各类网络设备的一对多对话,简化了维护人员的操作,提高了企业的自动化管理水平。

【关键词】网络设备;TCP/IP协议;TELNET协议;工作脚本

一、背景

随着各电信运营商全业务市场运营的开展,电信企业内部的竞争日趋激烈,在电信企业如火如荼的竞争过程中,企业内部的人力、成本等资源都集中到了市场营销、客户服务与维系等窗口中,作为后台网络、设备维护人员,如何使用有限的人力资源和维护成本,来保障设备更稳定、更高效的运行成了各电信企业运维管理、系统支撑部门必须考虑的问题。

二、问题分析

电信企业内部接入网络的设备主要由应用服务器、生产终端设备和内部局域网的组建、管理、支撑设备组成。在日常的维护过程中,我们发现这些设备存在以下特性:

1)设备的多样性。上述设备中有网络交换机、路由器、小型机、工控机等,涉及操作系统有HP UNIX、SCO UNIX、LINUX、SUN SOLARIS等多种。

2)设备数量较多。随着电信企业内部的信息化水平不断提高,各类设备数量也不断增加,仅以路由器、交换机为例,德州的数量就数以百计。

3)地理位置的分散性。由于上述设备主要为各级分公司的系统提供服务,由于各级分公司、营业部位置的相对分散,就决定了此类设备在地理位置上的分散性。

设备多样、数量庞大、位置分散的特性就造成了此类设备管理的复杂性,那么,如何对上述设备进行有效的维护和管理呢?本文结合德州的实践经验,基于TCP/IP协议族,提出了电信企业内部设备智能化管理系统设计方法。

三、技术介绍

传输控制协议(TCP)、Telnet协议都是TCP/IP协议族中的一员。这两种协议为用户提供了在本地计算机上完成连接、控制远程服务器的能力。在终端使用者的电脑上使用TCP或telnet协议,连接到远程服务器,并可以通过程序,在本地终端上输入命令,送到服务器上运行,就像直接在服务器的控制台上输入一样。

TCP协议、TELNET协议是各类设备或其操作系统上普遍支持的两种网络协议,基于上述两种协议,通过编程可以实现对各种网络设备自动控制、数据采集,来为我们的维护工作提供便利。

四、系统结构

应用服务器通过C语言编写程序通过TCP协议、TELNET协议与各网络设备建立连接通道,通过两种方式与设备之间进行交互。一种方式是定时解析通过既定的数据采集脚本向各网络设备发送数据采集命令,由结果分析程序将命令返回的结果进行分析,写入数据库。第二种方式,终端用户通过主动向应用服务器发起查询、操作命令请求,由应用服务器将操作命令对一台或多台设备进行命令处理,并将处理结果返回。

在整个处理过程中,应用服务器扮演了两种角色,一方面与各网络设备建立双向命令处理通道,一方面通过发布网页来接受终端用户的查询、操作命令请求。

五、系统实现关键技术难点分析

在智能化网络设備管理系统的实现过程中,我针对系统实现过程的两个重点、难点问题,来介绍系统的设计方案。

1、TCP、TELNET协议接口设计

在使用TCP、TELNET协议与各网络设备连接过程中,在两个过程中下可能会出较长的时间延迟。

(1)在使用SOCKET、CONNECT函数与网络设备建立连接的过程中,如果远程设备掉电,或出现局部的网络中断,这部分设备在整个局域网中将变为不可见状态。而无论是TCP协议还是TELNENT协议,在面向连接的协议,如果CONNET函数在建立连接的过程中阻塞,会进行多次重试,直到重试次数超过操作系统设置最大超时次数位置,这个过程一般会持续3分钟左右的时间。(2)在CONNECT连接建立后,与SOCKET套接字进行命令发送的过程中,如果服务器对命令返回的结果未正确识别出有效的命令结束符号,或由于网络设备自身硬件故障的原因造成命令处理过程放缓、或不执行,从而无法获得正确的返回结果,造成长时间存在一个无效连接,这实际也是一种阻塞状态。

上述两种状态如果在程序编写的过程中,如果不增加超时处理,将大大放缓命令的执行效率,造成终端用户对系统的认同度下降。因此,在上述两种过程中,我们首先需要两种基本数据局域网内部的正常时间延迟、网络设备的回显延时。

(1)局域网内部的正常通信延时的计算过程中,可要选取各IP网段的最大网络延时作为参考。(2)网络设备的回显延时,由于网络设备的生产厂家、设备型号、硬件配置、软件配置、发送命令的不同,回显时间延时也会不同,这种情况下,对于同厂家、同型号设备,选取一个日常维护操作处理时间最长的操作时间作为参考。

通过上述两种时间的界定,使用SELECT函数来设置超时时间,在超时时间到达前如果没有收到正确的命令返回结果描述符,则产生一个中断信号,来打破阻塞状态。

2、各网络设备采集命令管理问题

由于网络设备类型众多、变更较为频繁,如果将所有的操作、数据采集命令都固化到程序中,虽然会对程序代码的执行效率有一定的提升作用,但是同时会面临程序拓展性差、维护困难的问题。会让我们工作陷入不断进行代码更新,同时由于设备更替,代码中又会产生部分冗余代码僵局。为解决此问题,首先,我们编写了一个工作脚本分析进程,固化部分关键字,如TELNET_IP(使用TELNET协议连接IP地址)、 AUTO_TCP_IP(使用TCP协议连接IP地址)、FIND(搜索返回结果串)、ENTER(输入命令)、TO(将结果输出到文件)等。然后,根据上述关键字规范,结合日常使用较为频繁的操作命令。下面我通过SCO UNIX工控机和CISCO路由器的两个工作脚本,来给大家介绍下此系统德州联通内部的实际应用。

六、技术总结

在电信企业网络设备智能化管理实现过程中,通过TCP/IP协议族协议的灵活使用,成功地解决了对多种数量庞大、位置离散的网络设备的管理难题,实现各网络设备数据的采集、入库、显示,以及管理人员与网络设备的双向交互。通过在德州联通内部的建设和使用,实践表明此系统可以在网络设备维护、监控、操作方面,有效地缩短人工处理时间,此系统的实现方案对于各电信企业具有较强的借鉴意义。

参考文献

[1]尚穆盖姆.TCP/IP详解(第2版).电子工业出版社,2003

[2]查普尔,蒂特尔.TCP/IP协议原理与应用(第3版).清华大学出版社,2009

TCP/IP协议栈 篇7

在信息爆炸的今天, 人们更加感受到大数据的来势迅猛。一方面, 网民的数量不断增长, 网民持有的联网设备和对带宽的需求也在不断增加, 另一方面, 互联网企业为了向客户提供更为个性化的服务, 需要进行深度的数据挖掘, 这也增加了对网络带宽的需求。

随着大数据时代的来临, 越来越多的数据需要被可靠并高效的传递到客户端, 这需要数据中心提供更高的带宽。而数据中心需要大量的电能来维持运转, 大量的廉价电力是数据中心选址的一个重要标准, 如此大量的电能必然会产生大量的热量, 设备的冷却又需要大量的水资源, GOOGLE等公司都将靠近河流或湖泊作为数据中心选址的标准。目前通用服务器的体系结构, 传输层协议 (如TCP/IP协议) 的解析和应用本身 (如大文件下载服务) 是由基于通用CPU的操作系统实现的, 通用处理器并不能根据服务器的特点对资源进行有效的利用, 这是通用服务器能效比不能提升的瓶颈。

本文提出了一种基于TCP/IP硬件栈的新型服务器结构, 采用硬件来加速传输层协议的处理流程, 减少通用处理器的负担, 提高能效比, 并使用FPGA进行了原理验证和对比测试。

1 基于TCP/IP硬件栈的服务器结构

在服务器架构中, MICROBLAZE (MB) 软核用于控制和监控整个服务器的状态。系统中使用寄存器组来对服务器进行初始化和状态监控, 并通过FSL快速单向链路总线连接至MB。服务器使用由DDR3, SRAM, BRAM和SSD组成的多层混合存储系统以增加吞吐量和降级功耗, 这些存储设备通过AXI4总线与系统相连。其中, DDR3, SRAM, BRAM的控制器都是基于Xilinx IP, 并根据系统的需求进行了优化。本文使用2片8GB的DDR3内存来存储用户请求的文件, 用64MB的SRAM和来存储需要频繁访问的连接管理表项, 而SSD作为整个系统的CACHE, 当文件在内存中未命中时, 系统将通过SATA总线访问SSD。

使用寄存器组来连接系统的软件和硬件, 每一个寄存器都用于存储系统的状态或者配置各模块的参数, 在系统的初始化阶段, 可以通过MB配置这些寄存器。

本文用硬件栈取代了MAC, TCP/IP和HTTP软件栈, 减少了MB的压力。因为硬件栈的工作不依赖于操作系统, 相比与软件栈, 减少了资源的利用, 加快了处理的速度。在本设计中10G网卡使用的是Puma AEL2005, MAC解析模块使用的是Xilinx提供的Logi CORETM 10-Gigabit Ethernet MAC core。

TCP/IP硬件栈主要包括报文卸载、消息分解、报文封装以及定时器服务等部分。数据通路按照接收和发送可以分为两个过程。接收过程完成报文包头的卸载、消息分解等工作, 并更新连接管理表。发送过程根据文件发送消息和TCP封装消息将数据分包, 添加TCP头, 然后完成IP包封装以及向MAC层发送等功能。此外, 定时器服务模块根据连接管理表中定时器信息以及系统时钟触发相应的超时重传流程。系统的整体架构如图1所示, 下文将对各个模块进行描述。

报文卸载:报文卸载模块的主要功能是解析从10G MAC输入的MAC帧, 根据帧头中的协议类型分类处理。如果帧类型为ARP和PING帧, 则将帧送到相应的处理模块, 处理完毕后将帧直接送到报文封装模块, 如果帧类型为TCP帧, 则送到消息分解模块进行下一步处理。

消息分解模块:根据TCP帧头中的标志比特和帧长将报文卸载模块传递过来的帧分解到不同的消息队列中, 送到相应的处理子模块, 并更新连接管理表中的相关表项。这些子模块首先将下一层的数据送至CPU, 再根据连接管理表当前的状态对消息进行处理。

报文封装:报文封装模块主要包括TCP帧头生成和包头封装2个功能。报文申请读取TCP封装消息队列, 并根据连接管理表和TCP封装消息的相应表项生成TCP帧头, 然后根据TCP封装消息从内存中读取分包内容, 通过TCP封包, IP封包, MAC封包等模块, 在帧头中添加校验和等内容, 将封装好的MAC帧发送至10G MAC。

定时模块:定时模块负责在连接过程中的各种超时处理, 主要包括建链超时, 拆链超时, 数据包确认超时等。定时模块轮询非空闲的连接管理表项, 根据当前连接的状态, 查看相应的定时器, 如果超时, 则进行相应的处理。

在整个硬件栈中, 我们将与数据帧接收和发送相关的信息存储到固定内存中的3中数据结构中。

连接管理表 (Link Management Table) :连接管理表是一个全局的数据结构, 用于存储当前连接的状态信息, 供报文封装, 定时等模块使用, 连接管理表的大小决定了服务器能够承受的并发连接数。连接管理表的表项主要有:TCP状态, 源IP, 源MAC, 发送序号, 当前窗口大小, 定时器, 文件发送消息指针等内容。

文件发送消息 (File Send Message) :文件发送消息是应用于TCP/IP硬件栈共同维护的数据结构, 应用将需要发送的内容的状态, 地址, 长度, TCP封装消息指针等信息记录在该表中。在报文封装时, 根据文件发送消息从内存中读取文件。

TCP封装消息 (TCP Encapsulation message) :记录了当前发送的TCP包的信息, 主要内容有对应的文件发送消息指针, 发送序号, 确认序号, 重发次数等。从服务器中发出的每一帧数据都对应着一个TCP封装消息。

2 TCP/IP硬件栈工作流程

TCP/IP硬件栈根据数据通路的方向可以划分为两个过程, 即接收过程和发送过程, 其中, 接收过程的工作流程如下。

接收过程包括报文卸载, 消息分解两个阶段, 如图2所示。报文卸载主要完成IP包卸载、TCP包卸载、连接管理表检索以及更新表项等功能。每当有数据帧被MAC送入硬件栈, 报文卸载模块从FIFO中读出数据帧, 根据MAC帧中的类型字段读出帧类型, 如果帧类型为ARP或PING, 则直接将该帧发送至相应的处理模块。如果帧类型为TCP帧, 则使用源IP地址和源端口地址哈希得到连接管理表地址, 更新该连接管理表的相关表项, 并根据TCP帧头的标志比特位 (ACK, SYN, FIN等) 和数据帧的负载长度将帧送入不同的FIFO。如果数据帧没有负载, 建链模块, 拆链模块和消息确认模块从相应的FIFO中读出数据帧, 更新链接管理表状态, 并根据确认序号将已成功接收的数据对应的文件发送消息和TCP封装消息返还给资源池。如果数据帧有负载, 则表示有新的文件请求, 将数据帧送入HTTP处理模块FIFO, 并更新连接管理表, HTTP模块会通知文件系统查找文件, 并根据文件命中的情况申请文件发送消息, 并将文件发送消息的指针写入连接管理表。

发送过程主要包括报文封装和报文发送两个部分。报文封装模块轮询连接管理表, 若连接的状态为建链或者拆链, 则直接申请TCP封装消息, 将连接管理表中的相关信息填入TCP封装消息中, 并将该TCP封装消息压入发送队列, 若连接的状态为已建立连接, 则该连接的文件发送消息, 若文件块还未发送完毕, 则申请TCP封装消息, 并将为发送文件首地址, 封包长度 (根据窗口大小计算) 等信息填入TCP封装消息, 再将TCP封装消息压入发送队列。

报文发送模块读取TCP封装消息, 根据消息的内容从内存中读取符合包长的文件块, 并根据连接管理表填写TCP首部和IP首部的相应信息, 计算校验和, 最后把文件和首部组合成数据帧放入MAC发送队列中。之后将TCP封装消息放入等待确认的队列中。

由于TCP需要提供可靠的运输层, 如果数据确认在定时器时间内没有收到, 它就要重传数据, 在本文所描述的TCP/IP硬件栈中, 重传功能是由定时器模块来实现, 定时器模块也会轮询连接管理表, 如果连接管理表中定时器为0, 则取出确认队列中序号符合的TCP封装消息, 重新将它压入发送队列, 并更新发送次数, 如果发送次数大于阈值, 则可认为连接已断开, 发送FIN包断开连接。

3 动态配置和状态监控

由于服务器是用FPGA实现, 并不依赖于操作系统。因此, 可以根据用户数量来控制服务器的数量, 用户流量小时, 可以关闭闲置的服务器, 用户流量增大时, 可以通过重新烧写比特流的方式段时间内增加服务器数量。通过这样的动态配置, 可以使供需均衡, 从而能最大程度的节约能源。要实现对服务器的动态配置, 就需要对服务器的连接数, 流量等数据进行监控, 再根据当前各个服务器的状态来进行动态分配, 如图3所示。

本系统中, 通过一台PC固定时间间隔向活动中的服务器发送状态查询请求来实现对当前服务器状态的监控, 服务器在收到状态查询请求后, 将当前的连接数量, 带宽等信息通过专用的协议上传, 该PC负责统计所有服务器的状态, 并根据当前的状态增加或者关闭服务器。

4 原型系统测试与结果

整个系统的硬件平台是以FPGA为处理核心的主机板, 包括底板和4块FPGA子板, 每个子板上都有一片Xilinx的LX550T芯片。FPGA资源使用状况如表1所示。

除了FPGA外, 每一个组件还包含24G DDR3内存, 320G SSD, 10G网卡和一个ATOM处理器.该处理器通过JTAG链控制BIT文件的下载和FPGA状态的监控。

在对比测试中, 使用3台PRCA (12片FPGA) 和12台IBM服务器X3650 (主频2.65GHz, 内存32G, 操作系统Centos 6.2, 服务器NGINX1.5.3) 进行测试。测试工具为思博伦Avalanche 3100网络应用层负载测试设备 (用于测试服务器性能) 和北电微型电力检测仪 (用于测试用电量) 。

测试的典型应用为媒体文件下载, 即通过网络测试仪向服务器发送不同的大文件 (超过800M) 请求并统计下载带宽, 有效会话数等信息, 通过电力测量仪统计功耗信息。本文分别对使用不同数量处理单元的场景进行了对比测试, 由于4片FPGA (1个结点) 和1台IBM服务器的功耗相近 (IBM服务器的电源为140W, 4片FPGA的功耗约为145W) , 因此我们用4片FPGA (1个节点) 和1台IBM服务器进行对比测试, 测试结果如表2-3所示。

PRCA组件和通用服务器的能效对比如图4所示。

本文对比了带宽, 能效比和并发连接数三组数据, 从图4可以看出, 在功耗基本相同的情况下, FP-GA的带宽和效能够高于IBM服务器。这说明基于TCP/IP硬件栈的服务器架构确实能够提升网络的性能。通过FPGA初步验证, 片上服务器结构已经获得高于通用服务器的性能和效能。如果进一步采用ASIC芯片实现当前结构, 将获得进一步10倍左右的性能和效能提升, 具体如图5所示。

参考文献

[1]Cheng Gang, Zhu Yong-xin, Rong Guo-guang, et al.Prototyping high efficiency cloud computing architecture:Implementation of content delivery network server on FPGA[C].Computing and Convergence Technology (ICCCT) , 2012 7th International Conference on, 3-5Dec.2012:1120, 1124.

[2]李胜后.TCP/IP协议及其安全性分析[J].信息技术, 2005 (4) :99.

[3]俞吉波.面向云计算高效能网络专用处理器体系结构设计与原理验证[D].上海:上海交通大学, 2013.

[4]彭湘凯.CDN网络及其应用[J].微计算机信息, 2005 (2) :7.

TCP/IP协议栈 篇8

在现场总线环境下, 通过因特网由远程设备监控各个总线设备节点来实现制造业网络化日益成为研究的热点, 这其中需要解决现场总线协议与TCP/IP的协议转换问题。现在较为流行的嵌入式网关中, 一般采取移植包含完整TCP/IP协议栈的操作系统。但由于完整的TCP/IP把大量的精力用在保证数据的传输的可靠性和对流量的控制上, 以至于它的实时性不强。因此研究并简化TCP/IP协议栈, 提高它的实时性来满足工业控制的需要是十分必要的。

1 硬件部分

考虑到工业现场较为严格使用环境, 本文采用在工业现场中使用较为广泛的AT91rm9200作为整个嵌入式网关的核心, AT91RM9200是Atmel公司推出的基于当前流行的ARM920T内核的一款32位RISC微控制器, 它的工作频率为180MHz, 运算速度高于200MIP, 内部集成了具有16k字节的指令和16k字节的数据高速缓存的处理器, 以及128k字节的只读存储器、外部总线接口EBI、USB设备和主控制器接口。特别是内部集成了10/100M以太网接口, 减少了PCB板连接引线的密度和集成芯片的数量。AT91rm9200主要应用于工业现场对系统控制、通信领域的应用。

AT91rm9200内部已带有MII接口的MAC控制器, 设计中选取符合IEEE802.3协议瑞昱的物理层芯片RTL8201, 它是一款提供MII接口10/100M高速以太网网络芯片。

图1是嵌入式系统中AT91rm9200与网络物理层接口芯片RTL8201的硬件连接示意图。RTL8201芯片信号输出经网络隔离变压器由RJ45接头联入Internet网络。

2 TCP/IP协议栈精简与实现

TCP/IP协议是目前互联网事实上的标准, 它包括数据链路层、网络层 (包括IP、ICMP协议等) 、传输层 (TCP或UDP议等) 和应用层 (HTTP、FTP等) , 每一层负责不同的功能。

2.1 数据链路层

在数据链路层, 主要实现了地址解析协议ARP和差错控制 (采用CRC) , 同时它负责对上层提供了网口的收发功能和初始化, 因为现场总线与嵌入式系统的通信数据流量不大, 不会出现拥塞的情况, 所以去除了流量控制功能。在软件设计上, 这一层首先开辟一块发送数据缓冲区和接收数据缓冲区, 并设置相应的地址变量和结构描述符。然后设置以太网包的数量, 长度和基地址。初始化以太网控制模块, 确定EMAC寄存器的值。主要数据变量和函数如下:

这个接收数据描述符的值定义在宏EMAC_TDLIST_BASE中, 具体数值可参考AT91rm9200的数据手册。

图2所示, 以太网mac头部分别由源主机mac地址和目的主机mac地址以及数据类型长度组成, 共14个字节, 因此定义一个mac头部结构体ETH_HEADER, 如下所示:

因为Ethernet II最大的数据帧是1518字节, 去掉14字节的mac头部和4字节的CRC, 实际IP层数据的最大传输长度为1500字节, 我们采取这个最大长度建立结构体MACFrame。

初始化EMAC写操作代码int Drv Eth Write (int Size) , 设置发送状态寄存器 (TSR) 的初值, 根据AT91rm9200数据手册, 本例中的值为0x20, 用来在帧发送完毕后设置各寄存器的状态;设置发送地址寄存器 (TAR) 的值为g WTx FDPtr;发送控制寄存器 (TCR) 为数据长度。

与此类似, 其他初始化函数为:

void Drv Eth Init () ;/*配置中断和PIO寄存器, EMAC配置、控制、中断使能寄存器, 并设置EMAC的专用地址*/

void Rx_proc (void) /*接收例程*/

void Receive Packets (U8*buf, U16 size) ;/*接收包处理*/

在数据链路层需要实现ARP协议。ARP协议负责将某个动态设定IP地址解析成对应固定的MAC地址。当一个基于TCP/IP的应用程序需要从一台主机发送数据给另一台主机时, 它的帧信息中附有目的主机的IP地址。由IP地址映射到实际MAC地址。这需要发送ARP广播消息。当ARP找到了目的主机MAC地址后, 就可以形成待发送帧的完整以太网帧头。最后, 协议栈将IP包封装到以太网帧中进行传送。

2.2 网络层和传输层

网络层涉及的是将源主机发出的分组经各种途径送到目的主机, 与数据链路层不同的是它可能经过若干个节点而达到目的主机。它是TCP/IP模型中最重要的一层, 主要实现路由选择, 拥塞控制和网络互连等功能。网络层最重要的协议是IP协议, 主要负责主机间数据传输的路由及网络数据的存取, 同时为ICMP、UDP、TCP提供分组发送服务。

IP协议报文主要由头部和正文两部分组成, 其中头部长度为20字节的固定部分和可变长度选项。

我们只使用20字节的固定部分, 图2为其组成示意图。

根据图4定义IP头部结构体IPHDR如下:

在这一层主要数据和函数如下:

void IP_Process (U8*buf, U16 size) ;/*IP帧处理*/

void IP_ICMP (U8*buf, U16 size) ;/*ICMP处理*/

U8 Tx Buf[256];/*发送缓冲区*/

static U8 Rx Buf[1460];/*接收缓冲区*/

传输层的最终目标是向其用户--应用层进程提供有效、可靠和价格合理的服务。为达到这一目标, 传输层利用网络层提供的服务。传输层的服务有两种类型:面向链接的传输服务和面向无连接的传输服务, 与此对应两种传输协议是:TCP协议和UDP协议。

TCP协议是在不可靠的网络上提供可靠, 面向连接的端到端传输服务。一个TCP报文同样由头部和正文组成, 发送数据时应用层将报文传送到传输层后被加上TCP头部, 就构成TCP数据传送单位。它将继续传送到网络层, 在网络层加上IP报文头部, 组成IP报文。同样, 在接收时, IP报文将头部去掉, 得到TCP报文提交给传输层, 传输层再去掉TCP报文得到应用层报文提交给应用层。头部分为长度为20字节的固定部分和长度任意的可选部分。我们同样只采取固定长度部分。图3是TCP头部格式。

源端口和目的端口用来和双方主机的IP地址一起组成四元组唯一标识一条TCP连接。顺序号用来说明TCP报文中第一个字节的编号, 确认号用于表示该序号之前的字节已被正确接收。希望接收下一个字节的顺序号。TCP头部中几个标志位的含义是

URG:紧急, 指示紧急数据字段是否有效

ACK:确认, 指示确认号字段是否有效

PSH:急迫, 表示要求马上发送数据:

RST:复位, 用于对本TCP连接进行复位

SYN:同步, 用于建立TCP连接

FIN:终止, 用于释放TCP连接。

按照以上标志位定义TCP的连接状态:

#define CLOSED0/*没有连接状态*/

#define SYN_RCVD 1/*表示接收到SYN报文*/

#define SYN_SENT 2/*表示已发送SYN报文*/

#define ESTABLISHED 3/*已建立连接*/

#define FIN_WAIT_1 4/*已经发送了FIN报文*/

#define FIN_WAIT_2 5/*发送FIN报文后收到ACK*/

#define CLOSING6/*没有收到FIN的ACK*/

#define TIME_WAIT 7/*收到ACK即将关闭连接*/

#define LAST_ACK8/*等待ACK, 关闭连接*/

#define DATALINK9/*已经建立连接, 要求马上发送数据*/

#define NOREMOTEMAC 15/*没有目的主机MAC地址*/

由图5定义TCP头部结构体TCPHDR, 如下所示:

因为本课题必须保证遥操作机器人工作的可靠性, 所以设计的精简TCP/IP协议栈主要包括ARP协议、IP协议、TCP协议、ICMP协议, 不采用可靠性不高的UDP协议。

根据TCP/IP头部中的地址、端口、顺序号和连接状态我们定义结构体CONNECTION, 来全面描述当前传输帧的详细属性。下面是这个结构体的定义。

构造协议的程序按照TCP的标志位和当前事件分为发送程序和接受程序。程序的流程图为图6, 对型函数为void IP_Process (U8*buf, U16 size) ;和图7, 对应函数为void tcp_send (U8*sbuf, U16 size) 。

事件分为接收事件、发送事件、ARP事件。

在嵌入式系统网关主函数中, 与TCP/IP协议栈相关的部分如下:

3 设计测试结果与总结

在测试阶段, 通过嵌入式系统的JTAG和RS232串口与主机进行通信来观察数据的传输情况。首先由主机发送数据给嵌入式网关, 然后由嵌入式网关的网络模块将数据重新发回主机。测试结果表明, 由精简TCP/IP协议栈组成网络模块能够实现与主机的网络互联通信。

在接下来的测试中, 我们通过CAN节点采样步进电机的转速和相位, 然后通过嵌入式网关将CAN总线数据转换为TCP/IP数据, 成功地被主机应用程序接收。进一步测试表明, 在非移植操作系统的嵌入式网关中, MPU占有率较低, 因此系统性能更为稳定, 精简TCP/IP协议栈使数据传输的实时性也有了较大的提高。

摘要:介绍了基于AT91rm9200为核心的嵌入式网关中一种以太网络模块精简TCP/IP协议栈的设计。内容主要包括对TCP/IP协议栈的简要分析、精简思想和程序上的实现。嵌入式网关通过设计和现场测试, 取得了很好的实际效果。

关键词:TCP/IP协议,以太网,报文头部,数据接收与发送流程

参考文献

[1]徐海军, 刘金刚.基于ARM核的嵌入式TCP/IP协议栈简化实现[J]计算机应用研究, 2006.

[2]W Richard Stevens.TCP/IP详解 (卷一) :协议[M].范建华, 译.北京机械工业出版社, 2000.

浅析TCP/IP协议及其安全 篇9

TCP/IP协议其实是一组协议,它包括许多协议,组成了TCP/IP协议栈。但传输控制协议(TCP)和网际协议(IP)是其中最重要的,确保数据完整传输的两个协议。

TCP/IP网络由四个层次组成[1],如图1所示。

TCP/IP协议本身存在的一些安全性问题可以被攻击者用来进行安全攻击,如TCP SYN Flood,IP欺骗等。因此,通过对典型TCP/IP协议的安全性分析,指出了存在的问题以及相关的防范措施,下面就目前比较常见的几种攻击方式为例做一个简单的介绍,特别对出现机率最大的分布式拒绝服务攻击做了重点分析[2]。

1 拒绝服务(DOS)攻击

它是针对单台主机或多台主机执行的一种入侵性攻击,目的是拒绝为特定用户提供服务如http、FTP等,最终耗尽系统中的所有资源。它可以针对服务器、最终用户、网络链接和路由器发起攻击。目前比较常见的两种DOS攻击是SYN FLOOD、PING洪泛,实质上都是针对TCP/IP协议本身的不足来进行攻击的。另外目前拒绝服务有三种常见的攻击方式:服务过载、消息流和信号接地。其中服务过载指的是当大量的服务请求发向一台计算机中的服务守护进程时,就会发生服务过载。对于管理员可以使用一个网络监视工具来发现这种类型的攻击,甚至发现攻击的来源,所采取的策略是限制可能带来的危害-区分子网等和快速和有效地监视网络内的数据流动情况,及时发现出现的网络瓶颈。

2 端口扫描攻击

在这里所说的端口扫描,就是利用网络套接字编程与目标主机的某些固定端口建立相关连接并且进行TCP协议的验证等操作[3],从而查看目标计算机的相关端口是否是处于打开状态、相关计算机开放了哪些主要的服务等等。

3 电子邮件攻击

E-MAIL通常是网络上使用人群最多的一种交流方式。入侵者可以利用某些邮件上嵌入某此炸弹应用程序向目的邮箱发送很多无用的、内容重复的垃圾邮件,从而使目标邮箱由于无法再接收新邮件最终导致其不能正常使用。当垃圾邮件的发送量过大时,还有可能造成相关邮件系统瘫痪。与其它的攻击技术相对比来说,这种攻击方法见效快、并且简单。

4 分布式拒绝服务攻击

它是一种基于拒绝服务攻击的特殊形式和一种分布式、互相协作的大规模攻击方式,防范起来非常困难,而且具有很大的破坏能力。分布式拒绝服务攻击一般能分为3个层次:攻击者;主控制端;代理服务端。

目前采用最多的攻击工具有Trinoo、TFN、TFN 2K、Stacheldraht这四种,下面就开始详细讲述:

Trinoo攻击方法是向被攻击目标主机的随机端口发出全0的4字节UDP包,通讯端口为:攻击者主机到主控端主机:27665/TCP,主控端主机到代理端主机:27444/UDP,代理端主机到主服务器主机:31335/UDP。

TFN由主控端程序和代理端程序两部分组成,主要采取的攻击方法是SYN风暴、Ping风暴、UDP炸弹、Smurf,具有伪造数据包的能力。

Stacheldraht攻击类型是UDP冲击、TCP SYN冲击、ICMP回音应答冲击、ICMP广播。

在防范此攻击之前首先要检测是否为分布式拒绝服务攻击,主要依靠以下方法:

根据异常情况来分析,若网络访问量突然剧增,经过嗅探器分析,有大量的异常的数据包,如不通过正常的tcp连接建立三次握手,或者是建立三次握手后没有正常的关闭连接,或者存在大量的广播包,例如icmp包,这非常有可能是分布式拒绝服务攻击造成的[4]。

另外当外部访问速度突然变慢,或者不能访问,可是本地计算机的访问量却不大,这极有可能是路由器本身的配置造成的,咨询一下管理人员是否有人对路由器等设备进行过重新配置,或者检查一下你的对等ISP线路是否出现问题。

主机反应突然变得非常慢,这要经过嗅探器进行侦听,通常有两种可能性,一种是数据流量确实太大,有可能是遭受拒绝服务攻击,还有就是编写应用程序时出现问题,导致整个系统资源耗尽。

使用检测分布式拒绝服务工具,可以发现入侵者植入系统内部的代理服务,并可以把它从系统中删除掉。例如ngrep监听工具,它经过修改之后可以监听大约五种类型的tfn2k拒绝服务攻击(如targa3,SYN flood,UDP flood,ICMP flood和smurf),它还有一个循环使用的缓存用来记录ICMP和DNS请求。如果ngrep监听工具发现存在攻击行为的话,它会将其缓存中的内容输送出来并继续记录ICMP响应请求。假如入侵者通过ping目标主机的方式来探测攻击目标的话,在入侵过程中或之后记录下ICMP的回应请求是一种比较低级的攻击者采用的方法。由于入侵者还很可能使用其他的服务来测试其入侵的效果(例如http),所以对其他的标准服务也应当有非常详细的日志记录。

阻止此类攻击所采取的常用安全策略为:

与网络服务提供商互相合作,最好能与上一级的网络主干ISP进行良好的合作。分布式拒绝服务攻击对带宽的使用是非常严格的,不管使用任何方法都不可以使自己的网络对它的上一级进行控制。最好能够与网络ISP进行沟通,请求他们帮助实现对网络路由的访问控制,以实现对网络带宽的限制以及不同的访问地址在同一时间对带宽的占有率。最好请求ISP帮助监视网络流量,并在出现攻击时允许访问他们的路由器。

安装入侵检测系统和监控异常网络流量,在防御网络攻击方面,安装入侵检测系统可以发现是否有攻击事件正在进行,立即对攻击行为进行告警[5]。在最快的时间内对入侵做出反应。此外,也要经常监控网络流量,注意是否有异常流量的产生。

不仅要对对外提供服务的主机先进行优化,而且对于隐性的有可能遭受攻击的主机或服务器也要进行同样的安全保护设置。禁止服务器上一切不使用的服务,打上漏洞,进行安全配置。另外,用防火墙对提供服务的计算机进行保护,如果是访问量大的主机要进行负载均衡处理。将网站可以布署在多个不同位置的物理主机上,这样每一台主机仅包含了整个网站的一部分,防止了在遭受攻击时网站全部瘫痪。

迅速启动应对策略,尽可能快速的追踪攻击包,如果出现入侵并不是来自内部应当马上与ISP取得联系。由于攻击者可能伪装攻击包的源地址,因此不能完全相信此源地址。应当在最短的时间内判断出是否遭到了拒绝服务攻击,因为一旦攻击停止,只有很短的一段时间您可以追踪攻击包,最好的方法和网络安全公司或其它组织一起来追查攻击者。

获得当地信息安全监察部门的支持,由于主机日志本身属于电子证据,可以被非法修改。所以一旦入侵发生,应该及时与信息安全监察部门联系,及时提供主机日志作为保全证据,以利于追查和起诉入侵者,便于以后用法律手段追回经济或其它损失。

5 病毒和木马

计算机病毒实质上也是一种代码,制造者通过修改其它应用程序的方法将自身精确拷贝或者可能把演化的拷贝植入其它程序,从而感染其它程序,但它本身不是利用操作系统运行的错误和缺陷的程序,病毒是正常的用户程序。

计算机病毒是客观存在的,不要以为你的机器上暂时没有出现病毒或病毒的破坏不大而对它产生轻视心理,俗话说得好“不怕一万,就怕万一”,我们一定要具备正确的防病毒意识,对一些危险的病毒发作日更要提前做好预防工作。

静态查杀病毒只是一种被动的方式,为安全起见,最好能在主机内安装一种能实时防杀病毒的应用程序,也就是起到“防火墙”的作用。

而木马确有很大的不同,木马程序通常可以入侵用户的计算机并进行相关破坏,它经常被伪装成正常应用程序来使用户在不知情的情况下打开带有木马程序的邮件附件或从正常的网站上直接点击下载,所以用户一旦打开了邮件附件或者运行了相关程序之后,它们就会传统的应用程序一样安装在攻击的电脑中,并在被入侵的主机中隐藏一个可以在操作系统自启动时必须要加载的进程。当用户登陆到互联网时,这个应用程序就会发送信息给攻击者,来记录下用户的地址以及开放的端口。入侵者在收到相关信息后,再利用这个运行在其中的程序,就可以按照自已的要求来修改受害者计算机的各种参数设置、查看整个磁盘资源中的所有内容等,从而最终达到可以完全控制计算机的目的。

总之,如何更好的解决以上网络安全问题已经成为了研究重点。

参考文献

[1]宋劲松.Snort2.0入侵检测[M].北京:国防工业出版社,2004:1-200.

[2]RIPTECH.Internet Security Threat Report[EB/OL].http://www.rIPtech.com/securityresources/istreports.html,2002.

[3]崔晓垣.网络入侵防御系统研究[J].信息安全与通讯保密,2005,17(3):109-111.

[4]王丽辉,李涛,张晓平等.一种联动防火墙的网络入侵检测系统[J].计算机应用研.

TCP/IP协议与信息安全 篇10

TCP/IP协议是Internet上使用最流行的协议,如今已成为了Internet的一种标准,本文对TCP/IP协议的工作原理与安全性进行了简要分析。

1. TCP/IP协议工作原理

1.1 TCP/IP协议族分层

TCP/IP协议族是由处于不同层次上的多个协议组合而成的。TCP/IP与传统的OSI模型不同主要分为四个层次如图1。

每一层有着具体的功能。链路层有时也被称为网络接口层,主要包括操作系统中相关的设备驱动程序与计算机硬件中相对应的网络接口卡,共同对与电缆(或其他任何传输媒介)的物理接口细节进行处理。网络层主要是对分组在网络中的活动进行处理,在TCP/IP协议族中主要包括了IP协议、ICMP协议以及IGMP协议。传输层的主要功能是为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中主要有两种互不相同的传输协议:TCP协议与UDP协议。在应用层主要是对应用程序的的细节进行处理。

1.2 TCP/IP协议主要工作流程

TCP/IP协议主要工作流程如下(以文件传输为例):

(1)源主机应用层将相关数据流传送给传输层;

(2)传输层将数据流进行分组,并加上TCP包头传送给网络层;

(3)在网络层加上包括源、目的主机IP地址的IP报头,生成IP数据包,并将生成的IP数据包传送至链路层;

(4)在链路层将MAC帧的数据部分装入IP数据包,然后将源、目的主机的MAC地址和帧头加上,并根据目的主机的MAC地址,将完整的MAC帧发往目的主机或者IP路由器;

(5)MAC帧到达目的主机后,在链路层将MAC帧的帧头去掉,并将去掉MAC帧头的IP数据包传送至网络层;

(6)网络层对IP报头进行检查,如果校验与计算结果不同,则将该IP数据包丢弃,如果结果一致就去掉IP报头,将TCP段传送至传输层;

(7)传输层对顺序号进行检查,判断是否是正确的TCP分组,然后再对TCP报头数据进行检查。如果正确就源主机发出确认信息,如果不正确或者是出现丢包,就想源主机发出重发要求;

(8)在目的主机的传输层将TCP报头去掉后根据顺序对分组进行组装,然后将组装好的数据流传送给应用程序。

2. TCP/IP协议的安全性

TCP/IP协议在设计之初没有对安全问题考虑很多,但是在安全性方面仍然有着其自身的优势。

首先,TCP协议是面向连接的协议,指的是在进行通信前,通信双方需要建立起连接才能够进行通信,在通信结束后终止连接。当目的主机接收到由源主机发来的IP数据包后,会通过TCP协议向源主机发送确认消息。

同时在TCP协议中有一个重传记时器(RTO),源主机从IP包发送时开始计时,如果在超时前接收到了确认信号,计时器归零;如果计时超时,则表示IP包已丢失,源主机重传。利用这个计时器能够保证数据传输的完整性。TCP协议为应用层提供了面向连接的服务,从而保证了网络上所传送的数据包被完整、正确、可靠地接收。

其次,利用IP协议进行信息传送,就像信息的明信片传送,对于运营商设备、协议乃至网络拓扑对用户均属开放可见。这也就是说,安全服务的提供不需要应用程序、其他通信层次和网络部件做任何改动。但是这种透明性也是容易被利用的一种安全漏洞。

3. 利用TCP/IP协议保护信息安全

虽然TCP/IP协议存在着较为严重的安全隐患问题,但是能够利用协议本身来实现信息隐藏,从而达到保护信息安全的目的。

对TCP/IP协议头数据格式进行分析,能够发现在这两个头结构中存在多个没有用于正常的数据传送或者是数据包的发送的区域。利用这些区域可以对数据进行保存和传送从而达到保护信息安全的目的。

当源主机与目的主机建立起TCP连接后,源主机就可以对要发送的数据进行编码转换,根据一定的算法将需要隐藏的数据装入到IP标识域内。而在目的主机则将所隐藏的数据分离出来,利用特定的编码算法对数据进行还原。

利用时间戳实现信息隐藏。时间戮是一个单调递增的值,从TCP/IP协议中可知,当一个数据分组穿过互联网时,时间戳选修会使得各个系统将它当前的时间标记在数据分组的相关选项中。

利用时间戳实现信息隐藏指的就是利用处理TCP包或者是IP包时所产生的轻微的延时来对TCP时间戳选项或者IP时间戳选项的低位段进行修改,当对协议的时间戳选项进行相应的修改后,根据TCP/IP协议的特点,会在网络中形成一个专门的信道来对隐藏信息进行传送。

参考文献

[1]杨红敏.TCP/IP技术浅谈[J].科学之友,2011,(18):16-18.

[2]季云龙,邵国强.TCP/IP协议的网络安全[J].电脑学习,2011,(02):29-30.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:基本原理概论 下一篇:详解应届毕业生的户口、档案、报到证、三方协议