tcpip协议范文

时间:2023-04-08 00:33:34

导语:如何才能写好一篇tcpip协议,这就需要搜集整理更多的资料和文献,欢迎阅读由公文云整理的十篇范文,供你借鉴。

tcpip协议

篇1

摘要:从网络安全的角度出发,介绍TCP/IP计算机网络体系结构、TCP/IP协议栈的层次结构、各层的功能、常用协议和信息数据包格式,对TCP/IP网络的脆弱性,对网络攻击的方法进行分析。

关键词:网络对抗 TCP/IP协议 数据包

TCP/IP协议使得世界上不同体系结构的计算机网络互连在一起形成一个全球性的广域网络Internet,实现信息共享,由此展开TCP/IP协议和网络攻击分析和研究,寻求网络安全的措施,是有效实施计算机网络对抗的关键。

一、TCP/IP协议栈

(一)因特网依赖于一组称为TCP/IP的协议组。TCP/IP是一组通信协议集的缩写,它包含了一组互补和合作的协议。所有协议规范均以RFC(Request for Comment)文档给出。由于规范的不完善和实现上的缺陷使得针对网络协议的攻击成为可能。TCP/IP协议ISO/OSI参考模型将网络设计划分成七个功能层。但此模型只起到一个指导作用,它本身并不是一个规范。TCP/IP网络只使用ISO/OSI模型中的五层。图1显示了一个简单的五层网络模型,其中每层都采用了TCP/IP协议。

在图一中,有箭头的线表示不同的网络软件和硬件之间可能的通信信道。例如,为了和传输层通信,应用程序必须与用户数据报文协议(UDP)或传输控制协议(TCP)模块对话。为了在应用程序间交换数据报文,应用层必须与互联网控制报文协议(ICMP)或者互联网协议(IP)模块对话。但是,不管数据通过什么路径从应用层到网络层,数据都必须经过IP模块才能到达网络硬件。

(二)在TCP/IP协议体系结构中,每层负责不同的网络通信功能。1.数据链路层: 建立,维持和释放网络实体之间的数据链路,它们一起处理与电缆(或其他任何传输媒介)的物理接口细节,以及数据帧的组装。典型的协议包括ARP(地址解析协议)和RARP。

2.网络层:属于通信子网,通过网络连接交换传输层实体发出的数据。它解决的问题是路由选择、网络拥塞、异构网络互联等问题。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(互联网控制报文协议),以及IGMP协议(因特网组管理协议)。

3.传输层:主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信,通过使用滑动窗口还可解决传输效率和流量控制的问题。它所做的工作包括把应用程序交给它的数据分成合适的报文段交给下面的网络层,确认接收到的分组报文,设置发送最后确认分组的超时时钟等。由于传输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。

二、常用探测技术方法

入侵者之所以能突破网络网关是因为他们对所要突破的网络有更多的了解。通常是使用下面几种工具来收集信息:

1.Ping实用程序:可以用来确定一个指定的主机的位置。

2.Whois协议:具体点说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库。

3.Traceroute:程序能够用该程序获得到达目标主机所要经过的网络数和路由器数。

三、攻击方法

恶意攻击者攻击的方法多种多样,一般的攻击方法有:分布式拒绝服务攻击;网络层协议攻击;拒绝服务攻击。

拒绝服务攻击(Denial of Service),简称DoS。这种攻击行动使网站服务器充斥了大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪。拒绝服务攻击根据其攻击的手法和目的不同,有两种不同的存在形式。①迫使服务器缓冲区满,不接受新的请求。②使用IP欺骗,迫使服务器把合法用户连接复位,影响合法用户的连接,这也是DoS攻击的基本思想。

网络层协议的攻击主要包含几个方面。①IP地址欺骗:攻击者假冒IP地址发送数据包,从而达到伪装成目标主机信任的友好主机得到非授权服务。② 泪滴攻击:发送多段数据包,使偏移量故意出错,造成主机计算出错,系统崩溃。③RIP路由欺骗:声明攻击者所控制的路由器A可以最快达到某站点B,从而导致发送至B的数据包经A中转。由于A被控制,达到完成侦听,篡改的目的。

分布式拒绝服务DDoS(distributed denial of service)攻击就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。DDOS和DOS还是有所不同,DDOS的攻击策略侧重于通过被攻击者入侵过或可间接利用的主机向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致合法用户无法正常访问服务器的网络资源。

分布式拒绝服务攻击的体系结构—DDoS攻击按照不同主机在攻击时的角色可分为攻击者、主控端、端和受害者。分布式拒绝服务攻击体系结构如图二。

攻击者采用一些典型的入侵手段,如:通过缓冲区溢出攻击提升用户权限;设置后门、上载木马;通过发现有配置漏洞的FTP服务器TELNET服务器上载后门程序;通过窥探网络信息,非法获得用户名和口令,获得目标主机权限;通过社交工程,冒充目标主机所有者向不知情的信息服务部门打电话、发邮件获得目标主机口令、密码,非法入侵目标主机等等,以获得一定数据量和规模的主机的控制权,然后在这些主机上安装攻击软件。主控端的控制傀儡机用于向攻击傀儡机攻击命令,但控制傀儡机本身不参与实际的攻击,实际攻击由端的攻击傀儡机实现,受害主机接收到的是来自攻击傀儡机的数据包。攻击者在实施攻击之前,被设置在受控主机上的程序与正常的程序一样运行,并等待来自攻击者的命令。

四、保障网络安全的措施

1. 防火墙技术

防火墙技术是网络安全的第一道门户,实现信任网络和外部不可信任网络之间的隔离和访问控制,保证网络系统服务的可用性。防火墙的结构通常包括:①包过滤型防火墙。对进出内部网络的所有信息进行分析,并按照一定的安全策略对进出内部网络的信息进行限制。②双宿网关防火墙。它由装有两块网卡的堡垒主机做防火墙,对内外网实现物理隔开。它有两种服务方式:一是用户直接登录到主机上;二是双宿主机运行服务器。③屏蔽子网防火墙。它使用两个屏蔽路由器和一个堡垒主机,也被定义为单DMZ防火墙结构。

2. 入侵检测系统

入侵检测系统作为防火墙之后的第二道屏障,通过从网络中关键地点收集信息分析,对违反安全策略的行为作出相应。入侵检测是个监听设备,一般部署在防火墙附近比较好。放在防火墙之外的DMZ中,可以使监听器能够看见所有来自Internet的攻击,从而了解被攻击的重点方面。放在防火墙之内,减少攻击者的行动被审计的机会,减少误报警,而且如果本应由防护墙封锁的攻击渗透进来,可以发现防火墙的设置失误。

篇2

关键词:TCP/IP协议;网络安全;分析

