TCP/IP详解之IP协议ARP协议和RARP协议

2024-07-30

TCP/IP详解之IP协议ARP协议和RARP协议(精选8篇)

篇1:TCP/IP详解之IP协议ARP协议和RARP协议

1.IP协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。这是后话,暂且不提

1.1.IP协议头

如图所示

挨个解释它是教科书的活计,我感兴趣的只是那八位的TTL字段,还记得这个字段是做什么的么?这个字段规定该数据包在穿过多少个路由之后才会被抛弃(这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64,Tracerouter这个工具就是用这个原理工作的,tranceroute的-m选项要求最大值是255,也就是因为这个TTL在IP协议里面只有8bit。

现在的ip版本号是4,所以也称作IPv4。现在还有IPv6,而且运用也越来越广泛了。

1.2.IP路由选择

当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来“送货”的呢?

最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠ARP协议了,后面会讲到。

稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包

如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。

搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机

搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助,

如果找到路由器,则将该包发向路由器。

搜索路由表,如果匹配同子网路由器失败,则匹配同网号(第一章有讲解)路由器,如果找到路由器,则将该包发向路由器。

搜索陆游表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包

如果都失败了,就丢掉这个包。

这再一次证明了,ip包是不可靠的。因为它不保证送达。

1.3.子网寻址

IP地址的定义是网络号+主机号。但是现在所有的主机都要求子网编址,也就是说,把主机号在细分成子网号+主机号。最终一个IP地址就成为 网络号码+子网号+主机号。例如一个B类地址:210.30.109.134。一般情况下,这个IP地址的红色部分就是网络号,而蓝色部分就是子网号,绿色部分就是主机号。至于有多少位代表子网号这个问题上,这没有一个硬性的规定,取而代之的则是子网掩码,校园网相信大多数人都用过,在校园网的设定里面有一个255.255.255.0的东西,这就是子网掩码。子网掩码是由32bit的二进制数字序列,形式为是一连串的1和一连串的0,例如:255.255.255.0(二进制就是11111111.11111111.11111111.00000000)对于刚才的那个B类地址,因为210.30是网络号,那么后面的109.134就是子网号和主机号的组合,又因为子网掩码只有后八bit为0,所以主机号就是IP地址的后八个bit,就是134,而剩下的就是子网号码--109。

2. ARP协议

还记得数据链路层的以太网的协议中,每一个数据包都有一个MAC地址头么?我们知道每一块以太网卡都有一个MAC地址,这个地址是唯一的,那么IP包是如何知道这个MAC地址的?这就是ARP协议的工作。

ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存),如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机,而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。

一个典型的arp缓存信息如下,在任意一个系统里面用“arp -a”命令:

Interface: 192.168.11.3 --- 0x2

Internet Address Physical Address Type

192.168.11.1 00-0d-0b-43-a0-2f dynamic

篇2:TCP/IP详解之IP协议ARP协议和RARP协议

TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个“拨打电话”的过程,等到通信准备结束才开始传输数据,最后结束通话。所以TCP要比UDP可靠的多,UDP是把数据直接发出去,而不管对方是不是在收信,就算是UDP无法送达,也不会产生ICMP差错报文,这一经时重申了很多遍了。

把TCP保证可靠性的简单工作原理摘抄如下

应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的 数据报长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)(参见图1 - 7)。在1 8.4节我们将看到TCP如何确定报文段的长度。

当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能 及时收到一个确认,将重发这个报文段。在第21章我们将了解TCP协议中自适应的超时 及重传策略。

当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒,这将在1 9.3节讨论。

TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输 过程中的任何变化,

如果收到段的检验和有差错,T P将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。

既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段 的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。

TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

从这段话中可以看到,TCP中保持可靠性的方式就是超时重发,这是有道理的,虽然TCP也可以用各种各样的ICMP报文来处理这些,但是这也不是可靠的,最可靠的方式就是只要不得到确认,就重新发送数据报,直到得到对方的确认为止。

