网络程序设计第2章.ppt
- 文档编号:2123171
- 上传时间:2022-10-27
- 格式:PPT
- 页数:105
- 大小:2.35MB
网络程序设计第2章.ppt
《网络程序设计第2章.ppt》由会员分享,可在线阅读,更多相关《网络程序设计第2章.ppt(105页珍藏版)》请在冰豆网上搜索。
nUNIX套接字网络编程接口的产生与发展过程套接字网络编程接口的产生与发展过程n套接字与套接字与UNIX操作系统的关系操作系统的关系n套接字编程的基本概念套接字编程的基本概念n面向连接的套接字编程面向连接的套接字编程n无连接的套接字编程无连接的套接字编程n原始套接字原始套接字nLinux系统的网络编程接口系统的网络编程接口本章提要本章提要第2章UNIX中的套接字网络编程接口2.1.1问题的提出问题的提出站在应用程序实现的角度,应用程序如站在应用程序实现的角度,应用程序如何方便地使用协议栈软件进行通信呢?
何方便地使用协议栈软件进行通信呢?
如果能在应用程序与协议栈软件之间提如果能在应用程序与协议栈软件之间提供一个软件接口,就可以方便客户与服务器供一个软件接口,就可以方便客户与服务器软件的编程。
软件的编程。
2.1UNIX套接字网络编程接口的产生与发展套接字应用程序编程接口是网络应用程序套接字应用程序编程接口是网络应用程序通过网络协议栈进行通信时所使用的接口,即通过网络协议栈进行通信时所使用的接口,即应用程序与协议栈软件之间的接口,简称应用程序与协议栈软件之间的接口,简称套接套接字编程接口字编程接口(SocketAPI)。
它定义了应用程序与协议栈软件进行交互它定义了应用程序与协议栈软件进行交互时可以使用的一组操作,决定了应用程序使用时可以使用的一组操作,决定了应用程序使用协议栈的方式、应用程序所能实现的功能、以协议栈的方式、应用程序所能实现的功能、以及开发具有这些功能的程序的难度。
及开发具有这些功能的程序的难度。
2.1UNIX套接字网络编程接口的产生与发展加州大学伯克利加州大学伯克利(Berkley)分校开发并推广了一分校开发并推广了一个个包括包括TCP/IP互联协议的互联协议的UNIX,称为称为BSDUNIX(BerkeleySoftwareDistributionUNIX)操作系统,操作系统,套接字编程接口套接字编程接口是是这个操作系统这个操作系统的的一个部分一个部分。
后来的许多操作系统并没有另外搞一套其它的编后来的许多操作系统并没有另外搞一套其它的编程接口,而是选择了对于套接字编程接口的支持。
程接口,而是选择了对于套接字编程接口的支持。
由由于于这这个个套套接接字字规规范范最最早早是是由由Berkeley大大学学开开发的,一般将它称为发的,一般将它称为BerkeleySockets规范。
规范。
2.1.2套接字编程接口的起源与应用套接字编程接口的起源与应用要要想想实实现现套套接接字字编编程程接接口口,可可以以采采用用两两种实现方式种实现方式:
一种是在操作系统的内核中增加相应的一种是在操作系统的内核中增加相应的软件,网络程序中用软件,网络程序中用系统调用系统调用的方法来实现的方法来实现(Unix/Linux)一种是通过开发操作系统之外的函数库,一种是通过开发操作系统之外的函数库,网络程序中采用网络程序中采用调用库函数调用库函数的方法来实现的方法来实现(Windows)2.1.3套接字编程接口的两种实现方式套接字编程接口的两种实现方式UNIX操操作作系系统统对对文文件件和和所所有有其其它它的的输输入入/输输出出设设备备采采用用一一种种统统一一的的的的操操作作模模式式,就就是是“打打开开-读读-写写-关关闭闭”(open-read-write-close)的)的I/O模式。
模式。
当当TCP/IP协议被集成到协议被集成到UNIX内核中的时内核中的时候,相当于在候,相当于在UNIX系统中引入了一种新型的系统中引入了一种新型的I/O操作,就是应用程序通过网络协议栈来交操作,就是应用程序通过网络协议栈来交换数据。
换数据。
2.1.4套接字通信与套接字通信与UNIX操作系统的输入操作系统的输入/输出输出在在UNIX系系统统的的实实现现中中,套套接接字字是是完完全全与与其其他他I/O集集成成在在一一起起的的。
操操作作系系统统和和应应用用程程序序都都将将套套接接字字编编程程接接口口也也看看作作一一种种输输入入/输输出机制出机制。
但但是是,用用户户进进程程与与网网络络协协议议的的交交互互作作用用实实际际要要比比用用户户进进程程与与传传统统的的I/O设设备备相相互互作作用要用要复杂得多复杂得多。
2.1.4套接字通信与套接字通信与UNIX操作系统的输入操作系统的输入/输出输出其其次次,使使用用套套接接字字的的应应用用程程序序必必须须说说明明许许多多细细节节。
仅仅仅仅提提供供open、read、write、close四四个个过过程程远远远远不不够够。
为为避避免免单单个个套套接接字字函函数数参参数数过过多多,套套接接字字编编程程接接口口的的设设计计者者定义了多个函数。
定义了多个函数。
2.1.4套接字通信与套接字通信与UNIX操作系统的输入操作系统的输入/输出输出2.2套接字编程的基本概念套接字编程的基本概念套接口套接口是对网络中不同主机上应用进程之间进行双向通信是对网络中不同主机上应用进程之间进行双向通信的的端点的抽象端点的抽象,一个套接口就是网络上进程通信的一端,提供,一个套接口就是网络上进程通信的一端,提供了应用层进程利用网络协议栈交换数据的机制了应用层进程利用网络协议栈交换数据的机制。
图图2.1电插座与电话插座的作用电插座与电话插座的作用2.2.1什么是套接字(什么是套接字(SOCKET)2.2.1什么是套接字什么是套接字(SOCKET)?
我们应当从多个层面来理解套接字这个概我们应当从多个层面来理解套接字这个概念的内涵。
念的内涵。
从套接字所处的地位来讲,套接字上联应从套接字所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网用进程,下联网络协议栈,是应用程序通过网络协议栈进行络协议栈进行通信的接口通信的接口,是应用程序与网络,是应用程序与网络协议栈进行协议栈进行交互的接口交互的接口。
图图2.2应用进程、套接口、网络协议栈及操作系统的关系应用进程、套接口、网络协议栈及操作系统的关系进程、套接口、协议栈、操作系统的关系从从实实现现的的角角度度来来讲讲,非非常常复复杂杂。
套套接接字字是是一一个个复复杂杂的的软软件件机机构构,包包含含了了一一定定的的数数据据结结构构,包包含含许许多选项,由操作系统内核管理。
多选项,由操作系统内核管理。
从从使使用用的的角角度度来来讲讲,非非常常简简单单。
对对于于套套接接字字的的操作形成了一种网络应用程序的编程接口(操作形成了一种网络应用程序的编程接口(API)。
)。
本本书书把把这这一一套套操操作作套套接接字字的的编编程程接接口口函函数数称称作作套接字编程接口套接字编程接口,套接字是它的操作对象。
,套接字是它的操作对象。
总之,套接字是网络通信的基石。
总之,套接字是网络通信的基石。
套接字编程接口套接字编程接口2.2.2套接字的特点套接字的特点11通信域通信域套套接接字字存存在在于于通通信信域域中中,通通信信域域是是为为了了处处理理一一般般的的进进程程通通过过套套接接字字通通信信而而引引入入的的一一种种抽抽象象概概念念,套接字套接字通常通常只和只和同一域同一域中的中的套接字套接字交换数据交换数据。
如如果果数数据据交交换换要要穿穿越越域域的的边边界界,就就一一定定要要执执行行某种某种解释解释程序。
程序。
本本课课程程中中,仅仅仅仅针针对对Internet域域,并并且且使使用用Internet协议族协议族(即即TCP/IP协议族协议族)来通信。
来通信。
2套接字具有三种类型套接字具有三种类型每每一一个个正正被被使使用用的的套套接接字字都都有有它它确确定定的的类类型型,只有只有相同类型相同类型的套接字的套接字才能相互通信才能相互通信。
(1)数据报套接字数据报套接字(DatagramSOCKET)数数据据报报套套接接字字提提供供无无连连接接的的、不不保保证证可可靠靠的的独独立立的的数数据据报报传传输输服服务务。
在在Internet通通信信域域中中,数数据据报报套套接接字字使使用用UDP数数据据报报协协议议形形成成的的进进程程间间通通路路,具具有有UDP协协议议为为上上层层所所提提供供的的服服务务的的所所有有特特点。
点。
数据报套接字基于数据报套接字基于UDP协议协议图图2.3在在Internet通信域中,数据报套接字基于通信域中,数据报套接字基于UDP协议协议
(2)流套接字流套接字(StreamSOCKET)流套接字流套接字提供提供双向的、有序的、无重复的、无记双向的、有序的、无重复的、无记录边界的、可靠的数据流传输服务录边界的、可靠的数据流传输服务。
在。
在Internet通通信域中,流套接字使用信域中,流套接字使用TCP协议形成的进程间通路,协议形成的进程间通路,具有具有TCP协议为上层所提供的服务的所有特点,在使协议为上层所提供的服务的所有特点,在使用流套接字用流套接字传输数据之前传输数据之前,必须必须在数据的发送端和接在数据的发送端和接收端之间收端之间先建立连接先建立连接,如下页图,如下页图2.4所示。
所示。
流式套接字基于流式套接字基于TCP协议协议图图2.4在在Internet通信域中,流式套接字基于通信域中,流式套接字基于TCP协议协议(3)原始套接字)原始套接字(RAWSOCKET)原始套接字原始套接字允许对较低层次的协议,如允许对较低层次的协议,如IP、ICMP直接访问,或用于检验新的协议的实现。
直接访问,或用于检验新的协议的实现。
TCPUDPIP/ICMPEthernet应用程序流套接字数据报套接字原始套接字原始套接字33套接字由应用层通信进程创建,并为其服务套接字由应用层通信进程创建,并为其服务套套接接字字由由应应用用层层的的通通信信进进程程创创建建,并并为为其其服服务务,这这就就是是说说,每每一一个个套套接接字字都都有有一一个个相相关关的的应应用用进进程程,操操作作该该套套接接字字的的代代码是该进程的组成部分。
码是该进程的组成部分。
44使用确定的使用确定的IPIP地址和传输层端口号地址和传输层端口号套接字编程时,往往在生成套接字的描述套接字编程时,往往在生成套接字的描述符后,要将符后,要将套接字套接字与与计算机上的特定的计算机上的特定的IP地址地址和传输层和传输层端口号端口号相关联相关联,这个过程称为,这个过程称为绑定绑定。
一个套接口要使用一个确定的一个套接口要使用一个确定的三元组三元组网络网络地址信息,才能使它在网络中地址信息,才能使它在网络中唯一唯一地被地被标识标识。
(1)不不管管是是采采用用对对等等模模式式或或者者客客户户机机/服服务器模式,务器模式,通信双方通信双方的的应用程序应用程序都都需要开发需要开发。
(2)双方所交换)双方所交换数据数据的的结构结构和交换数据的和交换数据的顺序顺序有有特定的要求特定的要求,不符合现在成熟的应用层,不符合现在成熟的应用层协议的要求时。
甚至,有时需要自己去开发应协议的要求时。
甚至,有时需要自己去开发应用层协议,自己设计最适合的数据结构和信息用层协议,自己设计最适合的数据结构和信息交换规程。
交换规程。
2.2.3套接字的应用场合套接字的应用场合2.2.4套接字使用的数据类型和相关的问题套接字使用的数据类型和相关的问题1三种三种表示表示套接字地址套接字地址的的结构结构在在套套接接字字编编程程接接口口中中,专专门门定定义义了了三三种种结结构构型型的的数数据据类类型型,用用来来存存储储协协议议相相关关的的网网络络地地址址,在在套套接接字字编编程程接接口口的的函函数数调调用中要用到它们。
用中要用到它们。
三种表示套接字地址的结构三种表示套接字地址的结构
(1)sockaddr结构结构,针对,针对各种各种通信域通信域的的套接字,存储它们的地址信息:
套接字,存储它们的地址信息:
structsockaddrunsignedshortsa_family;/地址家族地址家族charsa_data14;/协议地址协议地址
(2)sockaddr_in结结构构,专专门门针针对对Internet通通信信域域,存存储储套套接接字字相相关关的的网网络络地地址址信信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)