tcp协议范文

时间:2023-10-03 06:08:51

tcp协议

tcp协议篇1

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

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

一、TCP/IP参考模型

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

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

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

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

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

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

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

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

二、TCP/IP主要协议

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

2.1、网络层

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

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

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

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

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

2.2 传输层

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

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

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

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

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

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

2.3 应用层

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

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

3.1 lP协议服务分析

3.1.1 不可靠的投递服务

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

3.1.2 无连接的投递服务

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

3.1.3 尽力的投递服务

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

3.2 TCP协议服务分析

3.2.1 面向流的投递服务

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

3.2.2 面向链接的投递服务

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

3.2.3 可靠地投递服务

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

四、结束语

tcp协议篇2

引 言

超文本传输协议(HTTP)是目前通过Internet进行信息交换最主要的方式。HTTP协议是建立在请求/响应(request/response)模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME(Multipurpose Internet Mail Extensions)样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息(包含服务器的信息、资源实体的信息和可能的资源内容)。图1给出了HTTP协议实现的一个简单模型。HTTP/1.0[3]为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1[4]提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应消息,因此减少了链接建立的次数和经常性的链接开销。

可持续链接减少了每次TCP链接建立的时间,但是一个空闲的TCP链接将需要一个Socket和相应的存储缓冲区。一个Socket缓冲区的最小长度必须大于一个TCP包的最大长度,即64 KB,而且很多实现方法在链接建立时将预分配一些缓冲区。可用的Socket的数量是有限的,很多基于BSD的操作系统对于能够同时打开的链接数都有一个缺省的最大值。

无线掌上设备PDA的应用(如浏览器)[5]特点表现在:① 因为页面是针对掌上设备制作的,一般在1 K~2 K字节,比较小;② 目前无线通信网络的带宽很窄,GSM的数据信道带宽只有9.6 K。当前Web页面的访问大多通过HTTP协议,并使用TCP作为下层的传输控制协议。但不幸的是,TCP并不适合短会话的应用情况,不同于现在采用的使用单一TCP传输协议进行数据传输的方式。本文提出了采用动态选择传输层协议(TCP、UDP)的方法来改善取回页面的延迟、网络拥塞以及服务器的负荷。

这种混合TCP-UDP的方法结合两个方面的优点:首先,对于需要比较少数据传输的情况,它将使用UDP作为传输层的协议,从而避免了TCP链接的多次握手开销;另外,对于需要较多数据传输的情况,它将使用可靠的带有重排序和拥塞控制的TCP协议作为传输层的协议。混合TCP-UDP的实现方法只需要对应用层的改动,而操作系统的核心代码不用任何更改。仅采用UDP协议的缺点在于,需要在应用层建立一套类似于TCP复杂的控制协议,从而进行重排序和拥塞控制来保证传输的可靠性。

1 背 景

HTTP是一个请求/响应协议,客户端的应用程序通过提供一个URL可以从服务器上得到所需的数据。HTTP可以用来访问各种不同类型的资源,其中包括文本、图形、影音、可执行文件、数据库查询结果等等。

图2给出了在客户端发起HTTP GET请求后,在客户端和服务器之间进行数据包交换的示意。图中只有两个数据包是有用的(即携带了数据):一个是HTTP GET请求,另一个是HTTP的响应。其它的都是TCP用来进行握手操作的数据包。为了减轻Web服务器的负荷,经常采用重定向机制。这样从服务器发来的重定向响应报文是很短的数据包。使用TCP作为传输协议需要至少7个数据包,而使用UDP则只需要2个数据包就足够了。

2 设 计

我们使用混合传输层[6]的方法即对于少量数据传输的链接采用UDP,而对于大量数据传输的链接采用TCP作为传输层协议。这样对于短链接而言就避免了TCP经常性的握手开销,而对于长链接则仍可获得TCP的优点,如超时重传、拥塞控制、错误恢复机制等。这种方法中,客户端首先尝试使用UDP作为传输层的协议,如果对于所请求的URL UDP并不适合,则再次使用TCP链接。这种方法提供了以下保证:

如果初始的UDP数据包丢失,将采用TCP重新链接而不会受到影响。

如果所链接的服务器没有使用混合传输层的实现机制,客户端将使用TCP重新进行链接。

图3给出了混合TCP、UDP的实现算法。一个采用混合算法的HTTP客户端首先使用UDP作为传输层的协议发出HTTP GET请求,同时启动超时定时器。

当服务器处理客户端发来的请求时,它可以从以下两点做出选择:

① 如果响应的数据足够小(比如,可放到一个数据包中),服务器将使用UDP发回响应。像比较小的网页或HTTP REDIRECT响应就属于这一类。