TCP的首部和UDP首部一样,都有发送端口号和接收端口号。但是显然,TCP的首部信息要比UDP的多,可以看到,TCP协议提供了发送和确认所需要的所有必要的信息。这在P171-173有详细地介绍。可以想象一个TCP数据的发送应该是如下的一个过程。

双方建立连接

发送方给接受方TCP数据报,然后等待对方的确认TCP数据报,如果没有,就重新发,如果有,就发送下一个数据报。

接受方等待发送方的数据报,如果得到数据报并检验无误,就发送ACK(确认)数据报,并等待下一个TCP数据报的到来。直到接收到FIN(发送完成数据报)

中止连接

可以想见,为了建立一个TCP连接,系统可能会建立一个新的进程(最差也是一个线程),来进行数据的传送

篇3:TCP/IP详解之IP协议ARP协议和RARP协议

1 通信软件的总体设计与实现

通信软件的服务器与客户端都是在Visual Studio 2005开发平台上进行编译实现的, 并通过TCP/IP协议和多线程技术实现客户机和服务器结构 (C/S结构) 的通信, 将大型企业版的ORACLE9i数据库作为服务器的数据库, 因为嵌入式数据库不会占据太多的资源, 符合客户端软件的容量下等特点, 因此该客户端的数据库是嵌入式数据库Sqlite。利用TCP/IP协议来实现网络通信的主要环节就是建立客户端和服务器之间的联系, 服务器需要通过怎样的方式对已连接的客户端列表进行维护, 以及当通信故障出现或服务器发生重启等现象又该怎样及时快速的让系统恢复运行, 其中建立客户端和服务器之间联系的具体活动应该是服务器可以对一个由合法客户端传达的请求链表进行维护, 当客户端长时间不接收数据或者发现客户端出现网络连接错误, 那么就会对这类客户端进行定期清理, 并只接受合法客户端传达的连接请求, 对其进行数据发送。当服务器和客户端进行交互时, 从中可以看出客户端向服务器发出连接请求的时候, 服务器首先会对config.txt文件进行读取操作, 用以检查客户端IP地址的合法性, 当检查合法就进行接受操作, 反之拒绝。当完成连接后客户端会发出读取数据的请求, 服务器则接受请求并进行数据的发送, 这时客户端进行多线程处理。将阻塞类的CSocket作为Socket的基类, 它能在非阻塞socket的基础上进行阻塞操作, 进而在此期间进行消息循环。

而服务器端的运行应该是从AISSender向Transfer Center发送AIS data, 通过确定AIS data再向Parser View发送AIS binary file, 然后再由Manager执行socket port has data, 锁定Msg Queue。也就是当服务器端与通信运营商进行SIA数据中心的首次转发, 就进行TCP/IP连接的建立, 并将接受数据线程启动, 负责进行二进制数据文件的接受;处理数据线程, 负责进行二进制数据的解析, 将解析结果显示在界面上的同时向服务器数据库进行存储;而对客户端连接线程的监听则主要是实现监听Socket和用户Socket之间关系的建立。客户端运行在运行的时候, 客户端启动连接程序主要是负责在某些情况下进行与服务器的重新连接操作, 例如客户端与服务器端连接错误, 服务器重启或者网络错误等现象。当连接成功后则会将读数据线程启动, 此时能够对网卡缓冲区中的数据进行直接读取, 并将数据写入到Msg Queue的变长链表中, 储存数据, 避免丢失。而On Initial Upadate则会将数据处理进程启动, 读取消息链表中的数据, 逐条解析, 并在数据库中插入数据, 或者更新数据, 将其在界面上显示出来, 同时删除全部处理完的数据。

为了避免客户端出现死机现象, 就要保持客户端和服务器端程序中Reservered for Regional Application同为byte类型, 这样才不会让m_buf数组长度较81920大, 让网卡缓冲区持续进行新数据的读入, 进而让程序一直判断m_nlen长度, 从而陷入死循环中。

2 结束语

总而言之, 通信软件通过采用客户端/服务器模式进行数据的传输和采集, 在Visual Studio 2005的开发平台上利用多线程技术和Socket实现编程, 并利用面向对象方法进行系统的分析设计过程, 不断加强系统的扩展性和可重用性, 进一步提升通信软件的实效性。

