协议族、socket类型和协议常用的组合如表2所示: 表2 系统调用三参数组合关系 协议族(af) Socket类型(type) 协议(UNIX表示) 实际协议 AF_INET Sock_DGRAM IPPROC_UDP UDP Sock STREAM IPPROC_TCP TCP Sock RAM IPPROC_ICMP ICMP Sock RAM IPPROC_RAM 某低级协议
指定本地地址使用函数bind()一一绑定 socket()系统调用创建socket时,只指定了相关五元组的协议元,没有指定其余四元(本地地址、本地端口、远地地址、远地端口),因此需要别的系统调用加以补充。 bind()将本地socket地址(包括本地主机地址和本地端口)与所创建的socket号联系起来,即将本地socket地址赋予socket,以指定本地半相关。其用于Linux性能评估的测试工具的设计与实现调用格式为: bind(sockid, localaddr, addrlen) 总的来说,各种socket地址数据结构包括两大部分:地址类型和协议地址。网络协议地址又包括主机地址和端口号。 监听— listen() 对于服务器来说,在它接受客户机的连接之前,首先要监听。只有进入了监听模式,才能接受来自客户机的连接。这一点可以通过listen()函数来实现,它的原型如下: int listen(SOCKET s, int backlog); 各参数意义如下: s:进行监听的套接字。 Backlog:正在等待连接的最大队列的长度。如果backlog的只为3,有4个客户机同时发出连接请求,则前3个会放在等待连接队列中,最后一个将被忽略。 如果函数成功,则返回0;否则返回SOCKET_ERROR。 当客户机和服务器的连接建立起来后,用函数send()和recv()来进行数据传输。 4基于原始套接字的设计与实现 4.1原始套接字简介 原始套接字是网络的基本构件。套接字是从 Berkeley Sockets 扩展而来的,其在继承 Berkeley Sockets 的基础上,又进行了新的扩充。这些扩充主要是提供了一些异步函数,并增加了符合WINDOWS消息驱动特性的网络事件异步选择机制。套接字由两部分组成:开发组件和运行组件。开发组件是指套接字实现文档、应用程序接口(API)引入库和一些头文件。运行组件是指套接字应用程序接口的动态链接库(WINSOCK.DLL)。它是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连听进程。套接字存在通信区域(通信区域又称地址簇)中。套接字只与同一区域套接字只支持一个中的套接字交换数据(跨区域时,需要执行某和转换进程才能实现)。WINDOWS 中的域——网际域。套接字具有类型,WINDOWS SOCKET 2.1 版本支持两种套接字:流套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。本文使用的WINDOWS SOCKET 2.1 版本。 4.2数据包截获技术需求分析 数据包截获技术是开发网络管理工具软件的重要基础之一,因为许多故障及入侵判断都是建立在网络流量或数据的分析基础上的。具体来说,数据包截获可以应用在检测网络流量,分析网络故障;网络协议工作原理及过程分析;非法数据截获与入侵检测;网络设备开发。 程序可以设置针对IP地址和协议类别包过滤器,专门截获某一协议(如TCP,UDP,ICMP)或某一主机的数据包。对数据进一步分析可以了解该类协议的各种过程及协议内容,这在计算机网络课程的教学对网络知识的掌握。另外,也可以对数据包的内容进行分析与理解,获得所需的信息。 入侵检测是网络安全领域一个重要的研究方向,如请检测系统由探测器、分析器、用户接口等三个部分组成,其中探测器负责采集数据(如网络数据报、日志文件和系统调用记录等);分析器则主要是设定一系列规则,对探测器送来的数据进行分析,用户接口负责与用户交互。显然,数据包截获是入侵检测系统信息的重要来源之一。 4.3数据包截获程序设计流程图 利用套接字开发数据包截获程序时的一般步骤如图7所示 如图7所示,在利用套接字开发数据包截获程序时的一般步骤是:首先,创建原始套接字,其次将原始套接字绑定到本地网卡地址上;设置网卡为混杂模式,这样网卡就
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/9/9