② 如果响应的数据很大,无法放进一个UDP数据包中,服务器则要求客户端使用TCP重试。这可以通过添加一个HTTP的头部字段来解决如 TCPRETR。

在客户端,将会出现以下三种情况:

客户端从服务器接收到响应。如果响应中包含了所需的HTTP响应,客户端将对数据进行处理。如果服务器要求客户端重试,客户端将使用TCP作为传输层重试。

如果服务器没有处理通过UDP传输的HTTP包,客户端就会收到ICMP错误消息(目的地址无法到达/协议无法到达)。此时客户端将会使用TCP重试。

如果定时器超时,客户端应使用TCP重试。

图4给出了在定时器超时情况下,客户端和服务器之间数据包的交换。这种超时机制提供了可靠性,以及与未使用混合TCP-UDP方法的服务器的兼容性。

图5示意了服务器要求客户端使用TCP重发请求时,客户端和服务器之间的数据包交换。

3 结 语

混合TCP-UDP方法改善了参与HTTP传输的三个方面:客户端、服务器和网络。

对于客户端而言,可以避免由于TCP而引入的三向握手的时间,从而减少了浏览的延迟时间。

对于服务器而言,由于所需的TCP的链接数量减少,从而降低了由于建立、维护、撤销TCP链接所带来的服务器的负荷。

tcp协议篇3

【关键词】面向连接 无连接 区别 TCP协议

1 面向连接和无连接区别概述

网络编程中最基本的概念就是面向连接(connection-oriented)和无连接(connectionless)协议。尽管本质上来说,两者之间的区别并不难理解,但对那些刚刚开始进行网络编程的人来说,却是个很容易混淆的问题。面向连接和无连接协议可以,而且通常也确实会共享同一条物理介质。

无连接协议中的分组被称为数据报(datagram),每个分组都是独立寻址,并由应用程序发送的。从协议的角度来看,每个数据报都是一个独立的实体,与在两个相同的对等实体之间传送的任何其他数据报都没有关系。

通常这就意味着客户端和服务器不会进行长期的对话--客户端发起一条请求,服务器回送一个应答。这还意味着协议很可能是不可靠的。也就是说,网络会尽最大努力传送每一个数据报,但并不保证数据报不丢失、不延迟或者不错序传输。

另一方面,面向连接的协议则维护了分组之间的状态,使用这种协议的应用程序通常都会进行长期的对话。记住这些状态,协议就可以提供可靠的传输。典型的面向连接协议有三个阶段。第一阶段,在对等实体间建立连接。接下来是数据传输阶段,在这个阶段中,数据在对等实体间传输。最后,当对等实体完成数据传输时,连接被拆除。

一种标准的类比是:使用面向连接的协议就像打电话,而使用无连接协议就像寄信。给朋友寄信时,每封信都是一个独立寻址且自包含的实体。邮局不会维护以往通信者的历史记录--也就是说,它不会维护信件之间的状态。邮局也不保证信件不丢失、不延迟、不错序。这种方式就对应于无连接协议发送数据报的方式。

这种类比虽然很形象,但并不是非常贴切的。电话系统有实际的物理连接。而我们的"连接"则完全是想象的--它只是由两端记录的状态构成的。为了说明这一点,我们来看看当一个空闲连接一端的主机崩溃并重启时会发生什么情况。

2 TCP\IP协议应用

既然无连接协议有这么多的缺点,大家可能会奇怪,为什么还要使用这种协议呢?我们会看到,在很多情况下,使用无连接协议构建应用程序都是有意义的。但更重要的是,无连接协议是构建面向连接协议的基础。为了更具体地说明这个问题,来看看TCP/IP协议族,TCP/IP基于一个4层的协议栈。

栈的底部是接口层,直接与硬件相连。栈的顶部是应用程序,比如Telnet、ftp和其他标准的以及用户编写的应用程序。因此,IP是构建整个TCP/IP协议族的基础。但IP提供的是一种尽力而为的、不可靠的无连接服务。它接收来自其上层的分组,将它们封装在一个IP分组中,根据路由为分组选择正确的硬件接口,从这个接口将分组发送出去。一旦将分组发送出去了,IP就不再关心这个分组了。和所有无连接协议一样,它将分组发送出去之后就不再记得这个分组了。

现在我们来看看TCP是怎样利用这种简单的无连接服务来提供可靠的面向连接服务的。TCP的分组被称为段(segment),是放在IP数据报中发送的,因此,根本无法假定这些分组会抵达目的地,更不用说保证分组无损坏且以原来的顺序到达了。

首先,它为TCP段中的数据提供了校验和。这样有助于确保抵达目的地的数据在传输过程中不会被网络损坏。

第二,它为每字节分配了一个序列号,这样,如果数据抵达目的地时真的错序了,接收端也能够按照恰当的顺序将其重装起来。