TCP/IP协议是指一个允许不同软硬件结构计算机进行通信的协议族,是能将各个不同结构计算机连接起来的主要技术平台,也是实现计算机资源共享的技术支持。其中我们常说的Internet互联网就是建立在协议之上的计算机信息技术。TCP/IP协议主要有包括四个层次,第一层是应用层,是实现使用者去访问、去具体使用的平台,比如说常用的后缀网址等;第二层是传输层,是将用户使用平台与计算机信息网内部数据结合的通道,实现数据的传输与共享,有TCP、FTP等;第三层就是网络层,是负责网络中的数据包传送,并提供链接导向以及相关的数据报服务等;最后一层是网络访问层,是网络的接口层,也称数据链路层,能处理不同通信媒介的相关信息细节问题,比如说常见的以太网、ARP等。基于TCP/IP协议上互联网的信息传输范围变得更广泛,且传输的内容来源更多,对传输对象以及输送对象的信息安全要求降低,且多个端口使得数据信息被处理的步骤较多,不能对其保密性起到保障作用,TCP是使用一种介乎集中与动态分配之间的端口分配,端口也被分为保密与自由端口,这在一定程度上又大大增加了网络信息安全风险。下面就几个网络安全的主要问题进行分析。

1基于TCP/IP协议分析的网络安全问题

1.1应用程序层的TCP/IP协议。首先在应用程序层的TCP/IP协议,可能产生的网络安全问题PTP的网络接口接收到原本不属于主机的数据,通常使用在应用程序层的设计是一个共享的端口,由于特定类型的端口设计成本费用较高,因此在接收数据共享平台很容易得到不属于应用平台的相关收据,因此引入一些木马病毒,导致里面的数据,网络安全问题。为此,我们可以在应用平台设置特殊的加密文件,可以设置一个密码特殊信息内容可以允许接受和运输,在完全接受所有信息的情况下,减少信息被恶意攻击的风险。此外,网络分割处理,应用平台上设置更多的新闻发现信息渠道,一层一层过滤不符合安全信息,并没有一个可靠的信息来源,从而减少网络信息安全问题。1.2传输层TCP/IP协议。其次在传输层TCP/IP协议也有网络安全问题的风险,例如在ICMP传输通道,ICMP是IP层的一部分,是在软件和机器之间的传输和控制信息无连接协议。任何端口的计算机IP软件发送一个PINGICMP文件,文件传输,申请是否可以允许ICMP将源主机对应的响应,这个命令可以检测是否合法的消息。基本上所有应用程序数据的传输层同意,软件编程的主要原因不能智能识别恶意信息,在TCP/IP网络和以太网,常见防火墙和网络安全防护系统通常是自动默认端,而忽视可能存在安全风险。1.3TCP/IP协议在网络层。然后在TCP/IP协议在网络层也有网络安全的风险问题,主要表现为IP欺骗,因为TCP/IP协议的信任机制非常简单和方便,所以很多的IP欺骗利用这一特点,利用虚假信息来假装重要的数据信息。许多身份只有所有者的IP地址,这里篡改的IP地址可以攻击主机数据管理中心。我们可以设置更多的IP地址来识别不同的检查点,在确定正确后可以给IP流量,除了加强网络防火墙的防护功能,网络信息安全。1.4ARP欺骗的TCP/IP网络层。最后,在TCP/IP协议和ARP欺骗的网络层的网络安全问题。主机IP数据包的过程中会有一个或多个主机使用网络级别的第一层,和ARP源主机第一个查询工具,在没有找到对应的物理地址的IP地址将发送主机包含物理地址与IP地址的主机的信息。与此同时,源主机到目的主机将包含它自己的IP地址和ARP检测应答。如果在ARP识别链接错误,直接应用到目标主机的可疑信息,如携带病毒,如果恶意攻击使用ARP欺骗会导致网络信息安全漏洞。为此,应加强其保护功能的ARP识别链接,建立更多的识别水平,不仅按照名称作为主要依据识别IP,也指IP的相关属性,等等。

2TCP/IP协议安全问题的防范

对于SYNFlood攻击,目前还没有完全有效的方法,但可以从以下几个方面加以防范:(1)对系统设定相应的内核参数,使得系统强制对超时的SYN请求连接数据包的复位,同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的SYN请求数据包。(2)建议在该网段的路由器上做些配置的调整,这些调整包括限制SYN半开数据包的流量和个数。(3)建议在路由器的前端TCP拦截,使得只有完成TCP三次过程的数据包才可以进入该网段,这样可以有效的保护本网段内的服务器不受此类攻击。

3TCP/IP各层的安全性和提高各层安全性

网络层的安全性;传输层的安全性;应用层的安全性。一般来说,在应用层提供安全服务有几种可能的做法,一个是对每个应用(及应用协议)分别进行修改。一些重要的TCP/IP应用已经这样做了。在RFC1421至1424中,IETF规定了私用强化邮件(PEM)来为基于SMTP的电子邮件系统提供安全服务。Internet业界采纳PEM的步子太慢的原因是PEM依赖于一个既存的、完全可操作的PKI(公钥基础结构)。建立一个符合PEM规范的PKI需要多方在一个共同点上达成信任。作为一个中间步骤,PhilZimmermann开发了一个软件包,叫做PGP(PrettyGoodPrivacy)。PGP符合PEM的绝大多数规范,但不必要求PKI的存在。相反,它采用了分布式的信任模型,暨由每个用户自己决定该信任哪些其他用户。因此,PGP不是去推广一个全局的PKI,而是让用户自己建立自己的信任之网。

4总结

最重要的是,在一些基于TCP/IP协议的网络安全问题的分析和讨论,我们了解到应用程序层、传输层、网络层、传输层可能有几个方面,如网络安全风险。风险的主要原因是由于信任机制的协议设计相对简单,审定的信息来源不到位,使大量的恶意内容利用漏洞,导致很多软件欺骗。在解决这些问题,因此,我们需要在网络信息传输通道和信息识别单元和数据存储信息链接中增加安全保护,增强警惕诈骗信息的意识,建立更多的保护环节,避免之间信息传输的可访问性。在未来,我们将继续进一步探索相关结构的网络信息安全保护功能,提出更科学、有效的措施,加强我国网络信息安全,促进我国网络信息产业的发展。

作者:张帅亮 张向磊 马鹏博 单位:河南科技学院

参考文献:

[1]基于ARP数据包调度系统连接状态检测[J].电力系统自动化,2006.

[2]基于技术PVLAN针对ARP欺骗技术研究[J].计算机知识和技术(学术),2007.

[3]校园网的ARP欺骗攻击和保护[J].福建计算机学报,2007.

篇3

【关键词】 嵌入式 TCP/IP协议 以太网

一、引言