摘要:为了实现可靠的数据传输, 通信软件的服务器端通常通过多线程技术的利用达到与通信运营商转发中心和客户端进行网络通信, 并完成数据的采集和解析。通信软件客户端能够与其服务器建立连接, 并接收服务器传输的实时二进制数据, 通过解析将数据以数据表格的形式展示出来。本文就对TCP/IP协议和多线程通信软件的设计与实现进行了研究。

关键词:TCP/IP协议,多线程,通信软件,客户端,服务器

参考文献

[1]刘爽, 史国友, 张远强.基于TCP/IP协议和多线程的通信软件的设计与实现[J].计算机工程与设计, 2010 (07) :1417-1420+1522.

[2]陈张荣.计算机多线程TCP/IP协议还原技术概述[J].电子技术与软件工程, 2014 (21) :19.

[3]孙桂斌.基于TCP/IP协议多客户连接的服务端程序实现[J].电脑编程技巧与维护, 2009 (20) :83-85.

篇4:TCP/IP详解之IP协议ARP协议和RARP协议

关键词:TCP/IP;协议;教学方法;双语教学

中图分类号:TP311.12 文献标识码:A 文章編号:1007-9599 (2012) 10-0000-02

随着全球化进程的推进,社会对高等教育人才培养提出了更高的要求,希望培养出既懂专业又懂外语的复合型人才。为了适应社会的需要,很多高校纷纷推出了各门课程的双语教学,受到了学生和老师的普遍欢迎。然而,在这样的环境下,双语教学的效果并不是很理想。因此,我们有必要对双语教学的方法和技巧作一定的探讨与研究,提高教学效果。《TCP/IP协议》是计算机和信息类专业的一门重要的专业选修课程,是在《计算机网络》课程基础上对网络协议的进一步深化。通过这门课程的学习,学生不但可以加强对计算机网络中概念和术语的理解,而且还可以从协议分析的角度深入理解计算机网络的原理和技术细节。下面,将结合我校近几年开展《TCP/IP协议》双语教学的实践经验,总结双语教学中存在的问题与改革措施。

一、教学中存在的问题

(一)语言障碍是主要因素

双语教学的推进需要一个过程,不能操之过急。我们采用了中英文结合、循序渐进的授课方式。由于大多数学生还是第一次接触用双语讲解的课程,对其中用英语讲授的部分不能很好地适应,这就为知识的理解造成了一定的障碍。因为这方面的知识如果用中文讲解的话,是很好理解的。因此,这里所说的障碍主要来自于语言。

对于教师而言,也提出了更高的要求。不光要求能正确理解英文教材中的知识,还要将知识用英语很好地表达出来。当然,我们负责上课的老师都是英语基础比较好的,用英语表达是没有问题的,但要求用浅显易懂的方式进行讲解,还需要经过一番努力和训练。

(二)课时有限

由于这门课是专业选修课,学院在制订教学计划时,安排的课时有限,仅32学时。相对于我们选用的教材而言,是一个不小的挑战。我们选用参考文献[1]作为教材,内容是非常丰富的。这就要求我们选择一些重要的章节进行讲解,并根据学生的掌握情况,适当调整教学的进度和教学内容。

(三)教学内容比较抽象

《TCP/IP协议》课程中主要讲授的是TCP/IP协议族中的各种协议,以及这些协议之间按照什么方式进行合作,共同完成复杂网络环境下数据传输的问题。课程内容与《计算机网络》课程有一些交叉,但主要突出网络协议的分析与理解,因此大部分内容比较枯燥和抽象。

二、课程教学改革措施

(一)做好课程定位,把握教学方法

要想把双语教学做好,首先要对双语教学做一个合理的定位,或者说是对双语教学的理解。因为双语教学既不是全英文教学,也不是简单地先讲英语再翻译成中文这种方式,应该将两者有机地结合起来。有些地文用英语讲,有些地方则用中文讲解,刚开始的时候,中文比例稍微多点,到后面则使用英语的比例多点,这些都将与学生的英语水平和课程的掌握情况相关的,教师在授课时就根据具体情况,采取相应的措施,把握好中英文授课的比例。