第三,TCP提供了一种确认-重传机制,以确保最终每个段都会被传送出去。

确认/重试机制是到目前为止我们讨论的三种附加机制中最复杂的一种,我们来研究一下它是怎样工作的。

TCP连接的每一端都维护了一个接收窗口(receive window),接收窗口就是可以从对等实体接收的数据序列号范围。最小值表示窗口的左边界,是所期望的下一字节的序列号。最大值表示窗口的右边界,是TCP缓冲区空间所能容纳字节的最大编号。使用接收窗口而不只是所期望的下一字节计数器,就可以通过流量控制来提高可靠性。流量控制机制可以防止TCP传输的数据使其对等实体的缓冲区空间溢出。

我们要注意这样一个事实:RTO定时器超时并不意味着原来的数据没有到达目的地。有可能是ACK丢失了,或者原来的段在网络中延迟的时间太长,以至于在其ACK到达之前RTO定时器就超时了。但这并不会造成什么问题,因为如果原来的数据确实到达了,那么重传的数据就会处于接收端TCP接收窗口范围之外,会被丢弃。

IP地址(这些地址通常都是以因特网标准的点分十进制表示法给出的)用来将一个IP数据报传送给一台特定的主机。数据报到达目的主机时,还需要将其数据传送给恰当的应用程序。例如,一个UDP分组的目标可能是回声服务,而另一个的目标则可能是时间查询服务。分组到达时,内核会搜索其套接字列表,查找一个与分组中的协议、地址和端口号相匹配的套接字。如果找到了匹配的套接字,就由指定的协议(在我们所讨论的情形中,就是TCP或UDP)来处理数据,并将这些数据提供给所有打开了匹配套接字的应用程序。

3 小结

总之,在本文中,我们研究了无连接和面向连接协议的区别。可知道,不可靠的无连接数据报协议是构建可靠的面向连接协议的基础,还简单介绍了可靠的TCP协议是如何构建在不可靠的IP协议上的。对TCP来说,连接完全是想象的。它是由端点所记忆的状态组成的,并不存在"物理"连接,而打电话的时候是有物理连接的。

参考文献

[1]朱加强编著.计算机网络技术[D].北大燕工教育研究院,2007(06).

[2]魏大新,李育龙编著.Cisco网络技术教程(第2版)[M].北京:电子工业出版社,2007(04).

[3] 陈涓,赵振平译.TCP/IP高效编程:改善网络程序的44个技巧[M].北京:人民邮电出版社,2011(04).

[4]王达编著.网络工程师必读―网络工程基础[M].北京:电子工业出版社,2006(07).

[5]网管员世界杂志社编著.网管员世界2011超值精华本[M].北京:电子工业出版社,2011(06).

作者单位

1.贵州大学 贵州省贵阳市 550025

tcp协议篇4

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

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

TCP/IP Protocol Loophole Analysis and Prevention

WANG Xian-feng

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

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

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

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

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

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

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

2 链路层存在的安全漏洞

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

3 ICMP漏洞

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

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

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

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

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

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

4 IP漏洞

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

4.1 TCP 劫持

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

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

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

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

4.2 源路由选择欺骗

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

4.3 非同步入侵

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

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

4.4 Land 攻击

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

4.5 SYN 洪水攻击

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

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

4.6 防范措施

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

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

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

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

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

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

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

5 ARP欺骗

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

6 路由欺骗

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

7 结束语

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

参考文献:

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

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

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

tcp协议篇5

关键词:TCP/IP;8051MCU;HTML

中图分类号:TP36文献标识码:A文章编号:1009-3044(2008)31-0863-04

Transplant and Application of TCP/IP Protocol Based on 8051MCU

WANG Xiao-min, NA Wen-peng

(Information Science & Enginneering College, Liaoning University of Techology, Jinzhou 121001, China)

Abstract: A WEBSERVER is designed by transplanting TCP/IP protocol to 8 bit MCU and transmitting file with HTML code.The WEBSERVER is used to control a LED.This system in which RS232,RS485,CAN bus is replaced by UTP-5 cable can be universally used in Embedded System.

Key words: TCP/IP; 8051MCU; HTML

1 引言

随着电子信息技术的迅猛发展,嵌入式系统已经在社会生活的各个方面得到广泛的应用。为了实现多个嵌入式系统的互联,工程师们利用RS232、RS485及CAN等进行组网。这样组成的网络覆盖范围有限,而且成本也较高。另一方面,INTERNET技术飞速发展,它已成为社会最主要的信息基础设施,它具有覆盖范围广,技术成熟,数据传输速度快,价格低廉等优点。针对这种情况,我们设计一个系统,将应用最广泛的INTERNET协议即TCP/IP协议移植到8位MCU上,同时在传输的文件中加入HTML代码,实现了一个WEBSERVER,并用其对一个液晶显示屏进行控制和监视。这一系统保证了数据传输的可靠性,提高了数据传输的速度,利用了分布广泛的INTERNET,同时也为用户提供了一个友好的操作界面,可以很方便的利用PC机上的浏览器对MCU进行远程控制。