嵌入式网络通信在各个方面都得到了非常广泛的运用。目前最常见的就是总线和USB数据传输方式,传输速度即使可以达到较快的水平,但是其并不能够满足长距离的数据传输。因此,以太网能够弥补其在数据传输方面的缺陷。以太网能够实现一百米距离点对点的数据传输,如果要实现更加远距离的数据传输,则需要使用路由器或者交换机来完成。此文基于对CP2200嵌入式TCP/IP协议进行探究,并实现以太网嵌入式系统设计。

二、嵌入式TCP/IP协议的探究与实现

TCP/IP协议栈从上到下分别是由应用层、运输层、网络层和网络接口层所组成的四层结构,每一层各司其职,都有着不同的网络协议。依据软件实际使用的情况,在嵌入式系统当中为了达到网络通信的目的,需要对TCP/IP协议族进行裁剪。在对软件进行初始化的时候,也对单片机同时进行了初始化,其中包括对系统时钟、定时器、端口和串口进行了初始化。当然还有CP2200进行初始化,其中包括对MAC层和物理层进行初始化,并且中断使能。

在TCP/IP协议栈当中,运用层包含HTTP协议,运输层包含TCP协议和UDP协议,网络层包含ARP协议、IP协议和ICMP协议。以下是嵌入式TCP/IP协议的每个模块的实现流程:

1、HTTP协议模块。HTTP协议的发送函数http_send()即是TCP协议的发送函数和数据信息的结合,但是http_ send()函数主要是实现设计网页内容,JPEG的图片和HTML(超文本标记语言)等信息的使用依靠其函数实现。

2、TCP协议模块。TCP协议的发送函数tcp_send()是需要发送一个不包含任何数据的TCP报文,其作用是能够对字节头和校验和进行处理。通过对时间功能的设定,TCP协议的重传函数tcp_retransmit()能够实现对数据最多为两次重传的传输功能,实现传输功能的应用程序是依靠传送页数据而实现的,即是HTTP服务程序。TCP协议的保活函数tcp_ inacivity()是没半秒运行一次,当连接正在建立的状态下,保活期满了的时候并且没能被再次使用,就会中断连接。TCP协议的接收函数tcp_rcve()实现对字节头和校验和的运算,进而对HTTP服务程序和其连接状态等情况进行断定,最后进行TCP有限的状态机判断数据包的程序。

3、UDP协议模块。UDP协议的发送函数udp_send()能够实现对字节头和校验和进行处理,其接收函数udp_rcve()是对所接收的UDP报文进行处理,如果没有受到UDP报文数据,就需要发送ICMP终点不可到达报文。

4、ARP协议模块。ARP协议的发送函数arp_send(),在发送请求报文的时候,对于不清楚目的物理地址的,则是广播报文;在发送应答报文的时候,接收的一方的目的物理地址需要添加物理地址。ARP协议的重传函数arp_retransmit()能够实现当其发出ARP请求之后的半秒时间内没有任何响应,则进行再一次发送的功能,但是当两次发送没有得到响应就会对报文进行删除。ARP协议的缓存更新函数age_ arp_cache()能够每一分钟更新一次。ARP的解析函数arp_ resolve()能够对所发送的IP报文目的IP地址进行解析,如果发送IP地址和目的IP地址都不在相同的一个网络当中,那么此IP地址是网关IP地址,然后在缓存表当中对其进行查找,如果找不到就需要发送ARP请求报文。ARP协议的接收函数arp_rcve()能够实现对报文进行接收或者应答,对缓存表需要进行更新和重新定时,如果所接受的报文是应答报文,则需要发送等候地址解析的IP报文,但是所接收到的报文是请求报文 ,则需要发送ARP应答报文。

5、IP协议模块。IP协议的发送函数ip_send9()能够实现对发送IP报文的20字节头和校验和进行处理,进而使用网络接口层进行发送。IP协议接收函数ip_rcve()能够根据版本情况和所接收报文的种类转移到相应的接收函数来处理。

6、ICMP协议模块。ICMP协议模块的接收函数icmp_ rcve()是实现对ping请求的接收进行处理,并且处理ICMP不同种类的报文。其中Ping命令请求信息函数ping_send()是用来检测发送接收两方的接收情况。

三、结言

综上所述,此文对TCP/IP的网络结构中的各层协议模块进行探究,基于网络控制芯片CP2200的以太网接口和单片机C8051F340,并用编程语言来实现嵌入式以太网通信,同时进一步通过对各个层协议的裁剪,实现嵌入式以太网的数据通信。根据现阶段来看,嵌入式网络通信基本上都是依靠TCP/IP协议来实现的,嵌入式设备和网络两者相结合是嵌入式系统今后发展的主要方向。因此,我们要更加深入地对嵌入式TCP/IP协议进行探究以及更深层次的功能实现。

参 考 文 献

篇4

随着科学技术的不断进步,社会经济的不断发展,人们生活水平的逐渐提高,互联网已深入融入进人们的日常生活中,电子信息技术也是维持人们正常生活运作的重要技术支持,当下已进入一个网络信息化的大数据时代。互联网带给人们生活便利的同时也伴随着一定的信息泄露等安全风险,当下人们的隐私被侵犯的现象越来越多,为了捍卫人们基本权利,营造一个安全稳定的网络环境。本文就基于TCP/IP协议的几个网络安全问题进行探讨与分析。

【关键词】TCP/IP协议 网络安全 分析

1 TCP/IP协议概述

TCP/IP协议是指一个允许不同软硬件结构计算机进行通信的协议族,是能将各个不同结构计算机连接起来的主要技术平台,也是实现计算机资源共享的技术支持。其中我们常说的Internet互联网就是建立在协议之上的计算机信息技术,TCP/IP协议主要有包括四个层次,第一层是应用层,是实现使用者去访问、去具体使用的平台,比如说常用的后缀网址等,第二层是传输层,是将用户使用平台与计算机信息网内部数据结合的通道,实现数据的传输与共享,有TCP、FTP等,第三层就是网络层,是负责网络中的数据包传送,并提供链接导向以及相关的数据报服务等。最后一层是网络访问层,是网络的接口层,也称数据链路层,能处理不同通信媒介的相关信息细节问题,比如说常见的以太网、ARP等。在基于TCP/IP协议上互联网的信息传输范围变得更广泛,且传输的内容来源更多,对传输对象以及输送对象的信息安全要求降低,且多个端口使得数据信息被处理的步骤较多,不能对其保密性起到保障作用,TCP是使用一种介乎集中与动态分配之间的端口分配,端口也被分为保密与自由端口,这在一定程度上又大大增加了网络信息安全风险。下面就几个网络安全的主要问题进行分析。

2 基于TCP/IP协议的网络安全问题分析

2.1 在TCP/IP协议的应用层中