在双语教学中,对课程的讲解当然还是以传授知识为主,语言学习和训练为辅这样的方式来把握。因为这不同于专业英语课,更不是英语课,所以语言学习只是双语教学课程的副产品,掌握相应的知识才是最主要的。

对于每一次课,在讲义中可以首先列出关键字,将涉及到的专业术语集中讲解,并在幻灯片中给出中文解释。另外,为了达到好的授课效果,提倡学生平时多训练一下听力,积极参加学校英语角进行口语练习,以便能够在课堂中与老师交流互动。

(二)加大课时量,精心组织教学和实验内容

这门课程是对《计算机网络》课程的进一步理解与深化,加上课程本身有些抽象,学习难度较大。一方面,相对于我们选用的外文教材,用32学时进行讲授是远远不够的。我们已向教务部门反映,建议增加课时量;另一方面,在有限的课时下,要求教师精心组织每一堂课的教学内容,做好实验安排,才能达到较好的教学效果。

学习完新的内容以后,做适量的英文习题进行巩固是必不可少的。在每次讲完新课后,布置一些典型的习题让学生练习,并要求用英语来解答。通过做一定量的习题,可以让学生消化所讲的新内容,运用所学的知识解决实际问题。

由于实验的课时有限,教师应根据实验大纲精心组织实验内容。实验前,提前布置实验内容和要做的题目,让学生做好预习;实验过程中,组织学生分组讨论,可以使学生将问题理解得更加深入;实验结束后,要求学生认真写实验报告并按时提交。

(三)发挥多媒体技术的优势,提高教学质量

在教学过程中,教师应尽量采用多媒体教学,并使用动画、图示来展示各种协议的基本原理。一幅好的图片胜过千言万语,这样既可以提高学生的兴趣,又可以将抽象的知识具体化、形象化,易于理解。比如,在讲授网络数据包的传输过程中,我们让学生观看“warriors of the net”视频,极大地提高了学生的兴趣,让学生对这方面的知识理解得更加深入。

三、总结

双语教学是培养复合型人才的重要举措,可以使学生在学习专业课的同时,英语水平也获得较大的提高,最终比较顺利地阅读与课程相关的英文文献。本文针对《TCP/IP协议》双语教学中出现的问题,总结出了教学改革的方法,并作了具体分析。实践证明,通过对教学方法作一定的改进,极大地丰富了教学内容,使双语教学取得更好的效果。

参考文献:

[1]W.Richard Stevens.TCP/IP Illustrated[M].北京:机械工业出版社,2000

[2]熊杰,李中年,杜勇,张海波.“TCP/IP协议原理”双语教学实践探索—以长江大学为例[J].教育与教学研究,2009,11:91-92

[3]叶晓国,王雪梅,王明伟.《TCP/IP网络设计及实现》双语课程教学改革研究[J].西安邮电学院学报,2009,3:135-138

篇5:TCP/IP详解之IP协议ARP协议和RARP协议

当数据要在网际直接传输的时候,路由器根据IP数据报进行路由.

当一台主机要发送数据的时候,其目的主机一般为局域网内的主机或者网外的主机.

如果是局域网内的主机,主机发送的以太网帧的头部目的mac地址为目的主机的mac地址,不需要路由.

如果是网外的主机,则将数据发到默认的网关,由网关路由器进行路由到目的主机,主机发送的以太网帧

头部的目的mac地址为网关的mac地址.

IP数据报的协议规定的数据报格式如下图:

IP协议不保证送达,不保证顺序.可靠性由上层协议保证.上层协议如TCP,UDP的信息在IP数据报的数据部分.

下图是通过Wireshark抓取的一个数据包:

路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由.路由器或者主机将会用如下的方式来处理某一个IP数据包

如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃.

搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助.

如果找到路由器,则将该包发向路由器.搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器.

搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包

如果都失败了,就丢掉这个包.

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

关键词: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.

篇7:TCP/IP详解之IP协议ARP协议和RARP协议

摘 要:在当今计算机网络无处不在的时代,网络攻击时刻威协着我们所处局域网络的安全。为了确保网络的安全性,就要对网络交互的数据包进行分析。本文提出了TCP/IP协议分析器的设计开发方案,并通过Qt Creator和C++编程实现。该分析器能够捕获网络数据包,并根据网络协议格式对数据进行解析,从而为进一步分析网络系统的安全性提供依据。

关键词:网络数据包;TCP/IP协议;数据分析

1 系统需求分析

本系统主要功能需求有以下几项:

①具备网络数据包捕获的参数设置: 在进行数据捕获之前要进行协议类型、MAC地址、IP地址等参数的设置,满足用户的一些常规需求,保证用户使用系统的合理性。

②能够捕获到本机所有的网络数据包:通过本系统可以对网络上的数据包进行捕获,包括ICMP、DNS、ARP、RARP等一些网络协议的数据包的捕获,让用户通过本系统能够捕获到有用的数据包。

③能正确地对捕获到的网络数据包进行网络协议分析:在捕获到网络数据包后能够对网络数据包进行包结构分析,对数据链路层数据按照帧格式进行分析,对网络层的IP数据报的分析,对传输层TCP和UDP的头格式进行分析,对应用层协议进行分析。

④能够把捕获到的网络数据包保存到当地文件中:在用户的使用过程中,可能需要对捕获到的网络数据包进行存储,那么需要满足用户对网络数据包的存储功能,让用户能够更灵活地使用本系统。

⑤能够打开已经捕获到的网络数据文件并进行网络协议分析:能够满足用户打开已经保存的网络数据文件,并进行网络协议分析,这样用户就能随时随地对以前的网络数据进行协议分析了。

⑥能统计当前所有网络接口的网络数据包:通过这个功能,用户可以查看当前网络接口的数据包数量和每秒通过的数据量,用户可以清晰地掌握当前网络接口通过数据包的状况,有助于用户对网络接口的检测。

2 总体设计

2.1系统总体模块设计

通过系统需求分析可以将网络协议分析器分为四大主要功能模块,分别为文件存储与读取模块、抓包参数设置模块、数据包捕获模块和数据包分析模块。这些模块详细功能如下:

①文件存储与读取模块:通过捕获网络数据包,把其存储到文件中,有利于以后对网络数据包的分析;读取已经捕获到并存储到文件中的数据包,并进行协议分析。

②抓包参数设置模块:通过配置抓包参数,来确定捕获数据包的类型,可以指定捕获网络数据包的MAC地址和网络地址,并能够对网络协议和网络数据包大小进行设置。

③数据包捕获模块:通过配置的抓包参数进行数据包的捕获,在程序运行的过程中,会将捕获到的数据包以链表的形式存储起来,以供下一步的分析。

④数据包分析模块:根据捕获到的数据包进行各层协议分析,将分析的结果以可视化的界面形式展示给用户,让用户能够看清每层协议的格式和数据包数据部分内容。

系统功能模块图如图1所示:

2.2 软件开发平台

本系统开发平台是一般的PC机,使用Windows 8版本。因为本系统没有涉及到数据库所以就没有使用数据库。程序开发使用的编程环境是Qt 5.4.1中文版,并且opensource使用的版本是Qt Creator 3.3.1。用到的数据包捕获函数库为WinPcap,这个函数库主要运行在操作系统的底层,所以使用这个函数库会大大提升本系统的运行效率,尤其在大量循环捕获网络数据包的时候,优势就愈发明显。编程工具Qt Creator具有很好的跨平台性能,可以很轻松的把本系统移植到Linux环境的系统中去。

3 详细设计

系统中各个功能模块的界面是用Qt Designer来设计的,它提供可视化的界面操作,通过拖动控件来实现我们想要的界面效果,方便高效。Qt提供的信号与槽的机制对逻辑功能的编程更加方便。根据模块所需要实现的功能,编写代码,最终实现系统的整体功能。