2 系统的硬件结构

系统结构如图1所示。STC89C516RD+是一款高性能的MCU,它具有64K的片内FLASH和1280BYTE的片内RAM,最高时钟频率可达80M。与之相连的RTL8019AS是以太网控制器,它为系统提供最基本的网络物理层接口。HM62256是32K的外部RAM,主要用于存放网络上来的数据和即将发送到网络上的数据。RS232接口用于下载程序和调试程序。外部设备指一些被系统控制着的设备,如传感器,液晶屏等,本文系统使用的是液晶屏。

3 系统的工作流程

系统上电后首先初始化液晶显示器,根据最初的显示参数调用display( )函数控制液晶屏的显示,接着初始化TCP/IP协议栈和RTL8019AS,之后MCU开始监听80端口,若收到请求则发送一个登录页面给客户端,继续监听,用户在浏览器输入用户名及密码发送,MCU收到正确用户名和密码后发送主页面,主页面中包含液晶显示器状态及配置选项。MCU收到配置信息后修改显示参数并调用display( )控制液晶屏的显示,然后发送修改过的主页面给客户端,客户可以在浏览器中的显示状态区看到配置后的显示状态以确定配置是否生效。流程图如图2所示。

4 RTL8019AS简介

RTL8019AS是由台湾REALTEK公司生产的以太网控制芯片。

RTL8019AS由接收逻辑控制器、接收CRC校验、接收计数器、FIFO逻辑队列、发送逻辑控制器、发送CRC校验、内部总线、IO缓冲区等组成。它的工作流程是:接收逻辑在接收时钟的控制下将串行数据组成字节送到FIFO和CRC,发送逻辑将FIFO送来的字节在发送时钟的控制下逐位移出并送到CRC,CRC逻辑在接收是对输入的数据进行CRC校验并将结果与帧尾的CRC比较,如不同该帧数据将被抛弃,在发送时CRC对帧数据产生CRC校验码并附加在数据尾传送,地址识别逻辑对接收帧的目的地址与预先设置的物理地址(又叫MAC地址)

进行比较,如不同且不是广播地址,该帧将被抛弃。

RTL8019AS片内有16KB的RAM,地址为0X4000―0X7FFF,每256个字节称为一页,共64页。页的地址就是地址的高8位,页地址为0X40―0X7F。这16K的RAM一部分用来存放接收的数据包,一部分用来存储待发送的数据包。RTL8019AS还提供32个IO端口地址,地址偏移量为00H―1FH。其中,00H―1FH为特殊功能寄存器地址,10H―17H为DMA地址,18H―1FH为复位端口。特殊功能寄存器分为四页,我们只用到前三页。下面介绍几个重要的寄存器。

CR是控制寄存器,其各位的定义如下所示。

PS1和PS0用来选择寄存器页,例如:写入10表示选择第二页。

RD2、RD1、RD0表示执行的功能,如表1所示。

TXP在发送数据包时置1,发送完成自动置0。

最后两位用来启动和停止命令。

CURR和BNRY用来控制缓冲区的存取过程,保证能顺次写入和读出。

PAR0―PAR5用来存放MAC地址。

10H―17H为DMA地址,只需取一个进行使用,我们取10H,向10H中写数据就是向16K的RAM写数据。

18H―1FH复位端口,对其中的偶数地址读或写数据,都会引起芯片复位,可以通过读或写这个端口来软件复位。

本系统中RTL8019AS的IO端口的基地址为240H(对网卡来说),对应的MCU寻址地址为8000H―8F00H。MCU与RTL8019AS连接如图3所示。

5 TCP/IP协议的移植

TCP/IP是一个庞大的协议栈,8位MCU资源有限,这里我们选择移植部分协议,移植的协议有ARP协议,IP协议,ICMP协议,TCP协议,HTTP协议以及为以上各协议服务的以太网协议。

5.1 以太网协议

以太网协议直接对以太网芯片进行操作并为上层协议提供服务,本文使用DIX ETHERNET V2帧结构,如下所示。

以太网协议提供一个函数query_8019( ),主函数调用query_8019( )时,query_8019( )检查CURR=BNRY+1是否成立,若成立则说明无新到数据包,若不成立则说明有新到的数据包。若有新到数据包,主函数调用以太网协议提供的rcve_frame( )函数为以太帧分配存储空间并将其读入,之后调用太网协议提供的