首先在TCP/IP协议的应用层中,可能会产生的网络安全问题有在PTP网络上接口中接收到原本不属于主机的数据,通常应用层设计都是在采用的是共享端口,由于具体的一个类型端口设计所要耗费的资金成本较高,因此在这种接收数据共享的平台上很容易收到并不属于平台应用的相关收据,由此引进一些木马病毒,导致里面的数据泄露,引发网络安全问题。针对此,我们可以在应用平台上设立专门的加密文件,对于特殊信息内容可以设置一定的口令才能允许接受与传输,以防对所有信息的全接受,降低恶意信息攻击的风险。另外,还能对网络进行分段处理,在应用平台上多设置几个消息查找的信息渠道,一层一层筛选掉不符合安全性能的信息,以及不具备可靠来源的信息,从而减少网络信息安全问题产生。

2.2 在TCP/IP协议中的传输层上

其次在TCP/IP协议中的传输层上也有存在网络安全问题的风险,比如说在ICMP传输通道上,ICMP是IP层的一个部分,是在软件与机器间传输与控制信息的无连接协议。在计算机IP软件中任何一个端口给ICMP发送一个PING文件,用以申请是否能够允许文件传输,ICMP都会做出一个相应的回答给源主机,此命令可以检测消息是否达到目的主机上。基本上传输层对所有申请传输的数据都会给予同意,原因主要PING软件编程不能智能识别出恶意信息,也都普遍存在于ICP/IP网络以及以太网中,一般防火墙和网络安全防护体系都自动默认PING的存在,而忽视了其可能会存在的安全风险性。

2.3 在ICP/IP协议中的网络层上

然后在ICP/IP协议中的网络层上也有产生网络安全问题的风险,主要表现是IP欺骗,由于ICP/IP协议的信任机制十分简单且方便,因此很多IP欺骗都利用了这一特点,用虚假信息来冒充重要数据信息。很多身份确认都只是通过机主的IP地址来进行,这里只要篡改一下IP地址就可攻击主机侵入数据管理中心内。针对此我们可在IP地址识别中多设立几道关卡,在十分确定IP正确性后方可给予通行,另外还要加强网络防火墙的防护功能,保障网络信息安全。

2.4 在TCP/IP协议上的网络层ARP欺骗

最后,在TCP/IP协议上的网络安全问题还有在网络层中的ARP欺骗。在IP数据包发送至主机过程中会有一个或多个子网的主机利用网关卡来作为第一个驿站,而ARP作为源主机的第一个查询工具,在查找不到IP地址对应的物理地址时就会向主机发送一个包含了主机与IP地址的相关物理地址信息,同时源主机还会向目的主机发送包含自身IP地址与ARP检测的回答。若在ARP识别环节中出错,那么可疑的信息申请会直接进入到目标主机中,像一类携带有病毒的恶意攻击若采用ARP欺骗则会造成网络信息安全泄露。针对此,在ARP识别环节中要加强其防护功能,多设立几道识别关卡,不能只依照IP名来作为识别的主要依据,还要参考IP的相关性质等。

3 总结

综上所述,在基于TCP/IP协议的几个网络安全问题分析与讨论中,我们了解到了分别在应用层、传输层、网络层、网络传输层等几个方面可能会存在的网络安全风险。造成风险的主要原因有因协议的信任机制设计较简单,在对信息来源的检验与审查做的不够到位,使得很多恶意信息内容钻了空子,造成很多软件欺骗。因此,在针对这些问题中我们需要在网络信息传输渠道以及信息识别单位还有信息数据存储等环节内加大安全防护,提高对欺诈信息的警惕性,设立多出防护环节,避免信息之间传输的无障碍性,今后,我们还将继续深入探究网络安全信息防护的相关结构功能,用以提出更加科学有效的解决措施,增强我国网络信息安全性以及推进我国网络信息行业发展做努力。

参考文献

[1]杨春,周明天.SOCKS协议在防火墙中的应用研究[J].电子科技大学学报,1999(02).

[2]董张卓,唐明,周鸿.基于ARP报文的调度主站系统链路状态探测[J].电力系统自动化;2006(15).

[3]宋志.基于PVLAN技术的防ARP欺骗技术探讨[J];电脑知识与技术(学术交流),2007(14).

[4]捂鳎文静华.校园网内ARP欺骗攻击及防范[J].福建电脑,2007(05).

[5]蓝玉龙.TCP/IP协议及其工作原理[J].广西民族学院学报(自然科学版),2000(02).

作者简介

李江晖(1984-),男,广东省廉江市人。硕士学历。现为75240部队助理工程师。

篇5

关键字 TCP/IP;教学平台;数据包截获;包过滤;协议分析

1 引言

TCP/IP协议族是计算机网络软件组成的核心部分,同时也是很抽象和难以掌握的部分。目前,对于TCP/IP协议族的研究,一般是基于协议应用本身的研究,也就是研究如何将指定的协议嵌入产品,使该产品能够支持上层产品应用该协议或自身产品对该协议的应用。作为高校计算机网络课程中所介绍的协议,对于很大一部分老师和同学来讲,都还只是停留在了解和使用这个协议上,并没有深入到协议本身的原理中去。

本系统通过对TCP/IP协议族的研究,将其中的部分常用协议(如TCP、IP、UDP等)的具体结构、工作方式和工作过程,用人机交互方式和图形化界面形象生动展现在学生面前。教学中通过对本套系统的利用,可以达到提高学习效率,改善学习效果,使学生对协议的学习不仅达到对使用方法的了解,同时达到对协议结构以及工作原理的领悟,使学生对网络课程的学习达到一个新的层次。

2 系统设计依据

2.1 设计思路及设计目的

本系统开发的目的是针对大学本科学生对《计算机网络》课程中关于网络传输以及协议原理部分的学习,使学生可以自己定制传输内容,并亲眼看到所有内容传输的过程形式等,增强对协议结构的记忆,并可以亲自动手控制协议的状态,达到对协议原理及工作方式的深入了解。

2.2 系统设计中所用到的原理

2.2.1 数据传输的原理

在基于TCP/IP的网络中,应用层的数据传输通常是基于TCP或者UDP协议的,而两种协议最大的区别在于是否面向连接。

在面向连接的TCP协议中,传输数据首先要求传输双方建立一条虚电路连接。通信双方通过自身的sockets(或称为通讯端点) 建立sockets的连接,从而达到传输的目的。

UDP是一种是无连接的用户数据报传输协议,与TCP操作不同,计算机间并不需要建立一个明确、可靠的链路,一个UDP应用可同时作为客户方或服务器方。UDP向应用程序提供了一种发送封装的原始IP数据包的方法。虽然UDP数据报只能提供不可靠的交付,但在许多方面UDP可以简化连接,这样可以避免建立和释放连接的麻烦。

2.2.2 网络包截获的原理

通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:

(1)帧的目标区域具有和本地网络接口相匹配的硬件地址。

(2)帧的目标区域具有"广播地址"。

在接受到上面两种情况的数据包时,网卡通过CPU产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。

本系统中对数据帧的截获就是利用将本地网卡模式设成混杂(promiscuous)状态的机制,混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。当网卡处于这种"混杂"方式时,使网卡对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。