3.1 协议头结构设计

通过对协议头结构体的设计,帮助我们完成网络数据包的解析,将定义的结构体与捕获到的网络数据包进行匹配,把相应的字段进行处理,从而分析出网络协议头格式,完成对网络协议的分析。

设计协议头结构体的时候需要注意以下一些事项:①明确网络数据包的结构;②清楚网络数据包捕获的方法;③明确各层协议头数据每个字节或每个字段的含义;④定义对应的结构体用来解析网络协议;⑤把分析的结果以可视化的方式显示在界面上。

这个环节是整个系统中的一个重点,不管哪里出现任何差错,都将导致最终对网络协议的分析出现错误,所以在对网络协议头结构体设计的时候要认真细致,确保结构体里面的字段与网络协议的字段能够一一对应,保证对网络协议分析的正确性。

通过对TCP/IP网络体系各层协议格式的分析,本系统定义了以下的结构体表:数据链路层帧首部结构体表(_ETHERNET_HEADER)、ARP首部结构体表(_ARP_HEADER)、IP首部结构体表(_IP_HEADER)、IPv6首部结构体表(_IP6_HEADER)、TCP首部结构体表(_TCP_HEADER)、UDP首部结构体表(_UDP_HEADER)、ICMP首部结构体表(_ICMP_HEADER)。

3.2 算法概要

抓包模块的程序流程图如图2所示。在对抓包参数设置完点击确定的时候,将选择的每一项按照网络数据包过滤器过滤规则进行处理,转化为字符串模式并通过调用相应的接口函数,对过滤条件进行编译和设置,完成对抓包参数的设计。

当捕获到网络数据包时,这时可以选择一个想要分析的数据包并对数据包进行解析。这里用到数据包分析算法,算法中根据每层协议的协议类型对数据包进行解析,然后判断下一层协议,依次解析,直到最后一层协议。

在系统使用的过程中,可能需要保存数据包,那么这里就会有数据包保存的算法。代码中做这样的处理:每当有数据包到来都会把数据包追加到指定的文件中,当用户需要保存数据包的时候,只需要将数据包临时文件拷贝到指定的目录即可。

通常会对已经保存的数据包进行读操作,这样我们就会有数据包文件的读取功能。这个功能的算法使用标准C语言的二进制读取文件的方法,将文件一个字符一个字符地读取出来,并分离每一个数据包,并对数据包进行相应的处理。

4 系统的编码

4.1 主要函数

此处列出了主要函数,具体程序代码省略。

①捕获网络数据包函数

intpcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)

函数返回值:成功返回0,失败返回负数。

参数描述:p: Libpcap句柄,cnt: 指定捕获的数据包个数,-1代表无限个,callback: 回调函数,可在此函数中对数据包进行处理,user: 表示往回调函数传的参数。

②打开存储文件函数

pcap_dumper_t *pcap_dump_open(pcap_t *p, const char *filename)

函数返回值:成功返回一个文件句柄,失败返回NULL。

参数描述:p: 表示一个Libpcap句柄,filename: 文件名。

函数功能:打开一个文件,并准备向其写入网络数据包。

③IP协议分析函数

void ethernet_protocol_IPpacket (LinkList p)

函数返回值:无返回值。

参数描述:p: LinkList类型的链表节点指针。

④TCP协议分析

void ethernet_protocol_TCPpacket (LinkList p, bool isIP6)

函数返回值:无返回值。

参数描述:p: LinkList类型的链表节点指针,isIP6: 是否为IPv6数据包。

4.2 数据包结构分析结果显示

在数据包成功捕获后,选择要解析的数据包进行数据包的解析,数据包协议分析界面如图3所示。在主窗口的右上方有一个表格,里面显示捕获到的每一个数据包的基本信息,如果要对其中的一个数据包进行协议分析,那么需要点击要分析的那个数据包,协议分析的结果会在左侧的树形列表中显示出来,下面窗口中则显示数据包的原始数据和数据包数据。