eth_rcve( )函数,该函数对帧类型字段进行检查,把符合要求的帧去掉帧头后送给IP或ARP协议处理。发送数据时,eth_send( )函数为上层来的数据包增加帧头,并调用send_frame( )函数通过远程DMA写操作将帧发送出去。

5.2 IP协议

IP协议提供的是一种无连接不可靠的数据传输方式,它只提供传输服务,可靠性由TCP保证。IP协议调用ip_rcve( )函数对网络上来的IP包进行校验,比较IP地址,检测协议类型,然后转到TCP或ICMP进一步处理。IP协议调用ip_send( )函数为上层来的数据包增加IP数据报报头,然后交给以太网协议处理。

5.3 ARP协议

ARP协议实现从IP地址到MAC地址的对应,当系统要发送一个IP包时,首先到ARP地址缓存中查询该IP地址对应的MAC地址,然后才能生成以太网帧发送出去。ARP报文格式如下所示:

当收到一个ARP请求,ARP协议调用arp_send( )发送一个ARP应答,并检查地址缓存中是否有请求方的IP和MAC,若没有则将其加入。当发送一个IP数据包时,系统首先在地址缓存中查找IP地址对应的MAC地址,若找到则用该MAC地址生成以太网帧,若没找到则发送ARP请求,然后等待ARP应答,若收到应答则将其加入地址缓存,若经过一个等待时间后没收到应答则重发请求,经两次重发还没收到应答则放弃这一次IP包的发送。

5.4 ICMP协议

本系统的ICMP协议用于实现PING功能,当用户要检查系统是否连接正常时,可以用PING命令向系统发送ICMP包,系统收到后则发回一个ICMP应答包,用户据此可以判断系统是否连通。ICMP报文格式如下所示。

5.5 TCP协议

TCP协议是面向连接的协议,它采用三次握手建立连接。

TCP将用户数据打包构成报文段,它发送后启动一个定时器,另一端对收到的数据进行确认,对失序的数据重新排序,丢失重复数据,TCP计算和验证一个端到端的检验和以保证传输的可靠。

5.6 HTTP协议

系统启动后,等候浏览器的请求报文。浏览器发出的HTTP请求报文格式如下所示。

请求行中包含方法字段、统一资源标识字段和HTTP版本字段,其中方法字段包括GET和POST等。GET方法取回由统一资源标识标识的信息。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交信息。系统在HTTP报文中检查方法字段,若方法为GET则发送HTML网页代码。若方法为POST则根据接收到的参数调用与参数对应的函数调整对设备的控制,并修改要发送的HTML网页代码,然后发送。发出的HTTP报文由以下两部分组成。

char code header[] = {

"HTTP/1.1 200 OK\n"

"Cache-control: no-cache\n"

"Connection: Keep-Alive\n"

"Content-Length: TAG:LEN1\n"

"Content-Type: text/html\r\n\r\n" };

char code web_page[] = {……………..}

header[]是HTTP报文头,其中的TAG:LEN需要由HTML代码的长度来替换,web_page[]是报文主体,省略的部分是HTML代码。

6 HTML的应用

在浏览器输入WEBSERVER的IP后首先得到的是如下的登录界面。

图4 登录界面

其HTML代码如下

<html>

<head><title>输入用户姓名</title></head>

<body>

<form >

请输入你的姓名:

<input type=tex name=yourname><br>

请输入你的密码:

<input type=text name=password>

<input type=submit value=提交>

</form>

</body>

</html>

用户提交名字和密码后点击提交,WEBSERVER检查其正确与否,若错误则发回一个网页提示用户重新输入,若正确则发送如下的HTML代码

<html>

<body>

显示屏状态:<br>

<table width="350" border="1">

<tr>

<th align="center">显示参数类型</th>

<th align="center">参数值</th>

</tr>

<tr>

<td align="left">文字内容</td>

<td align="right">text</td>

</tr>

<tr>

<td align="left">字体大小</td>

<td align="right">size</td>

</tr>

<tr>

<td align="left">移动方向</td>

<td align="right">direction</td>

</table><br><br><br>

显示屏参数设置:

<form >

文字内容:

<input type=text name=neirong><br>

字体大小:

<input type=text name=daxiao><br>

移动方向:

<input type=text name=fangxiang><br>

<input type=submit value=提交>

</form>

</body>

</html>

浏览器收到后显示如图5参数设置和状态显示页面。

用户输入参数并提交,WEBSERVER收到参数后调用显示函数对液晶屏进行控制并发回一个网页,在此网页中的显示屏状态栏中的text等参数将被替换为用户设置的参数。

7 结束语

本系统完成了TCP/IP协议在8051MCU中的移植,实现了通过浏览器这一广泛使用的工具对液晶屏的远程控制,对系统稍作修改就可以将其应用到其他各种各样的控制系统中,它具有很好的稳定性和很高的传输速度,由于其基于广泛使用的INTERNET,所以其组网的成本也比较低廉,可以取代传统的总线,具有很好的应用前景。

