欢迎来到天天文库
浏览记录
ID:57731593
大小:276.16 KB
页数:4页
时间:2020-03-25
《Linux环境下基于UDP的socket编程浅析.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、应用安全Linux环境下基于UDP的socket编程浅析吴佩贤绍兴文理学院计算机系 浙江 312000摘要:socket适用于网络环境中的进程间通信,它已成为当前许多操作系统的网络API,也是网络操作系统中必不可少的基础功能。尽管UDP无法像TCP一样提供可靠的数据传输,但UDP并不比TCP缺乏优越性。随着Linux操作系统和Internet的不断发展,Linux网络环境下尤其是基于UDP的socket通信技术仍广为注目。文章介绍了Linux平台下的socket及其编程原理,并通过一个Java编写的基于UDP的客户/服务器程序,描述了网络中不同主机上的两个进程之间的soc
2、ket通信机制。关键词:socket;UDP;TCP;客户/服务器;进程;Java0 引言Linux将套接字地址族抽象为统一的BSD套接字接口,该接口是应用程序的开发接口,由各地址族专有的软件支Linux是一个诞生于Internet和WWW的产品,它具有持。LinuxBSDsocket支持以下常见套接字类型:稳定、简易、高效、兼容性好等特点,并且支持多种网(1)SOCK_STREAM(数据流套接口):提供一个络协议,如Ipv4、Ipv6、X.25、IPX、NETBIOS、DDP面向连接的双工顺序数据流传输和可靠的数据传输服务。这等。套接字(socket)是介于网种套接字可
3、以保证数据传输的可靠性,不会出现数据丢失、络应用层和传输层之间的编程接破损或重复出现等差错,而且通过流量控制避免发送的数据口,套接字接口提供了访问下层流超限。Internet地址中的TCP协议支持流套接字。通信协议的大量系统调用和相应(2)SOCK_DGRAM(数据报套接口):提供一个的数据结构,进程在Linux上的无连接和不可靠的双工数据传输服务。数据包以独立包形式网络通信过程就是使用套接字传被发送和接收。不对数据的传输提供无错保证,即数据可输数据的过程。套接字在UDP/IP能被丢失、破坏,也可能被重复接收。Internet地址中的网络模型中的地位如图1所示。图1 套接
4、字UDP协议支持这种套接字。1BSD套接字接口(3)SOCK_RAW(原始套接口):这种类型的套socket最早应用于伯克莱大学BSDUNIX中,所以习惯接字允许对低层协议如IP或ICMP直接访问,可以直接填上又称其为BSDsocket。一个套接字描述为一个通信连接的充IP、TCP、UDP或者ICMP的包头,发送用户自己定一端,在一个通信连接中的两端通信程序应各自有一个套接义的IP包或者ICMP包,主要用于协议的开发。字来描述它们自己那一端,不同主机中的两个进程通过各自2 用户数据报协议UDP及无连接服务的套接字发送和接收消息,从而实现进程间跨网络的通信。Internet
5、给分布式应用程序提供两类服务:一是面向连Linux环境中套接字支持多种网络协议,不同类型网络接的服务,二是无连接服务。面向连接的服务由TCP提协议具有不同的工作方式,所使用的地址格式也完全不同。供,客户和服务器在彼此间发送数据之前要先建立三次握对于各种网络协议而言,使用相同地址格式的几个协议称为手,以确保发送端的数据最终按顺序完整无误地传送给接收一个协议地址簇,表1列出了BSD套接字的常见地址族。端。无连接服务则由UDP提供,发送端和接收端在传送数表1BSD套接字地址族的主要类型据之前不需要进行握手,因而不会带入任何延迟。在无连接模式下,客户程序没有把套接字固定连接到一个
6、指定的远程端点上,而是在每次发送数据报时指定远程目的地。因而UDP具有相当的灵活性:客户程序可以在它要求发送时才决定和哪个服务器交互。从图1可以看出,UDP作者简介:吴佩贤(1974-),男,讲师,主要从事实时操作系统研究。2006.163应用安全通过套接字直接从应用程序进程得到消息,附上源和目标端格式声明为:口号,并把得到的数据段传递给网络层。网络层将数据封intbind(intsockfd,structsockaddr*my_addr,int装到IP数据包里,并使用尽力服务方式将数据包传递给接addrlen)。sockfd为套接口描述字;指针my_addr指向收端。如
7、果该数据包到达接收端,UDP通过端口号和IP目sockaddr结构,该结构包含了远程服务程序的IP地址与端标地址将数据包中的内容传正确地送给接收端的套接字。口号;addrlen指明sockaddr结构的长度。UDP在传递数据时并不保持发送端和接收端间的连接状态,3.3sendto函数即不对接收和发送缓冲区、拥塞控制、数据到达顺序等参sendto()用于将应用缓冲区中的数据发送到指定的接收进数进行跟踪,因而UDP传送的数据包可能出错甚至丢失,程的地址空间,其格式声明为:其可靠性无法得到保障。尽管如此,UDP在DNS解析、IPin
此文档下载收益归作者所有