5 结束语

本系统实现了对网络数据抓包以及对数据链路层、网络层、传输层和应用层等各层协议分析。在对网络数据捕获中,主要用到了操作系统底层的WinPcap函数库,在大量捕获网络数据包时系统运行效率高;使用的编程工具是能够跨平台的Qt Creator,具有良好的可移植性和跨平台性。应用该系统能够捕获到网络上交互的全部数据包,并把数据包的内容显示给用户,把每层协议的协议头按照协议格式解析,让用户更清楚地知道当前网络的网络数据交互状态,进一步分析网络系统的安全性。

参考文献:

[1]刘文涛编著.网络安全开发包详解[M].电子工业出版社,2005.10:20-30.

[2]严蔚敏,吴伟民编著.数据结构(C语言版)[M].清华大学出版社,1997.4:55-60.

[3]殷人昆,郑人杰,马素霞等编著.实用软件工程[M].第三版.清华大学出版社,2011年.

[4]明日科技编著.Visual C++从入门到精通[M].第三版.清华大学出版社,2012年9月:3-31.

[5]Bruce Eckel,Chuck Allison编著.C++编程思想[M].刘宗田,袁兆山等译.机械工业出版社,2011年7月:52-70.

[6]陆文周编著.QT5开发及实例[M].电子工业出版社,2014年1月:11-89.

[7]布兰切特,萨默菲尔德编著.C++GUI Qt4编程[M].第二版,闫锋欣等译.电子工业出版社,2013年5月:21-33.

[8]Brian W.Kernighan,Dennis M.Ritchie编著.C程序设计语言[M].第二版.机械工业出版社,2004年1月:30-60.

[9]W.Richard Stevens编著.TCP_IP协议详解:卷一[M].机械工业出版社,2005年7月:37-45.

[10]Gary R. Wright,W. Richard Stevens编著.TCP_IP协议详解:卷二[M].机械工业出版社,2001年12月:28-67.

基金项目:

篇8:TCP/IP详解之IP协议ARP协议和RARP协议

关键词:自动化网络TCP/IP管理控制系统集成计算机集成制造

0 引言

TCP/IP(Transmission Control Protocol/Internet Protocol的简写),中文译名为传输控制协议/互联网络协议,TCP/IP是Internet最基本的协议,简单地说,就是由底层的IP协议和TCP协议组成的。虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者结合,才能保证Internet在复杂的环境下正常运行。凡是要连接到Internet的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称作TCP/IP协议。然而,TCP/IP不是没有缺点的,当TCP/IP用于制造自动化环境的时候,安全易损性问题就显得格外突出。TCP/IP协议的可靠性受到多方面因素的影响(例如网络负载),这对于网络完整性来说是重要的潜在危险。

1 网络安全的结构层次

1.1 物理安全 自然灾害,物理损坏,设备故障,意外事故。解决方案是:防护措施,安全制度,数据备份等。电磁泄漏,信息泄漏,干扰他人,受他人干扰,乘机而入,痕迹泄露。解决方案是:辐射防护,屏幕口令,隐藏销毁等。操作失误,意外疏漏。解决方案是:状态检测,报警确认,应急恢复等。计算机系统机房环境的安全。特点是:可控性强,损失也大。解决方案:加强机房管理,运行管理,安全组织和人事管理。

1.2 安全控制 微机操作系统的安全控制。主要用于保护存贮在硬盘上的信息和数据。网络接口模块的安全控制,主要包括:身份认证,客户权限设置与判别,审计日志等。网络互联设备的安全控制。主要通过网管软件或路由器配置实现。

1.3 安全服务对等实体认证服务;访问控制服务;数据保密服务;数据完整性服务;数据源点认证服务;禁止否认服务。

1.4 安全机制 加密机制;数字签名机制;访问控制机制;数据完整性机制;认证机制;信息流填充机制;路由控制机制;公证机制。

2 制定安全策略

制造自动化网络的安全策略应该以用法研究的结果为基础。安全策略至少应该包括下列这些问题。