参考文献:

[1] 周晓峰.单片机上简单TCP/IP协议的实现[J].微电子学与计算机,2004(2):100-102.

[2]REALTEK SEMICONDUCTOR CO.RTL8019AS SPECIFICATION[S].2001.

tcp协议篇6

1网络隐蔽通道的基本原理

早期对隐蔽通道的定义只局限于操作系统内部,研究的重点也是针对操作系统的安全。随着网络技术的快速发展,隐蔽通道已经被应用到网络技术中。由于网络协议在设计时存在漏洞,如网络协议的首部存在冗余字段,而网络设备对这些字段的限制比较宽松,由此可以通过精心的构造,利用这些字段实现隐蔽通信,就形成了网络隐蔽通道[5]。因此,广义地讲,网络隐蔽通道是指各种利用非正常的通信手段在网络中传递信息的通道。图1为隐蔽通道模型。

2建立网络隐蔽通道的方法

建立隐蔽通道的方法一般就是利用网络传输协议设计中存在的一些不严密的地方来隐藏信息,以躲过网络安全防护系统和防火墙系统,达到传输非法信息的目的[6]。由于防火墙或入侵检测系统往往只注重对数据部分的检测,而忽略了对首部息的检测,因此就可以从以下途径来建立隐蔽通道:一是利用TCP/IP协议的首部中的一些很少使用或不使用的域来隐藏信息;二是可以利用数据传输时数据包头中的一些必须强制填充的域(如IP数据包头中的源地址、目的地址和TCP数据包头中的源端口域、目的端口域、序列号域等)来隐藏信息;此外,还可以利用第三方合法主机中转建立隐蔽通道,利用Ping命令隐藏信息建立隐蔽通道等方法。

3基于TCP协议首部的隐蔽通道

3.1TCP协议首部隐蔽通道设计思想基于TCP协议模型网络隐蔽通道的设计思想主要是利用该模型中的协议来进行的,而双方的通信方式则是“合法的”,通信前双方约定好用以隐藏或解析隐蔽信息的规则,然后发送端依据该规则对要发送的隐蔽信息进行编码、伪装、发送,接收端收到经过编码的信息后,便会依据发送端产生的规则来解析隐蔽信息。TCP协议首部就是用于隐蔽信息的首选目标。图2为TCP协议首部的结构,主要包括源端口和目标端口字段、确认序列号、首部长度、标志位、窗口、检验和及紧急指针等字段。在TCP协议首部的这些字段中,很多字段在通常情况下根本不用或很少使用,可以用来隐藏信息。本文选择序列号字段和确认序列号字段作为隐蔽通道的载体,主要有两方面的原因:一是它们的长度达到32bit,可以隐藏更多信息,同时数据位很多,往往难以检测;二是它们的值在数据传输过程中的变化具有规律性,接收端还原数据比较容易。假设要在网络中的客户端A和服务端B之间构建隐蔽通道,还需要借助第三方受信的Web服务器C。利用TCP序列号来实现数据隐蔽传输的方法是:首先客户端A构造自己的SYN数据包,向受信的Web服务器C发出建立连接的请求,而服务端B也捕获到该SYN包,就伪造Web服务器C向客户端A发送返回的SYN+ACK数据包,并在TCP序列号字段中携带加密的隐秘信息;客户端A从服务端B伪造的Web服务器返回数据包中捕获隐秘信息或指令解析并执行,从而实现了将信息从客户端A到服务端B之间的隐蔽传输。由于在整个数据通信过程中并没有形成任何一个完整的TCP三次握手,并且返回的SYN+ACK包可看作对每个SYN包的响应,因此可以达到规避防火墙,实现隐藏信息的目的。

3.2隐蔽通道的构建利用TCP协议首部构建隐蔽传输通道,主要就是要在发送端生成包数据包时将隐秘信息嵌入,然后在接收端捕获含有隐秘信息的数据,并将其解码出来。由于在数据传输过程中使用了第三方受信的Web服务器,隐秘信息是隐藏在向Web服务器发送请求的数据包中,又通过接收方伪造Web服务器向发送方返回应答数据包,同时也将隐秘信息隐藏在返回的应答数据包中。在隐秘信息传输过程中没有形成完整的三次握手,因此不会给正常通信造成影响,也不会引起防火墙的反应。而将隐秘信息嵌入TCP数据包首部的序列号字段和确认序列号字段,这两个字段长度均为32bit,因而可以隐藏更多信息,同时数据位多,更加难以检测。

