欢迎来到天天文库
浏览记录
ID:27249874
大小:552.01 KB
页数:35页
时间:2018-11-30
《《套接字编程》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、TCP/IP—协议分析与应用编程第七章套接字编程主要内容客户机/服务器模型套接字概念套接字编程基础WinSock函数基于TCP的应用编程基于UDP的应用编程学习目标理解客户机/服务器模型的工作机理。掌握套接字的概念。掌握基于套接字的面向连接和无连接客户机/服务器程序的设计原理,了解相关的WinSockAPI函数。通过程序实例,了解基于TCP和UDP的程序设计方法。客户机/服务器模型客户机/服务器模型的工作流程客户机/服务器模型服务器程序特点一般启动后就一直处于运行状态,以等待客户机进程的请求;使用的端口往往是熟知端口,便于客户机
2、进程连接请求;一般拥有较多的系统资源,以便及时响应各个客户机进程的请求;可以并行处理多个客户机进程的请求,但数目是有一定的限制;在通信时一般处于被动的一方,不需要知道客户机的IP地址和端口信息。客户机/服务器模型客户机程序特点在需要服务器进程的服务时将向服务器进程请求服务,并建立通信连接,得到满足并完成处理后就终止通信连接;使用向系统申请的临时端口与服务器进程进行通信,通信完成后将释放该端口;拥有相对较少的系统资源;在通信时属于主动的一方,需要事先知道服务器的IP地址和端口信息。套接字概念在网络中要全局地标识一个参与通信的进程,
3、需要采用三元组:协议、主机IP地址、端口号。要描述两个应用进程之间的端到端的通信关联则需要一个五元组:协议、信源机IP地址、信源应用进程端口、信宿机IP地址、信宿应用进程端口。套接字可以理解为通信连接的一端,其主要包括协议、主机IP地址和端口号。将两个套接字连接到一起便可以在不同应用进程之间传递数据套接字实现了对网络和传输层协议的封装,为应用进程之间的通信连接的建立、数据传输等通信过程提供了编程界面。套接字概念使用套接字通信示意图基于套接字的通信过程可以描述为:创建/打开套接字、向套接字收发数据、关闭套接字。套接字概念针对不同的
4、通信需求,在TCP/IP中提供了3种不同套接字类型流套接字(SOCK_STREAM):用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议——TCP。这类套接字中,传输数据之前必须在两个应用进程之间建立一条通信连接,这就确保了参与通信的两个应用进程都是活动并且响应的。当连接建立之后,应用进程只要通过套接字向TCP层发送数据流,而另一个应用进程便可以接收到相应的数据流,它们不需要知道传输层是如何对数据流进行处理。特别需要注
5、意的是通信连接必须显式建立。该套接字类型适合传输大量的数据,但不支持广播和多播方式。套接字概念针对不同的通信需求,在TCP/IP中提供了3种不同套接字类型(续)数据报套接字(SOCK_DGRAM):提供了一种无连接的服务,通信双方不需要建立任何显式连接,数据可以发送到指定的套接字,并且可以从指定的套接字接收数据。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP进行数据的传输。由于数据包套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在
6、程序中做相应的处理。与数据报套接字相比,使用流式套接字是一个更为可靠的方法,但对于某些应用,建立一个显式连接所导致的系统开销是令人难以接收的,并且数据报套接字支持广播和多播方式。套接字概念针对不同的通信需求,在TCP/IP中提供了3种不同套接字类型(续)原始套接字(SOCK_RAW):与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP的数据,数据报套接字只能读取UDP的数据。使用原始套接字的主要目的是为了避开TCP/IP处理机制,被传送
7、的数据包可以被直接传送给需要它的应用程序。因此,其主要是在编写自定义底层协议的应用程序时使用,例如各种不同的TCP/IP实用程序(如ping和arp)都使用原始套接字实现,也可以用来实现数据包捕捉分析等。套接字编程基础从应用编程角度来看,套接字就是TCP/IP网络编程接口的集合,它是应用程序与TCP/IP协议族通信的中间软件抽象层,其中包含了许多函数或例程,程序员可以用它们来开发网络应用程序套接字编程基础面向连接的客户机/服务器程序工作模型套接字编程基础面向连接的客户机/服务器程序工作模型服务器进程的五元组建立由socket函数
8、确定所使用的协议。由bind函数实现与本地IP和端口号的绑定,即确定本地IP和端口号。由accept函数实现与远程IP地址和端口号的关联,即确定远程IP和端口号。客户机进程五元组建立由socket函数确定所使用的协议。由bind函数实现与本地IP和端口号的绑定,
此文档下载收益归作者所有