2.2.3 协议状态跳转的原理

篇6

亚当·斯密进行的是具体的动机-行为分析,哈耶克则通过抽象的行为-规则分析,来研究自生自发秩序。哈耶克把人的“天赋”/“倾向”和“才能”,统统看作“个人知识”。亚当·斯密所分析的是人在自利心和自然倾向的驱动下,通过交易而产生的分工秩序,哈耶克分析的则是人类在每个人的个人知识基础上不断扩大的合作的扩展秩序。哈耶克的规则分析不再以顾客和面包师之间的交易行为为中心,而是转向交易规则的研究,这种研究必然是历史的和社会的。

哈耶克对自生自发秩序的研究建立在对三种行动和知识的关系的分析上:

1、个人行动与他人知识的关系:一个人无法替他人决策,因为他无法占有他人的全部个人知识,而这种个人知识是和他人特定的时空情景结合在一起的。

2、个人的行动与他自己的知识的关系:一个人无法甚至确切地知道他自己所拥有的知识。对自己的行为,他可能也是“知其然”(know what)而不“知其所以然”(know how)。

3、个人的行动和整个文明累积的知识的关系:一个人对他依照从事的那一套文明社会的普遍抽象规则并不能确切的知道和清晰地表述。这里的普遍抽象规则就是哈耶克意义上的法律,国会或政府的立法并不一定是这种普遍抽象规则的确切表述。这就是哈耶克所谓“法与立法”的二元观。

“法与立法”的二元观带来很多意涵。在哈耶克看来,普通法是一种典型的自生自发秩序。普通法法理学认为,规则并不是制定的,而是发现的。制定法只是法律渊源之一,而不是法本身,法官要通过法律解释和法律推理来发现适用于具体个案的规则。先例制度保证了,正确的解释和推理可以被挑选出来,错误的、不适当的解释和推理能够被剔除,因此普通法是一个不断进化的法律体系,就像民族语言一样。

互联网是最新的自生自发秩序的例子。这一点可以通过TCP/IP协议的“发现”过程来说明:

1、1969年9月,美国加州大学洛杉矶分校第一次把接口信号处理器(IMP)和主机连接起来。1969年12月扩展到4个节点。1969年4月,克洛克发表第一份RFC(征求意见稿),此后成为互联网上开放标准的主要形成方。每个人都可以通过RFC提出建议标准(proposal standard),试行6个月以上,至少开发两种实现,并不断测试,解决所有问题,然后可以变为草案标准(draftstandard),保持4个月,开发和测试更多的实现,才有可能成为互联网标准(Internetstandard)。1970年12月,克洛克领导网络工作小组制定出最初的主机-主机协议NCP.

2、1974年,文顿·瑟夫发表“分组网络互连的一个协议”,提出TCP协议。后来分成TCP和IP两个协议,合称TCP/IP.目前,TCP/IP已经发展成一个分层的协议簇,包含着上千个协议。现在的协议的标准化由互联网协会协调维护,由志愿者组成的IAB(Internet ArchitectureBoard)是ISOC的技术顾问组。这是一个非官方的完全公开的自愿组织,任何人都可以成为它的会员,参与其讨论,参加它的邮件列表没有任何限制。

3、1983年1月1日,NCP由于没有TCP/IP强大,停止使用。

4、80年代,TCP/IP遇到了官方的挑战。ISO(国际标准化组织)正式提出了一个官方的协议OSI.OSI虽然得到了美国、欧洲政府的支持,但过于学术化,而且没有得到实际应用的检验。在这场官方标准和事实上的工业标准之争中,开放自由的TCP/IP标准战胜了官方标准OSI.

上述事实可以给我们许多启示。TCP/IP是一种自由开放的标准,不断地被人们发现,不断地优胜劣汰-甚至淘汰官方制定的标准,并且不断地演化。在互联网这个自生自发秩序中,“标准只能被发现,不能被制定”。

中国互联网近些年来发展迅速。从官方到民间一直有呼声对互联网的发展进行规制。最近中国政府出台了一系列的行政法规和行政规章:9月25日,国务院《电信条例》和《互联网信息服务管理办法》;11月6日,信息产业部《互联网电子公告服务管理规定》;同日,信息产业部、国务院新闻办《互联网网站从事登载新闻业务管理暂行规定》。这些着眼于贯彻政府意志的行政法规和规章对中国的互联网发展带来沉重打击。

不过,中国的互联网法律有制定的部分,也有“发现”的部分,当前人们讨论的基本只是中国互联网制定的这一部分,往往忽视可能价值更高的“发现”的那一部分。近来中国有一系列关于互联网的法律纠纷。由于没有现成的法律,对这些案子的判决都需要法官去发现规则。比如,在易家诉国网案中,法官确定了“对将知名商标注册为域名构成域名抢注”。在陈卫华诉成都《电脑商情报》案中,法官提出了确定网络作品的作者的方法。在瑞得(集团)公司诉宜宾市翠屏区东方信息服务有限公司著作权侵权纠纷案中,法官界定了“网页是著作权意义上的作品”,以及互联网上著作权侵权的司法管辖原则(服务器所在地及终端计算机所在地均可视为复制行为的行为地,瑞得选择自己服务器所在地的北京市海淀区人民法院起诉原在四川的东方公司侵犯著作权并无不当)。在王蒙等六作家诉首都在线案中,法官确定了“网络传播是使用作品的一种方式,作品传播方式的不同,并不影响著作权人对其作品传播的控制权利。”在《大学生》杂志社诉263和李翔个人网页侵权案中,法官确定提供个人主页服务的网络服务提供商的责任。

篇7

关键词:共享神盾 共享神矛 网络尖兵 IPID

一、 检测原理简析

现在电信运营商的带宽越来越大,Internet技术的发展和高昂的接入价格,使得越来越多的用户采取合租方式通过路由上网。但是有线宽带由于没有无线宽带那种SIM防复制,防止破解等技术,因此控制路由器上网一直是他们研究的重点。

原来电信运营商常用SMTP检测技术来判定是否路由,但是随着时代的发展和设备的更新,现在运营商很难从设备层来控制用户,于是更新的检测技术,采用IPID判定法、TTL判定法、时间戳判定法、User-Agent判定法等方法来检测路由后面的用户数。

(1) IPID判定法:根据Windows协议栈的特性,一台计算机IPID值是连续的。通过分析IPID值的跳跃我们可以得出计算机的台数。Windows网络协议栈实现时,ID字段的值随着发送IP报文数的增加而增加,IPID的初始值是随机值,一般说来,不同主机的初始值有较大差距。由于Linux、Unix的IPID是随机值,故此判定方法对Linux、Unix无效。