3.2.1数据包的生成和发送生成网络数据包的方法有基于原始套接字的方法、基于WinPcap的方法和基于Libnet的方法等[7]。本文采用基于WinPcap的方法,具体包括两个部分:(1)在客户端生成获取网关MAC地址的ARP请求数据包,目的是为了获取本机、服务端以及网关的MAC地址。由于局域网中ARP数据包大量存在,且机器中的动态ARP表需要不断更新,正常的ARP数据包不会引起防火墙等设备的怀疑,因此只需要生成正常的ARP请求数据包即可。使用Winsock库提供的SendARP()函数能十分方便地生成ARP请求数据包,获取与IP地址对应的物理地址。(2)生成手工制作的TCP数据包,各字段符合TCP协议的定义,发起对受信的Web服务器的建立连接请求,在服务端则伪造Web服务器,返回嵌入了隐秘信息的SYN+ACK数据包到客户端。

3.2.2数据包的捕获客户端捕获数据包后,需要对其进行分解,对每层协议进行解析,然后读取所传送的数据内容,最后再对数据进行解码和处理。捕获数据包的方法也有多种,对应发送端,也采用了基于WinPcap的方法。其步骤为:首先使用pcap_findalldevs()获得主机的网络设备列表,然后使用pcap_open_live()打开网络设备,使用函数pcap_compile()编译过滤规则和使用函数pcap_setfilter()设置过滤规则。之后使用pcap_loop()和pcap_next_ex()捕获数据包。捕获到数据包后就可以对其进行分解和解析,将TCP首部中含有隐秘信息的序列号或确认序列号的内容取出,经解密后就得到隐秘信息。

4基于TCP首部的隐蔽通道系统的实现

实现基于TCP首部的隐蔽通道就是采用第3节中所述的思想和方法,在发送端伪造TCP协议发送包含有隐秘信息数据包,在接收端对接收的数据包中的隐蔽信息进行相应处理。

4.1系统的总体构架系统的功能原理如图3所示。通过数据包生成技术,客户端将隐藏信息加密后嵌入TCP协议首部的序列号字段或确认号字段,对可信的第三方Web服务器发起连接请求。服务端则伪造Web服务器向客户端返回SYN+ACK数据包。通过数据包捕获技术,服务端从客户端发往Web服务器的请求数据包中捕获隐秘信息并还原。客户端则从服务端伪造Web服务器的返回数据包中捕获隐秘信息或指令解析并执行。

4.2系统功能及实现

系统功能模块系统可分为数据包生成模块、数据包捕获模块、管理与控制模块和指令解析模块,如图4所示。其中,数据包的生成和捕获模块利用多线程技术实现,执行时不会造成MFC界面假死。管理与控制模块负责处理网络设备的获取与控制。指令解析模块对传递的信息进行显示和执行指令。秘密信息经加密后嵌入数据包发往公开信道,接收端在公开信道捕获数据包并对其进行解密。

5实验结果及分析

经过实验,通信功能方面,双方互发的消息都能正确接收。控制功能方面,能够通过在客户端发送命令来实现对服务端的控制。经测试,该系统在WindowsXPSP2和Windows7操作系统中运行良好。实验结果见表1和表2。实验结果表明,该系统不仅可以实现信息传输和远程控制的功能,而且能够成功躲避各种安全防护系统的防范。

6结束语

网络隐蔽通道的存在违背了系统安全策略,给网络信息安全带来了极大的隐患。从攻击者角度出发去检验网络安全防护系统的性能,是消除安全隐患的一条良好途径。通过对网络隐蔽通道及相关技术进行研究,提出了基于TCP首部中的序列号和确认号字段设置网络隐蔽通道的方法,通过与第三方受信的Web服务器进行通信,伪造Web服务器的响应来构建隐蔽通道。设计并实现了原型系统。经过实验测试,系统能够成功绕过多种杀毒软件和防火墙,传输隐蔽信息和实现远程控制。这将对提高网络安全防护系统的性能提供很好的决策依据。

tcp协议篇7

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

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

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

一、课程教学状况

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

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

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

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

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

1.可视分析基础

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

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

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

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

3.路由表的构造

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

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

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

1.OSPF及其LSA简述

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

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

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

类型 作用

类型1 路由器链路公告

类型2 网络链路公告

类型3 网络摘要链路公告

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

类型5 AS外部链路公告

类型7 非纯残域网络公告

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

2.仿真实验配置

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

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

RT1:

interface loopback0

ip address 1.1.1.1 255.255.255.255 //回环地址

interface serial0/2

ip address 10.0.15.1 255.255.255.252 //链路地址

interface ethernet3/0

ip address 10.1.1.1.1 255.255.255.0 //业务地址

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

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

RT1:

router ospf 1 //运行OSPF进程

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

network 6.6.6.6 0.0.0.0 area 0

network 10.2.6.0 0.0.0.0.255 area 2

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

3.仿真图分析

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

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

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

四、结论

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

