时间:2022-12-05 00:07:07
绪论:在寻找写作灵感吗?爱发表网为您精选了8篇tcp协议,愿这些内容能够启迪您的思维,激发您的创作热情,欢迎您的阅读与分享!
关键词: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.
关键词: 流控制传输协议; 传输控制协议; 单路径; 多路径; 吞吐率; 延迟
中图分类号:TP393 文献标志码:A 文章编号:1006-8228(2013)05-03-04
Comparison study of TCP and SCTP routing protocol
He Shijie, Tong Mengjun
(School of computer science, Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China)
Abstract: In order to get better understanding of SCTP protocol performance, the NS-2 network simulation software is utilized to compare TCP and SCTP protocols from a single path and multi path. The experimental results show that, in response to the link's deteriorating condition, the SCTP protocol has a larger throughput capacity , and also a higher stability, and it can meet the transmission requirement of high performance network.
Key words: stream control transmission protocol; transmission control protocol; single path; multi path; throughput rate; delay
0 引言
SCTP代表的是流控制传输协议,它是由IEFT的信令传输工作组(SIGTRAN)新近提出的一种面向多媒体通信的流控制协议(SCTP),用于在IP网络上传输PSTN信令消息,即通常所说的SS7 over IP。
在国内,1985年是流控制传输协议技术开始萌芽的时期。从1985到1995年,该技术主要局限于计算机网络中接人端口数据流的控制技术,以防止计算设备之间大量数据互相通信时出现阻塞,保证更高的传输效率和可靠性。目前对该技术的研发仍处于较浅的层次,对整个IP网络中实规PSTN信令传输的技术还鲜有涉及;国内的SCTP研究还主要侧重于应用方面,比如SCTP与TCP的比较、SCTP在移动环境下的性能研究(例如平滑切换,移动IP,最后一跳性能恶化问题,基于SCTP移动Internet传输模型等)、基于独立路径拥塞控制的SCTP负荷分担机制研究、结合SS7的研究,以及SCTP的安全问题研究、军事应用等。
国外则更侧重于起草标准,如:定义SCTP负荷分担草案(多路径同时传输);制定部分可靠传输标准;提交建立SCTP偶联后的动态地址重配置;提交SCTP API草案;定义SCTP对移动IP的支持;提交单播拥塞控制建议标准;TCP友好可变速率控制等等。目前,IETF致力于把SCTP作为一种通用的传输协议。对SCTP本身的研究集中在对其功能的完善和扩展上,主要是从两个本质特点入手:多路径和多流。同时,对SCTP应用的研究主要集中在两个方面:在移动网络中的应用和对多媒体的传输。
本文的主要研究工作是利用NS-2构建仿真平台,对SCTP和TCP这两种协议进行对比,并根据仿真的结果计算、分析和比较这两种协议的性能,发现它们各自的优缺点。
1 TCP和SCTP的单路径的对比研究
单路径的实验拓扑图如图1所示,一共有6个节点,2个路由节点。其中0-2是发送节点,5-7是相应的接收节点。3个发送节点都绑定了FTP应用,其中0号节点的数据包发送往5号节点,流标签为1;1号节点的数据包发送往6号节点,流标签为2;2号节点的数据包发送往7号节点,流标签为3。设置最大的传输单元为1500。路由3、4间的droptail队列大小分别为5、10。本实验主要更改了1号节点和6号节点的传输协议。现在设0-5号节点的路径为L1,1-6号节点的路径为L2,2-7号的路径为L3。变量主要在L1上面。其中发送节点到路由节点3,路由节点4到接收节点的带宽均为10Mbps,延迟均为15ms。路由节点3、4直接的带宽为1.7Mbps,延迟为15ms。这样路由节点3、4之间就成为接收方和发送方直接的瓶颈。
图1 实验拓扑图
实验一的过程是:在0.5s的时候三个节点同时开始发送数据,4s的时候断开L1,7s的时候断开L2。这样做的主要目的是让L1的数据包先在有两个TCP传输协议竞争的情况下进行数据传输,然后逐渐断开其他两个链路的数据传输,来观察TCP和SCTP在有TCP竞争条件下,数据传输的吞吐量,延迟和丢包率。吞吐量如图2所示。
图2 实验一中TCP和SCTP数据的吞吐量
图2所表示的是链路L2上的数据吞吐量。X坐标轴表示时间的变化,单位为s,Y坐标轴表示接收的数据量,单位为Byte。红色线表示TCP协议在droptail队列为5时的数据吞吐量。绿色线表示TCP协议在droptail队列为10时的数据吞吐量。蓝色线为SCTP协议在droptail队列为5时的数据吞吐量,黄色为SCTP协议在droptail队列为10时的数据吞吐量。从图2中可以看出,总体上SCTP的吞吐量远远高过TCP。对于SCTP来说,在droptail队列为5的时候,其吞吐量比10的时候略高,但差距不是很大。在两个TCP数据传输断掉以后,两种情况下的吞吐量趋于相同,而且数据吞吐量趋于稳定。看趋势,在9s以后,droptail队列为10的时候,其吞吐量会略大于5的时候。对于TCP协议来说,很明显,在droptail队列为10的时候,其吞吐量高于5的时候,在两个TCP协议的数据传输都断掉以后,数据吞吐量的增长率趋于平行式增长。
图3 实验一中TCP和SCTP延迟对比
图3是实验一中SCTP和TCP两种协议数据传输延迟的对比。如图所示,是TCP和SCTP在droptail队列为5的时候,两种协议延迟的对比。红色线为TCP的延迟,绿色的为SCTP的延迟。X坐标轴表示数据传输的时间变化,单位为s,Y坐标轴表示两种协议在某个时刻的延迟,单位为s。从图3中可以看到,两者的数据线略有交叉,SCTP的延迟略高于TCP;TCP的延迟是在一个范围内上下波动,而SCTP的延迟呈一种阶段性的梯度变化。从这里也可以看出两种数据传输的差别:TCP在链路达到稳定的时候,每次传输的数据量一定;而SCTP的数据传输,在没有拥塞避免的情况下,是呈指数增长的。
根据实验一的拓扑图,更改链路L1和L3的数据传输时间,此为实验二。在0.5s的时候1号节点开始发送数据,在1.5s的时候0号节点开始发送数据,在4.5s的时候3号节点开始发送数据,在7.5s的时候将L1和L3两条链路断开连接,8s的时候结束数据传输。通过观察TCP和SCTP协议在逐渐有一个TCP协议和两个TCP协议竞争的条件下的数据吞吐量,延迟和丢包率来对比两种协议。
图4 实验二中TCP和SCTP两种协议的数据吞吐量
在图4中,表示的是链路L2上的数据吞吐量。X坐标轴表示时间的变化,单位为s,Y坐标轴表示接收的数据量,单位为Byte。红色线表示TCP协议在droptail队列为5时的数据吞吐量。绿色线表示TCP协议在droptail队列为10时的数据吞吐量。蓝色线为SCTP协议在droptail队列为5时的数据吞吐量,黄色为SCTP协议在droptail队列为10时的数据吞吐量。从图4中可以看出,总体上来说,在相同的droptail队列值的情况下,SCTP的吞吐量远大于TCP的吞吐量。在两个TCP竞争数据传输出现后,它们的吞吐量都有一个短暂性的下降,然后继续趋于上升。在8.0s的时候,两种协议的吞吐量开始趋于稳定。
对比实验一和实验二中数据吞吐量的图,我们看到,由于实验一和实验二的区别在于竞争的TCP协议出现的时间不同,在实验一的环境下,SCTP在有其他协议竞争的条件下,能够更容易、更快地达到数据吞吐的稳定状态,这样非常有利于数据的传输。
图5是实验二中链路L2在droptail队列值为10的时候的延迟对比。红色线为TCP的延迟,绿色的为SCTP的延迟。X坐标轴表示数据传输的时间变化,单位为s,Y坐标轴表示两种协议在某个时刻的延迟,单位为s。由图5中可以看出,SCTP与TCP延迟随时间的走势相互交叉,与实验一中的情形类似,SCTP的延迟略高于TCP。
图5 实验二TCP和SCTP的延迟对比
图6 TCP和SCTP竞争时的延迟和吞吐量
图6是在实验一环境下,SCTP和TCP相互竞争下的延迟和吞吐量的对比,主要是链路L2和L3的对比,红色线表示的是TCP,绿色线表示TCP。图6上图中,X坐标轴表示数据传输的时间变化,单位为s,Y坐标轴表示两种协议在某个时刻的延迟,单位为s;图6下图中,X坐标轴表示时间的变化,单位为s,Y坐标轴表示接收的数据量,单位为Byte。从图6中可以看出,情况基本与上面的实验保持一致。在相同的droptail队列值的情况下,SCTP的吞吐量远大于TCP,但是TCP和SCTP的延迟相互交叉,SCTP延迟略高于TCP。
2 TCP和SCTP的多路径的对比研究
多路径的实验拓扑图如图7所示,节点0-2合起来是一个发端,节点3-5合起来是一个收端。0是核心节点,1、2是接口,即该端点的两个IP地址;3也是核心节点,4、5也是接口,也即该端点的两个IP地址。1和4路径命名为if0;2和5路径命名为if1。
在SCTP传输过程中,数据只能从接口发或收,不能直接从核心节点发或收。该实验过程为:应用层传输FTP数据,在0.5s后开始传输;在第5s前,路径if0、if1的带宽为5M,时延为50ms;在第5s,路径if0性能恶化,带宽变成1M,时延变为200ms;在第8s,传输结束。
图7 SCTP多路径仿真拓扑图
由于TCP没有多路径这个特点,所以,要与SCTP作对比,只能重新建立拓扑图。拓扑图如图8所示:数据传输过程和SCTP一样,应用层传输FTP数据,在0.5s后开始传输;在第5s的时候链路发生恶化,带宽变成1M,时延变为200毫秒;在第8s,传输结束。
图8 相应的TCP拓扑图
对于这两种协议延迟方面的比较,我们在上一节中已经有过很详细的对比,所以在这里,主要针对两种协议在多路径的情况下,对数据吞吐量作比较,如图9所示。
图9 多路径下TCP与SCTP吞吐量的比较
如图9,其中为了表示自己搭建的TCP网络和SCTP网络有对比性,所以测试了在图8中拓扑图中SCTP数据的吞吐量,如图9中的绿线。从图中来看,在6.5s以前两种拓扑图中SCTP的数据吞吐量完全吻合,这样看来,两种拓扑图是具有可比性的。图中蓝色线表示TCP协议的吞吐量,黄色线表示if0路径上SCTP的吞吐量,红色线表示if1路径是SCTP的吞吐量。X坐标轴表示时间的变化,单位为s,Y坐标轴表示接收的数据量,单位为Byte。从图9中看,5s之前链路没有恶化,SCTP默认if0是主路径,5s之后链路if0恶化,吞吐量开始下降,此时,因为有另一条路径if1的存在,而且链路状态比if0好,SCTP开始将if1作为主路径进行传输,图中if1的吞吐量开始上升,由此可以看出,SCTP的吞吐量在经过一段时间的降低之后,会恢复原来的吞吐量,使数据传输不受影响。由图9可以看出,TCP在路径出现恶化的时候,吞吐量开始下降,如果路径得不到缓解,吞吐量会受到很大的影响。由此可以看出,SCTP多路径的特点较TCP存在很大的优势。我们再来分析路径if0数据传输与时间的关系,如图10所示。图10中有上(红色)、中(绿色)、下(蓝色)三条线。上线(红色)代表 SCTP 把数据包发送到缓存,即入队列;中线(绿色)代表数据包从缓存注入到网络,即出队列;下线(蓝色)代表数据包从收端反馈回来的证实 SACK。纵坐标代表所发送的数据包序列号,横坐标代表时间,斜率指示传输速率(下面类似图的信息也是这样的)。在第5s,带宽和时延发生变化,路径性能变差,所以第5s后的斜率小于第5s前的斜率,即第5s后的传输速率小于第5s前的传输速率。
图10 if0上数据传输与时间的关系
3 结束语
本文主要是通过NS-2构建仿真平台,对TCP和SCTP在单路径和多路径的条件下进行对比。通过两个实验对比发现,两种协议在数据传输的延迟方面,SCTP协议略高于TCP协议,相差不是很大,但是SCTP的数据吞吐量远远大于TCP协议。由于SCTP具有多路径和多重定址的特点,在应对链路恶化的情况时,SCTP表现出更高的稳定性。作为一个新的传输协议,SCTP还具有很大的发展空间,SCTP较TCP更能满足高性能传输的要求,随着IP网络的迅猛发展,SCTP一定会有更广阔的应用空间。
参考文献:
[1] Esbold Unurkhaan, Erwin P, Andreas Jungmaier. Secure SCTP-A
Versatile Secure Transport Protocol[J].Springer,2004.10(3):273
[2] V. Jaclbson. Congestion Avoidance and Contrl[J].ACM SIGCOMN,
1988.36(2):273
[3] K.Fall and S.Floyd.Simulation-based comparisons of Tahoe Reno
and SACK TCP[J]. ACM Computer Communication Review,1996.26(3):5
[4] L.Brakmo and L.Peterson.TCP Vegas:End to End Congestion
Avoidance on a Gloabal Internet[J]. IEEE Journal on Selected Areas in Communication,1995.13(8):1465
[5] 周开波,刘桐,蒋皓等.mSCTP协议异构网络切换性能评估[J].现代电
信科技,2011.3(3):19
[6] 方路平,刘世华,陈盼等.NS-2网络模拟基础与应用[M].国防工业出
版社,2008.
[7] 胡文静.SCTP主路径自动切换的研究[D].吉林大学硕士学位论文,
2006.
[8] 叶凌伟,陈雁.SCTP与TCP的功能对比及应用分析[J].中国数据通
信,2003.1(2):43
[9] 贺,张继棠.流控传输协议SCTP的研究[J].山西电子技术,
2005.11(5):21
[10] 黄晓波,郑应平.流控制传输协议与TCP协议的比较[J].微型机与应
用,2005.7(6):37
[11] 成为青.流控制传输协议概述[J].电子电气教学学报,2003.4(2):31
关键词: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.
关键词:NDK; TMS320DM642; TCP/ IP
1、 NDK 的结构
TI公司依据C6000芯片推出了TCP/IP NDK(Network Developer's Kit)开发套件, 其主要构成包括: (1)支持TCP/IP 协议栈程序库。其中主要含有的库: 支持TCP/IP网络工具的库,支持TCP/IP 协议栈与DSP/BIOS平台的库,网络控制以及线程调度的库。(2)示范程序。其中主要包括DHCP/Telnet 客户端, HTTP 数据服务器示范。(3)支持文档。包含用户手册、程序员手册和平台适应手册。NDK 采用紧凑的设计方法, 实现了用少量的资源耗费来支持TCP/IP。从实用效果来看, NDK仅用200-250K程序空间和95K 数据空间即可完成常规的TCP/IP 服务。
NDK相对于操作系统和底层硬件是透明的, 因为这是由OS。LIB 提供操作系统DSP/BIOS的接口和HAL。LIB 提供对硬件的支持来实现的。在NDK的TCP/IP协议栈中STACK。LIB 包括了顶层套接字到底层链路层的所有功能, NETCTRL。LIB在整个协议栈中起关键作用, 协调操作系统和底层硬件驱动, 管理所有网络事件, NETTOOL。LIB 提供配置网络各种服务。
2、NDK 在DSP/BIOS 下的使用
DSP/BIOS 是TI 开发的实时微型操作系统, 支持线程管理、实时分析、周期函数、调度软件中断以及外部硬件中断与各种外设的管理。使用DSP/BIOS 所有与硬件有关的操作都必须借助操作系统本身提供的函数完成, 应避免直接控制硬件资源。基于DSP/BIOS 的程序与传统开发过程是不同的, 用户编写的程序由DSP/BIOS 调度, 不再按标写的次序顺序执行。同样开发基于DSP/BIOS的网络应用程序也必须要遵循一些原则。
在DSP/BIOS 下使用NDK 必须注意以下几点: (1) 为了保证使用NDK 的工程项目能正确编译, 在CCS 的Link Order 要按一定的顺序添加库文件, 推荐的顺序是: NETCTRL。LIB、HAL_xxxLIB、STACK。LIB、OS。LIB; (2)在使用NDK 的过程当中, OS和HAL 会创建三个内存段, 分别是PACKETMEM、MMBUFFER、OBJMEM, 必须在CMD 文件中为这三个段在内存中分配存储空间;(3) 至少要使用32K 的cache, 否则应用程序会产生不可预料的错误;(4) 必须在CDB文件中为HAL 创建一个周期为100ms 的PRD 函数, 用来驱动llTimerTick()系统函数;(5) OS 需要钩子函数为TCP/IP 堆栈加载和保存私人变量指针, 所以必须在CDB 文件中创建两个钩子函数NDK_hookInit()和NDK_hookCreate();(6)必须把工程项目的IncludeSearching Path 指向NDK 安装目录下的inc 文件夹。
3、NDK 性能测试
测试NDK性能既有主观性又有客观性。主观性适应为实际测试要受到很多环境因素的影响。客观性是因为使用标准的工具,并且结果可重现。 所以只能是性能的估计性测试。影响NDK性能的主要因素有:
socket API: NDK既支持非拷贝的数据包socket,也支持基于缓冲区的典型socket,甚至非拷贝的直接接收的TCP数据流。性能随所采用的策略变化而变化。
socket 缓冲区: socket缓冲区影响TCP发送和接收的窗口大小,并且决定每次发送数据流大小,这对网络性能有很大的影响。
CPU速度:在cache大小一定的情况下,网络性能与CPU速度成正比。CPU cache: cache的大小对网络性能有巨大的影响。
网络硬件设备:以太网硬件设计的好坏直接影响DSP和网络接口的速度。
外部存储器(EMIF)接口:对于和DSP外部存储器接口相连的以太网设备, EMIF的速度对外部解码逻辑有额外的影响。
下面的测试由TI提供,测试不仅兼顾最佳的性能而且考虑到应用的实际情况,比如socket缓冲区大小为8K,而不是32K 或64K,因为这在嵌入式设备中是不切实际的。测试的过程是DSP执行低优先级的网络任务,PC机执行客户基准测试程序, 然后与DSP不执行网络任务时CPU的负载情况做对比。
4 、结论
TI推出的NDK网络开发工具不仅可以使技术人员快速开发基于DSP的网络应用程序,而且具有十分可靠的性能,这使得C6000系列芯片完全可以胜任大数据量的视频网络传输的要求,是开发嵌入式网络视频设备的首选。
参考文献
[1]Texas Instrument。TMS320C6000 Programmer ' s Guide(Rev。 I)。
【关键词】TCP 协议;有色Petri网;形式化描述;可达树
随着数据通信和网络的发展,现在TCP/IP(Transfer Control Protocol/Internet Protocol)协议簇成为占主导地位的网络体系结构,被广泛的使用。有色Petri网(Colored Petri Net,CPN)是由丹麦的Jensen Kurt于1981年在Petri网基础上定义的一种具有层次性的高级Petri网。利用在计算机上开发的CPN的建模分析工具──CPN Tools,可以建立描述系统的CPN静态模型,并对系统模型的动态行为进行仿真,分析系统的分布、并发、同步、异步等特性,以及建立系统模型的状态空间并分析系统的活性问题、可达性问题等。由于CPN具有严格的网理论形式化的数学描述、上述的特性以及建模工具提供的仿真分析功能,因此在网络通信协议的验证和分析上得到了广泛的应用。
一、TCP协议连接的建立过程
TCP是一个可靠的,面向连接的,端到端的传输协议,它提供了具有流量控制的可靠的数据传输。TCP的连接建立称为“三次握手”。(1)客户发送第一个报文段,SYN报文段,在这个报文段中只有SYN标志置1,这个报文段的作用是使序号同步。客户端选择一个随机数作为第一序号,并把这个序号发给服务器。注意SYN报文段是一控制报文段,不携带任何数据但它消耗一个序列号。(2)服务器发送第二个报文段,即SYN+ACK报文段,其中有两个标志置为1这个报文段有两个目的,一个是使用SYN同步初始序号,另一个是服务器使用ACK标志确认已经从客户端收到的SYN报文段,同时给出期望从客户端收到的下一个序号。服务器还必须定义客户端要使用的接收窗口(rwnd),这就实现了TCP的流量控制。(3)客户端发送第三个报文段。这仅仅是一个ACK报文段。它使用ACK标志和确认号字段来确认收到了第二个报文。注意这个报文段的序号和SYN的报文段使用的序号一样,这个ACK报文段不消耗任何序号。客户还必须定义服务窗口值。在某些情况下第三个报文段可以携带客户端的第一个数据块,在这种情况下第三个报文段必须有一个新的序号来表示数据源的第一个自己的编号。一般的来说,第三个报文段不携带数据的,因而不消耗序号。
二、CPN模型
在利用CPN Tool建立具体模型之前,先对模型中各库所和变迁,以及颜色类型,变量做一说明。当P1,P2,P4,P7中有标识的时候,即发送端主动打开准备发送连接请求和接受端被动打开监听,发送第一个请求报文,其序号用变量n1绑定,在接收端收到这个请求信息的时候把n1加1作为服务器想从客户端得到下一报文段的序号,同时和自己的初始序号一起组成确认报文段序列,用(n3,n2)来绑定。当客户端接到这个报文的时候进行检查,如果n3=n1+1,说明得到服务器确认报文安全,发送客户确认报文,用(n3,n4)绑定,同时把n1作为数据传输的初始序号。如果n3不等于n1+1,客户端重新发送连接请求。在服务器端收到客户端确认报文的时进行检查,如果n4=n2+1,把n2作为接收数据的初始编号,等待接收数据,否则继续监听。在初始标识下最后到的P8和P11中有标记,说明连接建立成功。
三、模型验证与分析
Petri网的模型验证方法有两种:可达树(Reachability Tree)方法和线性代数(Matrix Equations)方法。在初始标识下通过工具CPN Tool我们可以得到连接的CPN模型的可达树。(1)可达树各结点中库所包含的标记不超过两个,且当库所包含两个标识时标记颜色各不相同,因此TCP协议连接建立的有色Petri网模型是安全的,有界的。(2)可达树中各变迁至少引发一次,没有从不引发的变迁。树中每个标号有后继标号,即每个标号都是可以引发的。对于可达集R(M0),每一标号都有一条从根到的变迁路径,即。根据活性的定义,可知该模型是活的,不会有死锁发生。(3)可达树中不存在无用的循环,其中两个循环是处理发送端和接收端所接受的报文序号是否匹配。(4)可达树中可达状态M3经变迁T3可回到初始状态,所以该CPN模型是可逆的。保证了协议周期的实现,即能够重复执行请求连接的功能。
本文利用有色Petri网的建模的方法和工具CPN Tool,建立了TCP协议的连接建立过程的有色Petri网模型,得到模型的了可达树,通过可达树的方法,验证了所建模型的有界性、安全性、活性、可逆性等性质。从而证明了所构造的形式化模型的正确性,同时也验证了协议的逻辑正确性。
参 考 文 献
[1]周必水,郦泓.有色Petri网在通信协议中的应用[J].系统仿真学报.2003,15(8):112~114
关键词:Socket通信机制 TCP协议 开发原理
中图分类号:TP393 文献标识码:A 文章编号:1007-3973(2012)008-081-02
1 TCP,SOCKET简介
TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。
Socket:即“套接字”,描述IP地址和端口,是通信链的句柄。在Internet上的主机一般运行了多个服务软件,提供几种服务。每种服务都会打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
2 基于TCP协议程序的简单样例
了解客户端,服务器,开发原理,开发流程。
客户端:客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。
服务器:服务器指一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。运行以上软件的计算机或计算机系统也被称为服务器。
开发原理:
服务器,使用ServerSocket,监听指定的端口,端口可以随意指定(建议使用大于1024的端口),等待客户端得连接,客户端连接后,产生会话;在会话完成之后,关闭连接。
客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,就打开会话;会话完成后,关闭Socket。客户端不用指定打开端口,经常是临时的分配一个1024以上的端口。
基于TCP的SOCKET流程如下:
(1)客户端的编程流程:
打开Socket,创建一个SOCKET;
为套接字建立一个输入inputstream,和输出流outputstream;
根据服务器协议(这里是TCP协议)从套接字读入或向套接字写入;
关闭SOCKET:清除套接字和输入/输出流;
(2)服务器端的编程流程:
打开Server Socket,新建一个服务器型套接字和一个普通套接字,服务器型套接字在指定端口为客户端请求的Socket服务;
使用ServerSocket类的accept()方法,使套接字处于监听状态,并且把监听结果返回给普通套接字;
为该普通套接字创建输入和输出流;
从输入和输出流中读入或写入字节流,进行相应的处理,并将结果返回给客户端(这里的例子是判断是奇数还是偶数)。
样例详细说明:
客户端发送一个数字,交给服务器判断是偶数还是奇数,将结果返回给客户端。
主要代码
客户端主要函数
Init()初始化socket,获取IutputStream以及OutputStream;
private static void init(){
try
{
socket = new Socket(HOST,PORT);
is = socket.getInputStream();
os = socket.getOutputStream();
}
catch (Exception e){...}
}
Send()函数,向服务器发送数据
private static void send(byte[ ] data){
try
{
os.write(data);
}
catch(Exception e){...}
}
Receive()函数,获取服务器返回的信息
private static byte[ ] receive(){
byte[ ] b = new byte[1024];
try
{
int n = is.read(b);
byte[ ] data = new byte[n];
System.arraycopy(b, 0, data, 0, n);
return data;
}
catch (Exception e){...}
return null;
}
Close()函数,关闭socket连接
private static void close(){
try{
is.close();
os.close();
socket.close();
}catch(Exception e){...}
}
服务器主要函数:
Init(),send(),receive(),close()函数同客户端
Logic()函数,处理收到的数字,判断奇偶
private Boolean logic(byte[ ] data)
{
String s=new String(data);
System.out.println("logic");
int t=Integer.valueOf(s);
if(t%2==1)
return true;
return false;
}
调用流程
服务器init()->客户端init()->客户端send()->服务器receive()->服务器logic()->服务器send()->客户端receive().
参考文献:
关键词:网络安全; TCP/IP协议;安全性
引言
现在Internet已在全世界普及,它使人们稳坐家中就可以得到世界各国的所有信息,并已经逐渐成为通信方面的基础设施。但是从另一方面来说,由于世界的计算机通过网络互相连通潜在了很多不安全的因素。于是,要安全地使用Internet,就需要具备防止信息泄漏以及防止被篡改等网络安全问题的能力。为了预防这些网络上的不正当行为,特别需要理解Internet在安全方面的特性,以便采取适当的防范对策。
1. TCP/IP的协议结构
TCP/IP作为通信协议,它是一组协议的集合,其中有我们常见的TCP和IP协议,也有用于管理通信方法的协议,也有测试网络状态等工具性的协议。
支持因特网通信的TCP/IP是以TCP协议和IP协议为中心构成的协议群的总称。TCP/IP通信协议从最底层开始,是由网间层、传输层以及应用层构成的。像这样的构成层次,可以使开发工作形成模块式开发。
2. 按TCP/IP的协议层,对其安全性探讨
2.1网间层在安全方面的隐患主要包括以下几种:
(1)伪造IP地址
在Internet中,各个设备是按照预先分配的IP地址或者通过DHCP的方式来分配IP地址来标识。于是,如果其中的某个设备设置成其他设备所属的IP或者冒充网关向设备发送数据包,就会造成通信混乱,从而导致网络瘫痪。举个简单的例子,以太网上抢夺其他计算机的IP,就可以谎称是被抢夺计算机IP数据包的源地址。致使在这种情况下,被冒充的计算机上会出现显示IP地址冲突的提示框。而且在这种状态下,也不能保证计算机能够正常运行。对于这样的伪造IP地址(IP Spoofing:IP欺诈)的攻击行为,需要采取以下的措施:
> 利用网络监视工具,对冒充源地址的数据包通过外部网络进行检查,确认是否真正来自于送信源地址。
> 在服务器上生成对于远程接入进程的记录机制,用来见识服务器的适用情况。
(2)伪造ARP
在网间层上,虽然在设置发送端与接收端时,利用了IP地址通信,但在作为物理层之一的以太网上却利用了MAC地址来标识发送端与接收端的地址。像这种网间层的IP地址体系与数据链路层的MAC地址体系相互对应的分配取决于地址解析协议(ARP)。计算机在通信时首先利用ARP获得与目的IP地址所对应的MAC地址。从减少通信流量的观点出发,一旦给予对应MAC地址的IP地址,这种对应组合将在ARP表中保持一定时间的缓存,这样通过发送伪造的ARP数据包就可以改写这个缓存。
作为防范上述攻击行为的对策,可以采取两种方法:
> 利用保证IP数据包合法性的IPSec中的AH的认证功能
> 采用使应用软件具备对通信过程进行加密的方式以及强化认证机构。
2.2传输层上存在的安全隐患主要包括以下几种:
(1)假冒TCP初始序号
在通信过程中,采用被称为三次握手的步骤建立起来的TCP连接。在这个过程,对于使用IP地址认证的应用程序,如果可以顺推出初始序号,那么只要模拟发送端的IP地址,就可以建立TCP连接。不过现在的操作系统中,初始序号的分配方法已变得相当复杂,事实上序号已不能随便推测。
(2)利用TCP/UDP数据包的DoS攻击
DoS攻击是通过生成大量的、已处于连接状态的TCP连接,使TCP/IP模块陷入崩溃状态的操作。对于以操作系统为目标的攻击,可以通过导入具备屏蔽TCP SYN数据包功能的防火墙来防范。
2.3应用层上存在的安全隐患主要包括以下几个方面:
(1)扫描/搜索
对信息系统的非法入侵,是通过收集作为攻击目标的设备以及用户的相关信息开始的。首先通过扫描搜索设备,同时通过BBS、网络新闻以及主链接清单等资源数据收集用户的信息。扫描用户的设备后,通过截取用户的通信数据或数据包、收集认证信息以及尝试用户密码等方法,使自己能够获得对计算机信息和资源的读写权以及控制权,从而再访问该计算机。
(2)DNS欺骗
DNS欺骗是一种从外部改写由DNS服务器管理的主机名与IP地址对应表的攻击方式。如前所述,在Internet世界中,计算机以及路由器是通过被分配的、特有的IP地址来识别的。但是IP地址作为一串数值,人们不便于记忆,因而出现了主机名这一概念。DNS是提供IP地址与主机名对应的机制,因此,一旦这种对应关系出现问题,那么IP数据包就不能够被发送到主机名所对应的IP地址。DNS欺骗的一个简单事例,就是在IP地址与主机名对应表的hosts文件中,进行对应关系不一致的设定。所以对于用户来说,接收网络安全方面的教育是非常重要的。
(3)窃听用户认证信息
这种行为大多是在非法侵入计算机后,安装木马程序,以非法手段获取该计算机所连接的网络的通信信息。特别是将以非加密报文形式传输数据的TELNET、FTP、POP以及HTTP等作为监听对象,来获取密码等用户认证信息。
防窃听的对策有以下两种:
> 在通信过程中进行加密,使得数据包不能被任意读取
> 通过限制注入网络交换机的设备,缩小窃听范围。
(4)利用电子邮件进行的DoS攻击
利用电子邮件进行的拒绝服务攻击包括:反复频繁发送大数据量的电子邮件,耗尽磁盘空间的电子邮件炸弹,以及通过其他的邮件服务器,连续发送邮件造成第三方延迟等等。
互联网工作工程小组最近了一种新的邮件认证技术说明,该说明加入了域名密钥识别邮件技术(DKIM),希望借此来加速对抗垃圾邮件。它把IP地址和邮件的发送人放在一起进行分析,然后通过公共密钥加密,给邮件加上一个数字签名,这个数字签名包含着发件人的域名。
(5)病毒
计算机病毒是附着于程序中可以自我繁殖的程序。现在所发现的病毒一般具有以下的形态:
* 以篡改或破坏计算机中所存储的数据为攻击目标
* 利用用户作为中介(U盘、电子邮件等)来进行传播。
2011年影响最大的十大病毒之中,鬼影病毒、QQ群蠕虫病毒QQ假面病毒、DNF假面病毒、新型QQ大盗等新老变种病毒榜上有名。对于病毒的防护,我们要加强计算机安全意识,提高警惕,不随便访问不可靠网站,定时对计算机进行查杀病毒。
3.结束语
通过对TCP/IP协议层的安全问题进行阐述及分析,不难发现其在设计上存在很多安全隐患,黑客或黑客工具往往利用这些隐患对网络进行攻击,只有充分了解这些隐患并采取相应的防范措施,才能增强网络的安全性。
参考文献:
[1]石志国等编著.计算机网络安全教程[M]. 北京交通大学出版社;北京:,2004
[2]李美萍. TCP/IP协议体系的安全性探讨[J]. 山西通信科技, 2007(4): 11-13.
【关键词】图层,帧
计算机辅助教学(Computer Assisted Instruction 简称CAI)指的是应用计算机作为教学的辅助手段,通过学习者与计算机交互作用完成教学过程。CAI构成了一种个别化学习环境,让学习者利用计算机的特点和优势,通过与计算机的交互,完成某一具体课程的学习。作为一种教学媒体,计算机可以起到与其它传播媒体一样的呈现知识、给予反馈等作用,但是由于其有着存贮、处理信息、工作自动化等功能,因此计算机辅助教学(CAI)具有如下特点:
(1)大容量的非顺序式信息呈现。计算机可存贮相当丰富的信息量,可包括一门课程或与某个对象有关的全部知识。学习者既可以浏览所有知识,也可以按需要获取其中任意所感兴趣的一部分,而不仅是按顺序阅读,或是按教师所给出的那一部分。
(2)学生可以控制学习内容和学习进度。通常的CAI系统都允许学生选择学习内容,也设置一些同步措施,仅当学生学习了前一部分知识后才进入下一步的学习。这样,学生的学习进展不受时间与地点的限制,可以取得最佳的学习速度。
(3)实现因人施教的教学原则和及时反馈原则。CAI系统可通过提问、判断、转移等交互活动,分析学生的能力和学习状况,调节学习过程,实现因人施教的教学原则和及时反馈原则。
(4)学生在CAI活动中处于一种积极、主动的精神状态。因为教学进度由学生控制和连续的提问-反馈或是操作一反应刺激等交互活动,学生在CAI活动中处于一种积极、主动的精神状态,不象被动受教时那么容易疲劳和受干扰,从而可以取得较好的教学效果。
(5)网络技术使CAI可获得群体的支持。目前的网络技术使CAI可获得群体的支持,解决个别化学习与群体学习的矛盾。
CAI活动的效果受教师态度的影响。实验证明,CAI活动的效果受教师态度的影响,积极推广CAI的教师所用CAI的教学效果好,反之亦然。
在过去的几年里,CAI的发展速度是超出人们想象的。就全国来言,大量的学校、部门、公司、企业,以各自不同的目的,带着极大的热情投入到CAI的开拓当中,并以各自不同的优势推动着CAI向前迅猛地发展,目前,已经形成了以下几个发展趋势:
1.多媒体技术的采用使CAI手段更加丰富。多媒体教学系统是一种以计算机为中心,处理、控制各种教学媒体综合进行教学活动的系统,它既具有各种教学媒体的特点和优势,又发挥了以计算机为核心的控制作用,因此他具有多重感观刺激,传输信息量大,易于接受,人机交互性强,操作简单等特点。它既是CAI发展方向,也是现代教育发展的方向,所以引起了各方人士高度的重视。
2.计算机生产技术的进步,存贮成本的降低, 使大量的存贮信息成为可能。目前,一方面硬盘的价格大幅度的降低,另一方面CD-ROM光盘的大量使用,使得存贮容量不再是问题。图形、动画、音像等各种素材得以大量存储和自由调用。这也为多媒体教学系统打下了良好的物质基础。
3.网络技术在教学领域的采用,使教学的观念发生了质的变化
4.平台软件为CAI软件制作提供了方便的开发工具。目前CAI领域中的一项重大事件是工具平台的使用。由于计算机技术的迅速发展,其功能不断加强,操作却越来越简便和易于掌握。这不但使非计算机专业人员编制CAI软件成为现实,而且使CAI软件实现了多媒体技术。
5.微机操作的窗口化。新一代的操作系统(平台)已经朝着直观、易懂的窗口化方向发展,以图标管理代替文件管理,以图标形状代替操作信息,以鼠标指点代替键盘操作方法。这为进一步普及微机应用提供了基础。
传输控制协议(Transmission Control Protocol TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由IETF的RFC 793说明。在简化的计算机网络OSI模型中,它完成运输层所指定的功能。在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
TCP原理的特点和功能如下:
(1)面向连接的服务。对保证数据流传输可靠性十分重要。
(2)高可靠性:方法:确认与超时重传。
(3)全双工通信
(4)支持流传输:流传输 无报文丢失、重复、乱序的正确数据报文序列;
(5)传输连接的可靠建立与释放:3次握手
(6)提供流量控制与拥塞控制
TCP协议的功能
(1)保证传输的可靠性。TCP协议是面向连接的。所谓连接,是指在进行通信之前,通信双方必须建立连接才能进行通信,而在通信结束后终止其连接。相对于面向无连接的IP协议而言,TCP协议具有高度的可靠性。当目的主机接收到由源主机发来的IP包后,目的主机将向源主机回送一个确认消息,这是依靠目的主机的TCP协议来完成的。
TCP协议中有一个重传记时器(RTO),当源主机发送IP包即开始记时需要说明的是,TCP协议所建立的连接是端到端的连接,即源主机与目的主机间的连接。internet中每个转接节点(路由器)对TCP协议段透明传输。
总之,IP协议不提供差错报告和差错纠正机制,而TCP协议向应用层提供了面向连接的服务,以确保网络上所传送的数据包被完整、正确、可靠地接收。一旦数据有损伤或丢失,则由TCP协议负责重传,应用层不参与解决。
(2)提供部分应用层信息的功能。在TCP协议之上是应用层协议(如FTP、SMTP、TELNET等),最终需依靠它们实现主机间的通信。TCP协议携带了部分应用层信息,可用来区别同一报文数据流的一组IP包及其性质。
TCP协议对这些应用层协议规定了整数标志符,称为端口序号。被规定的端口序号成为保留端口,其值在0~1 023范围内(如端口序号23,用于远程终端服务)。此外还有自由端口序号,供个人程序使用,或者用来区分两台主机间相同应用层协议的多个通信,即两台主机间复用多个用户会话连接。
进行通信的每台主机的每个用户会话连接都有一个插口序号,它由主机的IP地址和端口序号组成。在internet中插口序号是惟一的,一对插口序号惟一地标识了一个端口的连接(发端插口序号=源主机IP地址+源端口序号,收端插口序号=目的主机IP地址+目的端口序号)。利用插口序号可在目的主机中区分不同源主机对同一个目的主机相同端口序号的多个用户会话连接。
在TCP协议段的头部各域中具有码位项。其中,SYN码位为应用数据流的开始位(当SYN置1,表示该IP数据包为某一应用报文的第一份数据包),FIN码位为应用数据流的结束位(当FIN置1时,表示此时数据包为某应用报文的最后一份数据包)。因此可利用SYN/FIN两个码位来规定某一应用报文(或某一应用数据流)的开始与结束。
TCP协议就是利用端口序号和SYN/FIN码位来区分应用数据流并判断其性质的,从而使具有四层功能的高端路由器具有某些对应用数据流的控制功能。
TCP协议只定义了一种报文格式,建立、拆除连接、传输数据使用同样的报文
1.传输连接的建立
TCP是面向连接的协议,运输连接的建立和释放是每一次面向连接的通信中必不可少的过程
运输连接的管理就是使运输连接的建立和释放都能正常地进行。
在连接建立过程中要解决以下三个问题:(1)要使每一方能够确知对方的存在;(2)要允许双方协商一些参数(如,最大报文段长度,最大窗口大小,服务质量等);(3)能够对运输实体资源(如缓冲区大小,连接表中的项目等)进行分配
2.TCP的传输连接管理――三次握手技术。(1)TCP连接的建立采用客户/服务器方式。(2)为了确保连接的建立和释放都是可靠的,TCP使用三次握手的方式,其中交换了三个报文。(3)已证明三次握手是在分组丢失、重复和延迟的情况下确保非模糊协定的充要条件。
3.为何使用三次握手
当客户端发送一连接请求报文段,没有收到服务器端的确认,认为丢失。客户端再重传一次,得到确认,传输数据,释放连接。
然而,客户端第一个请求报文段并没有丢失,而是延时到这次连接、数据传输、释放连接后才到达服务器端。服务器端认为又一次新的连接,向客户端发一确认。客户端由于并没有发起新的连接,不会发送数据,服务器端会一直等待,造成资源浪费。
3. TCP的流量控制。
(1)TCP采用可变发送窗口的技术进行流量控制,窗口大小的单位是字节。
(2)在TCP报文段首部的窗口字段写入的数值就是当前设定的接收窗口数值。
(3)发送窗口在连接建立时由双方商定,在通信过程中,接收端可根据自己的资源情况,随时动态地调整自己的接收窗口,并且告诉对方,使对方的发送窗口和自己的接收窗口一致。
说明:(1)发送端要发送的数据共9个报文段,每个报文符长100字节,共900个字节;(2)而接收端允许的发送窗口为500字节;(3)在当前情况下,发送方可连续发送5个报文段,而不必收到确认,(已发送了二个,还可发送三个报文符);
4. TCP差错控制
差错控制包括检测受到损伤的报文段、丢失的报文段、失序的报文段和重复的报文段,以及检测出错后纠正差错的机制。差错检测三种工具:检验和、确认和超时。对各种出错报文段的处理:传输出错报文段(重传计时器);丢失报文段(重传计时器);重复报文段(报文序号);乱序报文段(对乱序报文段不确认,直到收到所有它以前的报文段为止。);确认丢失(累计确认)
本文主要是从计算机辅助教学入手,从TCP原理演示来具体生动地介绍CAI的特点.全文全面地介绍了TCP协议,又通过动画具体演示了TCP的连接和释放过程,能够生动地帮助学生理解TCP协议。从而具体体现了计算机辅助教学的优点。
计算机辅助教学与传统的教学方式相比较确实具有很多的优势。传统的教学以课堂集体教学为基础,这种教学通常以教师为中心,学生往往处于被动地位,其学习积极性难以调动。教师参照全班学生的平均水平和教学计划确定教学进度并向学生提供反馈信息,忽视、较少注意或难于注意学生的个别差异。对于家庭作业,尽管教师能逐个学生加以批阅,但反馈信息不够及时,有时学生几天后才能得到教师批改过的作业,而这时学生又去顾及新的知识。然而计算机辅助教学相对于教师的传统教学也有其固有的不足之处,比如真实性问题,虽然呈现给学生的信息可以是丰富多采的,但这些都是间接经验,是别人做好让学生看和听的,甚至有的信息的真实性会受到怀疑。还有其它的不足之处,这需要从事教育工作者的合理运用。
参考文献:
[1]吴功宜,《计算机网络》,清华大学出版社
[2]谢希仁,《计算机网络》,电子工业出版社
[3]肖秀金、陈霄峰,《网页设计培训教程》,地质出版社
[4]BehrouzA.Forouzan,Sophia Chung Fegan ,《TCP/IP协议族》,清华大学出版社