(2) TTL判定法:TTL指生存时间,指定数据报被路由器丢弃之前允许通过的网段数量。TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。不同的操作系统其TTL不同:LINUX 为64,WIN2K/NT为 128,WINDOWS9X 系列 为32,UNIX 系列为255。如果检测到有多个TTL的值则可以断定有多台主机。

(3) 时间戳判定法:由于不同主机的物理时钟一般存在偏移,且网络协议栈时钟与物理时钟存在对应关系,同时不同主机发送报文的频率与时钟存在统计关系,因此可以分析发现不同的网络时钟偏移数目来确定主机的台数。

(4) User-Agent头判定法:HTTP头分为HTTP请求头和HTTP应答头。HTTP请求头为HTTP客户在浏览服务器上的主页时,向服务器发送请求的时候必须指明请求类型。请求类型是指HTTP-GET或HTTP-POST,每个HTTP-GET和HTTP-POST都由一系列HTTP请求头组成,这些请求头定义了客户端从服务器请求了什么,而响应则是由一系列HTTP应答头和应答数据组成,如果请求成功则返回应答。在HTTP头中有一个User-Agent头标明了浏览器类型。不同操作系统、不同IE版本、不同补丁的User-Agent字段不同。由此可以根据user-Agent头的不同来判定主机的数量。

二、 分析WindowsTCPIP协议栈数据处理过程

在众多检测原理中,IPID判定法判定准确,用得较多,其他再作为辅助判定方法。下面我们主要分析一下WindowsTCPIP协议栈数据处理过程。

图1数据包处理的 TCP/IP 体系结构

1.WinSock的数据包形成后,Tcpip.sys会将其传递给防火墙驱动程序 (Ipnat.sys) 进行处理。防火墙检查该数据包是否属于所要阻止的Internet控制消息协议 (ICMP) 消息类型。如果ICMP消息被阻止,防火墙就将丢弃该数据包。

处理完后,防火墙会将该数据包传回给Tcpip.sys,

2.Tcpip.sys 将数据包传递给筛选器驱动程序 (Ipfltdrv.sys) 进行处理。

Ipfltdrv.sys根据下一跃点接口,将该数据包与已配置的出站IP数据包筛选器格式进行对比。

若出站数据包筛选器不允许该数据包通过,Ipfltdrv.sys就会直接下,丢弃该数据包。若出站数据包筛选器允许该数据包,Ipfltdrv.sys就会将该数据包传回给Tcpip.sys。

3.Tcpip.sys 将该数据包传递给Ipsec.sys进行处理。

Ipsec.sys根据IPsec筛选器组,决定是否允许、阻止或保护该数据包。若允许的话,Ipsec.sys 会在不修改该数据包的情况下,将其发回给Tcpip.sys。若阻止的话,Ipsec.sys会直接丢弃该数据包。若要进行保护的话,Ipsec.sys会在将数据包传回给Tcpip.sys之前,对其添加适当的IPsec保护。

Tcpip.sys随后会通过下一跃点接口,将该数据包发送到下一跃点IP地址。完成数据包的出站。

三、 解决方案

(1)对于IPID检测的破解

因为各运营商破解时是采集其前置机上的数据包通过分析IPID来判定的其主机数目。由上面我们知道只需要我们出去的数据包在发出前我们修改其所有数据包的IPID头设定为一个统一的值或者随机值即可。因此我们只需在图1第2步黑色椭圆的位置添加驱动程序修改IPID头即可。

既然破解检测的核心在于修改Windows协议栈,我们选择修改开源驱动DrvFiltIp.sys来完成IPID头的修改,因为数据包通过ipfltdrv.sys以后,IP层的数据包结构都不会拦截或者修改,这个时候我们只要在他进入TCPIP.sys之前使用一个hook驱动,加载了DrvFiltIp.sys,将IPID改为固定值或者随机值,就可以解决所谓IPID检测问题。

修改FilterPackets过滤函数

(2)对于TTL的检测,我们有多种解决办法:

1、修改注册表办法,在windows下我们可以直接修改注册表让TTL同一为一个固定值。

在“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\ Parameters”,找到“DefaultTTL”,将该值修改为十进制的固定值,重新启动服务器系统后即可。

2、修改驱动的办法:在上面ipid改动代码中加入ipp->ipTTL=111(111为固定值)

篇8

1常用无线通讯技术简介

1.1 超宽带无线通讯技术

超宽带无线通讯技术是一种以超宽带信号为基础的新型的无线通讯技术。而所谓的超宽带信号是指那些功率点为-10dB的相对宽度大于25%或射频的绝对带宽大于1.5GHz的信号。这种信号拥有10m传输距离,高达1Gbps数据传输速率,3.1GHz~10.6GHz技术的工作频段范围,7.5GHz的工作带宽。该无线传输技术具有传输信号带宽较宽、数据传输速率高、隐蔽性好、功耗低、抗信号多径效果好等优势[1]。

1.2 蓝牙技术

蓝牙技术是一种短程无线通讯技术,这种技术常常应用在手机领域,常常用于对于便携或固定电子设备所使用的电缆或连线进行替代的短距离无线连接技术,它拥有10m~100m的通信距离和3Mbps的传输功率[2]。

1.3 Wi-Fi无线通讯技术

所谓Wi-Fi是一个由IEEE定义的一个无线网络通信的工业标准,而Wi-Fi无线通讯技术是在这个标准上发展起来的通讯技术,它具有传输速率高、可移动性好,可靠性高、组网价格较低,组网灵活等优势[3]。

1.4 红外技术

所谓红外传输技术是指那些通常采用850nm的红外光传输数据信息的技术,它的特点是要求传输设备之间拥有无障碍的直线信道,且最长通讯距离不超过10m。它具有安全可靠、产生成本低廉、无电磁干扰、保密性好、无须政府批准频带等优势,但其具有功率小、工作原理简单、成本低,传输方向性强、传输距离有限等缺点,进一步限制了其使用范围[4]。

1.5 射频技术

所谓无线射频技术是一种非接触式的自动识别技术。它通过向目标对象投射射频信号来自动识别和获取目标对象的相关数据,整个过程无需人工干预,它可以在任何恶劣环境条件下工作。整个射频系统由标签、阅读器和天线三个部分组成,结构简单、功能强大。

1.6 ZigBee技术

ZigBee技术是一种最新的技术,它具有低价格、低速率的无线网络方案。它的通信速率要求比较低,甚至低于蓝牙技术,ZigBee的通讯设备,常常可以在不希望更换电池并且不充电的情况下能正常工作几个月甚至几年。ZigBee技术可以支持mesh型网络拓扑结构,可以建设一个大规模的网络,传输距离可达10m~75m,甚至可以进行更大范围内的拓展。

由上文可知,各种无线通讯技术的特点各不相同,也因为其特点常常应用于不同的领域,对于石油勘探领域来说,在石油测井工作之中,应该ZigBee技术比较合适,它通信速率要求比较低、设备结构简单、可靠性高、传输距离远,这些都非常的符合石油测井工作现场的要求。