参考文献:

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

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

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

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

2008,(8).

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

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

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

tcp协议篇8

【关键词】 图像数据 数据传输 TCP/IP

在印刷图像在线检测系统中,为了提高系统图像处理运算能力,同时实现对系统的有效管理,通常采用将运算处理单元同系统管理与显示单元分开的方法,即采用服务器客户端的分布式系统结构,服务器与客户端之间通过网络连接,按照一定的网络协议实现数据通讯与图像数据传输功能。

一、 基于 TCP/IP 协议的数据通讯与图像数据传输方法

作为目前广泛采用的一组完整的网络协议,TCP/IP 协议的传输层协议为用户提供了用于虚电路服务及数据传输可靠性检查的传送控制协议(TCP)和用于数据传送的数据报协议(UDP)。同时,Socket 的出现,为用户提供了基于 TCP/ IP 网络应用编程接口。

在利用 Socket 进行通信时,有两种主要方式:一种叫做流方式(Stream Socket),也称面向连接方式,在这种方式下两个通信的应用程序之间先要建立一种虚拟的连接,只有连接建立以后才能开始传输数据,这种方式对应的是 TCP 协议。

第二种叫数据报文方式(Datagram Socket),又称无连接方式,在这种方式下,数据在传送过程中有可能会丢失,而且,后发出的数据也有可能先收到。由于本系统的客户端与服务器端间的通讯对实时性、快速性和可靠性的要求非常高,传输效率将会影响到检测过程所消耗的时间,过多的时间消耗会导致系统检测精度的降低,同时会对图像的后续处理产生影响;错误的或者顺序颠倒的数据信息可能会带来很严重的后果。

因此,采用 TCP 协议可以在连接虚电路建立后消除隐含在建立客户机/服务器间通讯时的非对称性,保证通讯两端的对等数据通信和图像数据的准确传输。

二、基于 TCP 协议和 Csocket 类的网络通信实现

在基于 TCP 协议的网络通信的实现过程中,采用Microsoft Visual C++ 的MFC 类库中提供的 CSocket 类,采取面向连接的流方式实现了客户端与服务器端之间的实时通讯。其服务器与客户端的进程。系统通信的工作过程如下: 在印刷图像在线检测系统中,上位机作为服务器,调用Listen () 函数进行监听,等待下位机的连接;下位机作为客户机,当某一客户机要联通上位机时,调用Connect() 函 数主 动 进 行连接。

客户端在连通服务器之前先发送连通请求,并把包括站名、IP 地址、端口地址等客户机信息发送到服务器。服务器端对进行连接请求的身份确认,若身份不符则主动中断连接;若身份得到确认则允许连接并发送确认信息到客户端,开始接收由客户端上传的数据。

三、网络连接状态的在线诊断

在印刷图像在线检测系统的实际检测过程中,会出现这样一种情况:服务器端不能实时获得检测对象的缺陷数据,而此时系统软件亦没有捕捉到任何异常,从而导致整个系统缺陷检测与缺陷分类功能的失效。因此,为了保证网络的正常工作,需要对网络进行在线化检测,从而能够网络及时进行修复。

引起该检测失效故障的可能原因很多,最可能的一种原因是:应用程序的其他部件都处于正常运行状态,客户端已经检测到产品缺陷,而服务器端显示的却是之前检测到的缺陷数据,即检测系统的网络通讯功能 失 效 , Client Socket和CSever Socket 之间丢失有效连接,导致客户端采集到的缺陷数据不能实时地上传到服务器端,或者由于某种原因延迟一段时间,同客户端机之后所检测到缺陷数据一起上传至服务器端,导致缺陷的误报与漏报。为了诊断服务器端 Csever Socket 与客户端 Client Socket 之间是否建立有连接,有两种可能的方法:

(1) 在服务器端设置定时器,定时向每个客户端发送测试信息,若客户端能够及时返回确认信息,则证明服务器与客户端之间建立有连接;否则服务器端会继续向客户端发送测试信息,若服务器端在第 n 次(n 值由用户设置)发测试信息之前收到客户端的确认信息,仍然认为服务器与客户端之间建立有连接;若超过 n 次,则认为二者之间已经断开连接。

(2) 在每个客户机端都设置定时器,定时向服务器端发送测试信息,若服务器端能够及时返回确认信息,则证明服务器与客户端之间建立有连接;否则客户机会继续向服务器端发送测试信息,若客户端在第 n 次发测试信息之前收到服务器端的确认信息,仍然认为服务器与客户端之间建立有连接;若超过 n 次,则认为二者之间已经断开连接。

由于socket的通讯机制只能是服务器端处于监听状态,由客户端发送连接请求,来实现网络连接状态诊断,当检测到与服务器端断开连接,即可向服务器端进行Socket重连。

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