2.1 利用制造信息资源所涉及到的所有的基本原理。

2.2 安全策略应该形成两种态度中的一个,或是自由的或是保守的。

2.3 特许利用来自制造自动化网络本身以外的信息资源的类型和方法。

2.4 特许利用来自制造自动化网络内的信息资源的类型和方法。

2.5 特许使用来自制造自动化网络内的外部地址的类型和方法。

3 对TCP/IP自动化网络的威胁

对自动化网络安全和完整性的威胁一般可以归纳成下列几类。

3.1 对特许用户的服务的否定 对制造自动化网络的最大威胁是对适时服务的否定。在制造自动化环境中,服务被否定的危险明显存在着:数据连接被拒绝,控制传输被拒绝,以及由于操作人员界面的存在,妨碍了对制造过程的积极管理。

3.2 对非特许用户的服务的实现 基于TCP和UDP这两者之上的较高层应用协议对缺少证明机制是敏感的。应用协议如果不实现某种类型的证明机制,了解该协议的任何主机都能够提出服务请求,包括把数据写进过程控制设备的请求。这种情况可能发生在反映生产系统结构的开发系统的环境中。在这种环境中,非特许的东西就能够扦入控制信号和指定点,直接进入制造系统。结果,操作人员的安全和生产质量就面临严重的危险。

3.3 通信的改变或截断 通信截断可能在许多方面被执行。对截断对话感兴趣的破坏者可能会利用某一个方法设置中继。一个中继破坏可能发生在网络中任何地方,甚至是距离制造自动化网络很远的位置。中继机器能够实时调节通信量或记录用于日后分析的报文包。中继机器也能够改变被传输的通信内容。

截断通信的第三种方法包括使用一种被动包监控器。包取样器能够以中继破坏的方式向破坏者提供被记录的网络信息。

4 通过网络设计对抗威胁

4.1 通过简单的IP路由选择实现网络分段 分段就是把一些网络主机分隔成实现独立网络通讯的功能上的子群,然后通过使用简单的路由器把它们互联起来。确保在分段设计中使用的IP路由器的正确结构是非常重要的。

4.2 采用路由器访问控制实现分段 大多数IP路由器支持访问控制的概念,而且能够把它应用到独立的主机或整个子网。当访问控制被加到子网层,则路由器被连接,从IP地址的特定范围到另一段都允许通信。使用访问控制的路由器必须被精心连接。如果访问控制应用到整个网络,它就会减少通过远距离基于中继的破坏使分段之间对话被截断的危险。

4.3 包过滤 包过滤扩展了访问控制的概念。当路由器增加了过滤性能以后,准确地知道网络操作中所使用的协议类型和通道数目是重要的。它在网络层截获网络数据包,根据防火墙的规则表,来检测攻击行为。包过滤防火墙一般作用在网络层(IP层),故也称网络层防火墙(Network Lev Firewall)或IP过滤器(IP filters)。数据包过滤(Packet Filtering)是指在网络层对数据包进行分析、选择。通过检查数据流中每一个数据包的源IP地址、目的IP地址、源端口号、目的端口号、协议类型等因素或它们的组合来确定是否允许该数据包通过。在网络层提供较低级别的安全防护和控制。

4.4 防火墙 所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障。主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。

5 结束语

通过分析基于TCP/IP制造自动化网络中期待的通信,考虑机构的安全策略,就有可能设计出一个使数据恶化和被窃取的危险降至最低程度的网络拓扑结构。在制造工厂和外部世界之间设置防火墙,在工厂内部实现分段网络、访问控制网络就能够提供网络管理者,防御無意的或有敌意的破坏。

参考文献:

[1]曹成,周健,周红,王明福.网络安全与对策.合肥工业大学学报(自然科学版).2007年09期.

[2]秦迎春.TCP/IP协议的隐患及防范.计算机安全.2005年03期.

[3]姚婕,朱磊明.TCP/IP协议脆弱性分析.安徽电子信息职业技术学院学报.2004年21期.

上一篇:应用文写作知识点大全下一篇:技术开发服务合同