2石油测井无线通讯系统的设计

2.1 整体设计

(1)ZigBee技术。ZigBee技术是一种最新的技术,它具有通信速率要求比较低、设备结构简单、可靠性高、传输距离远等优势,非常的符合石油测井工作现场的要求。

(2)网络传输协议选择。一般来说,当前应用最为广泛的两种传输层协议分别是:UDP和TCP两种协议,UDP又可以称为用户数据报协议,它具有传输速度快,建立连接简单等优势,它的应用环境常常是:一次只传送少量数据、对可靠性要求不高。而TCP协议可以为用户提供面向连接的可靠的流传递服务,通讯可靠性非常高,常常可以使网络上的一台计算机发出的字节流无差错的顺利传给其他的计算机。

在石油测井工作现场,常常处理和传输的数据量比较大,网络工作环境也比较复杂,这非常符合TCP协议的工作要求,因此,本文的系统决定采用TCP传输协议。

(3)具体设计方案。在石油测井现场,下位机控制传感器对各种现场数据进行采集,然后应用现场计算机整理、打包、压缩这些数据,最后将这些数据进行无线传输,在传输前设置好无线通信队列,然后应用ZigBee技术传输给Internet,而数据包通过Internet网络输送到相关管理部门的中心站计算机之上,借助中心局域网使得多个传输终端都可以对测井现场状态进行同时显示,管理人员也可以通过传输终端了解现场的情况。

2.2 通信系统模块的划分

(1)用户接口。包括接收端和发送端接口,负责对相关指令进行接收和传达,如对解调器进行设置、断开和建立拨号连接、对测井数据进行传输、对资料文件进行传输等。

(2)测井数据传输接口。整个系统的发送端从下层驱动程序对测井数据进行读取,然后降相关数据交给下层协议;接收端从下层协议对于数据进行读取,接收端并将数据交给上层用于绘图显示和存盘。

(3)文件传输接口。这个接口主要用于交互测井资料文件,负责将文件型数据向下层协议传输或读取。

(4)通信协议。包括ZMODEM协议和滑动窗口协议。滑动窗口协议用于传输测井数据,这个协议常常自带差错校验机制;ZMODEM协议用于传输资料文件,这个协议自带CRC校验和流控。

(5)TCPIP套接字。网络的编程接口,作为程序的最底层,实现TCPIP协议和建立网络连接。

参考文献

[1] 刘建兵,蒋朝根.基于ZigBee技术的无线嵌入式温度采样仪设计[J].西南科技大学学报,2010,1(22):76~79.

[2] 周宇,景博,张劫.基于ZigBee无线传感器网络的嵌入式远程监测系统[J].仪表技术与传感器,2009(2):49~52.

篇9

关键词:网络管理;SNMP;现状;发展趋势

进入90年代以来,随着计算机的普及以及计算机技术和通讯技术的发展,网络也越来越快地走近我们,计算机网络已成为当今信息时代的支柱。计算机与通信的结合产生了计算机网络,信息社会对计算机网络的依赖,又使得计算机网络本身运行的可靠性变得至关重要,向网络的管理运行提出了更高的要求。网络系统的维护与管理日趋繁杂,网络管理人员用人工方法管理网络已无法可靠、迅速地保障网络的正常运行;无法满足当前开放式异种机互联网络环境的需要,人们迫切地需要用计算机来管理网络,提高网络管理水平,使信息安全,快捷地传递。于是计算机网络管理系统便应运而生了。

一、计算机网络管理系统的基本知识 

(一)计算机网络管理系统的概念

计算机网络管理系统就是管理网络的软件系统。计算机网络管理就是收集网络中各个组成部分的静态、动态地运行信息,并在这些信息的基础上进行分析和做出相应的处理,以保证网络安全、可靠、高效地运行,从而合理分配网络资源、动态配置网络负载,优化网络性能、减少网络维护费用。

(二)网络管理系统的基本构成

 概括地说,一个典型的网络管理系统包括四个要素:管理员、管理、管理信息数据库、服务设备。

 1.管理员。实施网络管理的实体,驻留在管理工作站上。它是整个网络系统的核心,完成复杂网络管理的各项功能。网络管理系统要求管理定期收集重要的设备信息,收集到的信息将用于确定单个网络设备、部分网络或整个网络运行的状态是否正常。

 2.管理。网络管理是驻留在网络设备(这里的设备可以是UNIX工作站、网络打印机,也可以是其它的网络设备)中的软件模块,它可以获得本地设备的运转状态、设备特性、系统配置等相关信息。网络管理所起的作用是:充当管理系统与管理软件驻留设备之间的中介,通过控制设备的管理信息数据库(MIB)中的信息来管理该设备。

3.管理信息库。它存储在被管理对象的存储器中,管理库是一个动态刷新的数据库,它包括网络设备的配置信息,数据通信的统计信息,安全性信息和设备特有信息。这些信息、被动态送往管理器,形成网络管理系统的数据来源。

4.设备和管理协议。设备在标准网络管理软件和不直接支持该标准协议的系统之间起桥梁作用。利用设备,不需要升级整个网络就可以实现从旧协议到新版本的过渡。对于网络管理系统来说,重要的是管理员和管理之间所使用的网络管理协议,如SNMP,和它们共同遵循的MIB库。网络管理协议用于在管理员与管理之间传递操作命令,并负责解释管理员的操作命令。通过管理协议的作用,可以使管理信息库中的数据与具体设备中的实际状态、工作参数保持一致。

(三)网络管理系统的功能

ISO在ISO/IEC 7498-4文档中定义了网络管理的五大功能,即配置管理、故障管理、性能管理、计费管理与安全管理。

故障管理:其主要功能是故障检测、发现、报告、诊断和处理。由于差错可以导致系统瘫痪或不可接受的网络性能下降,所以故障管理也是ISO网络管理元素中,被最广泛实现的一种管理。

配置管理:其主要功能包括网络的拓扑结构关系、监视和管理网络设备的配置情况,根据事先定义的条件重构网络等,其目标是监视网络和系统的配置信息,以便跟踪和管理对不同的软、硬件单元进行网络操作的结果。

性能管理:监测网络的各种性能数据,进行阈值检查,并自动地对当前性能数据、历史数据进行分析。其目标是衡量和显示网络各个方面的特性,使人们在一个可以接受的水平上维护网络的性能。

安全管理:主要是对网络资源访问权限的管理。包括用户认证、权限审批和网络访问控制(防火墙)等功能。其目标是按照本地的安全策略来控制对网络资源的访问,以保证网络不被侵害(有意识的或无意识的),并保证重要的信息不被未授权的用户访问。

计费管理:主要是根据网络资源使用情况进行计帐。其目标是衡量网络的利用率,以便使一个或一组用户可以按一定规则,利用网络资源,这样的规则可以使网络故障减到最小(因为网络资源可以根据其能力大小而合理地分配),也可以使所有用户对网络的访问更加公平。

这五个基本功能之间既相互独立,又存在着千丝万缕的联系。在这些网络管理功能中,故障管理是整个网络管理的核心;配置管理则是各管理功能的基础,其他各管理功能都需要使用配置管理的信息;性能管理、安全管理和计费管理相对来说具有较大的独立性,特别是计费管理,由于不同的应用单位的计费政策有着很大的差别,计费应用的开发环境也千差万别,因此,计费管理应用一般都是依据实际情况专门开发。

(四)网络管理协议

由于网络中广泛存在着多厂家、异构异质和固有的分布性等特点,人们才在网络管理中引入了标准,以规范网络设备的生产和网络管理系统的开发。这种标准就是网络管理协议。  目前最有影响的网络管理协议是SNMP(简单网络管理协议)和CMIS/CMIP(公共管理信息协议),它们也代表了目前两大网络管理解决方案。CMIP因为太复杂,标准化进度太缓慢,所以没有得到广泛接受;SNMP以其简单实用,因而得到各厂商支持,应用广泛。本文只对SNMP做一简单介绍。

篇10

关键词:套接口;网络编程API;流协议;OSI参考模型

中图分类号:TP393.03 文献标识码:A文章编号:1007-9599(2012)05-0000-02

套接口(Sockets)编程源于Berkeley Unix下的Sockets 界面,是一种网络编程API。Sockets API提供了一种途径让你的应用程序能够存取网络,种用网络提供的各种服务进行通信。利用Sockets API编程无疑是一种最原始的方式,也是最复杂的一种方式;但一旦理解了这些最基础、最根本的方式,对建立在这种基础之上的高级技术的理解就会容易得多。为了提高软件开发的生产力,提高软件质量及软件内在的一致性,大规模的程序设计都要使用成熟的框架,这里所指的框架,英文名称为Framework,即可重用的程序库。 微软的许多新的网络编程框架,目的就是为了减轻直接使用Sockets API进行编程的痛苦,提高生产力,但这些框架都建立在Sockets API之上,最终将使用Sockets API来与网络交互;.NET Remoting及WCF就是近段时间先后推出的两种高效的网络编程框架。

套接口分为三类,分别是Stream sockets、Dgram sockets及Raw sockets(WinSock 2.0提供)。Stream sockets使用TCP提供的服务进行通信,Dgram sockets使用UDP提供的服务进行通信, Raw sockets绕过传输层直接使用IP进行通信。

Windows Sockets简称为WinSock,最初出现的版本为1.1,现在为WinSock 2.0。微软在的.Net框架中,对WinSock 2.0进行了包装,提供了Socket类。为了进一步减化编程,又对Socket类进行包装,抽象出三个高层类:TcpClient、TcpListener、 UdpClient。这就形成了三个层次的API:WinSock 2.0、Socket及(TcpClient、TcpListener、 UdpClient),层次越低,提供编程的控制及选择越多,但相应的过程就越复杂。

本文将使用TcpClient,、TcpListener类构造一对C/S结构的客户及服务程序。有关类的使用细节可以参考MSDN Library for Visual Studio 2010或.NET Framework SDK 4.0文档。本文实现的客户程序发送一条消息到服务程序,服务程序返回一条消息给客户端程序,服务程序断开连接;客户程序在while(true)结构中进行下一轮循环,重复这个过程,双方一来一往,就可以进行简单的聊天了。这种在应用程序中实现的与网络进行交互的逻辑实际上就是OSI参考模型的第七层和第六层:应用层协议和表示层协议。

应用程序与网络交互时主要考虑以下内容:信息如何编码和转换、身份认证、信息交换逻辑、网络资源的可用性、事务的支持、应用层协议本身的安全性等等。应用层逻辑实现的功能越多,需要考虑的细节也就越多;互联网上使用的许多软件(FTP等)及高层协议,都有专门的RFC文档对其进行描述。

TCP是一种流协议,传输的是字节流。而面向对象的编程语言,使用的是各种类及对象,这就需要对其进行编码和转换。 .Net提供的Object Serialization就能对类的实例进行Serialization,通过流类(System.IO.Stream derived type)传输到网络上的其他应用程序,再恢复实例的状态。由于传输的是字节串,接收方接收的也是字节串,多个消息是连续传输的,单个消息的边界就只能通过应用层协议来界定,消息边界的界定通常有两种方式:使用定界符或在信息的头部附加信息的长度值。UDP虽然提供了很好的信息定界(可以每包只传递一个消息),但UDP本身没有提供可靠性,只得依靠应用协议层来提供可靠性。本文的信息定界采用两种方式:客户程序发送信息前,在信息头部附加一个字节的长度信息,由于只是一个字节,信息长度应控制在256个字节之内,相应操作系统的字符采用Unicode编码时,信息不应超过128个字符;服务程序通过主动关闭连接,客户程序就能依此来定界。

C/S结构的客户及服务程序,服务程序在TCP的某个端口上进行监听,客户程序主动发起连接,TCP在经过三次握手后进入Established状态,这之后就可以互相交换消息了。TCP的状态在命令提示符下可以通过netstat an查看。

关于域名解析,值得注意的是Viata系统已经实现了IPv6,在解析地址时可能会出现IPv6地址,这就需要编程过滤掉IPv6的地址,以下是获取IPv4地址的代码段:

IPHostEntry IpAddress = Dns.GetHostEntry(DName);

IPAddress Ipv4Address = null;

foreach(IPAddress TempAddress in IpAddress.AddressList){

if (TempAddress.AddressFamily == AddressFamily.InterNetwork)

{ Ipv4Address = TempAddress; break;}}

本文提供了两个示例程序,可以在Visual Studio 2010下编译,在.Net 4.0下运行。新建项目时,选择Visual C#下的Console Application模板。假定服务程序在TCP的9999口上进行监听。为了节省空间,源程序已经上传到 ishare.iask.省略/,使用关键字“C#语言使用TCPIP 套接口精析Code”即可搜索并下载。 以下的解释需要对照从给定地址下载的代码。

对服务端程序的解释:16-17行,服务程序在TCP 9999端口上进行监听。34行,服务程序主线程调用AcceptTcpClient()后阻塞,当有客户程序连接后返回。35行,显示与客户程序的TCP连接已经建立。36行,client.GetStream()返回一个NetworkStream类实例,用于读出或写入字节流。37-39行,先读一个字节获取信息长度。45行,将收到的字节流转换为字符串,便于显示。46行,client.Client.RemoteEndPoint用于显示客户端的端点信息。54及随后的两行,返回消息给客户程序后主动关闭连接,客户程序遇到服务端的强制关闭现有连接时,可能从读字节流的阻塞中返回或企图读取时引发Exception。