温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023年第十二次课
Socket网络编程教学课件
2023
第十
二次
Socket
网络
编程
教学
课件
第三局部 UNIX网络编程 第一章第一章 Socket 接口与网络编程接口与网络编程 第二章第二章 客户客户/效劳器程序设计效劳器程序设计 第一章第一章 socket 接口与网络编程接口与网络编程、TCP/IP概述概述复习复习 一、网络环境中分布式进程通信的根本概念一、网络环境中分布式进程通信的根本概念 二、套接字二、套接字socket 三、三、socket 系统调用系统调用 四、四、client/server计算模型计算模型 五、五、UNIX域协议域协议了解了解 六、并发效劳器与超级效劳器六、并发效劳器与超级效劳器 TCP/IP 概述概述 TCP/IP与与Internet历史历史 OSI与与TCP/IP TCP/IP协议栈与数据包协议栈与数据包 IP地址与端口号地址与端口号 TCP/IP与与Internet历史历史 DOD:Advanced Research Project Agency-ARPA发起 要求:站点间连接可靠;容易增删节点;连接不同类型的计算机;结果:产生了许多新的概念和方法:异种机互联,资源共享,分组交换,分布控制,通信处理机,协议分层 1969年,建立 ARPANET 1972年,发布 ARPANET 开始NCP(Netware Contral Protocol)设计 编辑RFC(Request For Comment)(60-70年代通信线路变化:租用线 无线网-卫星网-网络互联)1975年,ARPANET从试验到运营 开始TCP/IP开发Trasmission Control Protocol/Internet Protocol 1981年,TCP/IP参加 4.1BSD UNIX内核 TCP/IP取代NCP 以ARPA为主建立Internet 1983年,ARPA向TCP/IP的转换结束;TCP/IP成为军用标准;MILNET从ARPANET中别离出来(后者用于研究);ARPA低价出售TCP/IP;1985年,NSF(National Sicence Foundation)围绕6台超级计算机建立TCP/IP 网;1986年,NSFNET 建成,取代ARPA成为主干网;1988年,NSFNET对一般的研究者开放;1990年,ARPANET停止运行;Internet定义(A.S.Tanenbanm)一台计算机假设有TCP/IP协议栈,有IP地址,有能力向其它机器发送IP包,那么称它在Internet上。Internet与传统应用 Email News Remote login File transfer 90年代以后,WWW出现迅速把Internet用户从学术机构,政府,工业界推广到普通用户.OSI 与与 TCP/IP OSI:Open Systems Interconnection Application Presentation Session Transport Network Data link Physical Application Transport Network Host-to Network OSI TCP/IP 7 6 5 4 3 2 1 先有模型后有协议先有模型后有协议 网络层网络层:连接连接/非连接非连接 传输层传输层:连接连接 先有协议后有模型先有协议后有模型 (不适用于其它网络不适用于其它网络)网络层网络层:只有非连接只有非连接 传输层传输层:连接连接/非连接非连接 TCP/IP协议栈与数据包协议栈与数据包 rlogin data tcp port data ipaddr tcp port data ether header ip header tcp header data tail 报文message 分组package 数据报datagram 帧frame 14 20 20 4 bytes ether header:48位位 source addr 48位位 dest.addr IP header:32位位 source addr 32位位 dest.addr TCP header:16位位 source port no.16位位 dest.port no.cable ethernet IP TCP rlogin cable ethernet IP TCP IP地址与端口号地址与端口号 0 netaddr hostaddr 10 netaddr hostaddr 110 netaddr hostaddr 1110 Multicastaddr(多播组ID)11110 reserved A类 B类 C类 D类 E类 1.0.0.0 127.255.255.255 128.0.0.0 191.255.255.255 192.0.0.0 223.255.255.255 224.0.0.0 239.255.255.255 240.0.0.0 247.255.255.255 Ipaddr=INADDR_ANY(全0)表示多宿地址(multihomed)端口号(port)分配(BSD,16位)1 -255 保存 256-511 4.3 BSD保存 512-1023 rresvport()分配(client用)1024-50000 自动分配(port=0时 bind在此范围指定port值)50001-65535 BSD server 一、网络环境中分布式进程通信的根本概念 网络层及以下的各层实现了网络中主机之间的通网络层及以下的各层实现了网络中主机之间的通信,但是主机间数据通信不是最终的目的;信,但是主机间数据通信不是最终的目的;网络最本质的活动是分布在不同地理位置的主机网络最本质的活动是分布在不同地理位置的主机之间的进程通信,以实现各种网络效劳功能;设之间的进程通信,以实现各种网络效劳功能;设置传输层的主要目的就是要实现分布式进程通信。置传输层的主要目的就是要实现分布式进程通信。通信子网通信子网应用程序进程应用程序进程网络层协议作用范围传输层协议作用范围单机环境下的进程通信 文件锁、管道文件锁、管道pipe、命名管道、命名管道named pipe和软中断信号和软中断信号signal机制;机制;消息队列消息队列message queue、信号量、信号量 semaphore 和和 共享存储区共享存储区 shared memory,统称为进程通信,统称为进程通信inter process communication IPC机制;机制;IPC机制也不适应于网络环境中的进程通信。机制也不适应于网络环境中的进程通信。网络环境中的进程通信与单机系统内部的进网络环境中的进程通信与单机系统内部的进程通信的主要区别:网络中主机的高度自治程通信的主要区别:网络中主机的高度自治性;不是在同一个主机系统之中,没有一个性;不是在同一个主机系统之中,没有一个统一的高层进行控制与管理;统一的高层进行控制与管理;网络中一台主机对其它主机的如下情况一概网络中一台主机对其它主机的如下情况一概无从知道无从知道 活动状态活动状态 位于其它主机系统中的各个进程状态位于其它主机系统中的各个进程状态 这些进程什么时间参与网络活动这些进程什么时间参与网络活动 希望与网络中哪一台主机的什么进程通信希望与网络中哪一台主机的什么进程通信 网络环境中分布式进程通信 需要解决:进程命名与寻址方法进程命名与寻址方法 多重协议的识别多重协议的识别 进程间相互作用的模式进程间相互作用的模式 1网络环境中进程标识 在一台计算机中,不同的进程用进程在一台计算机中,不同的进程用进程号或进程标识号或进程标识process ID唯一地唯一地标识出来标识出来 网络环境中完整的进程标识应该是:网络环境中完整的进程标识应该是:本地主机地址本地主机地址-本地进程标识本地进程标识 远程主机地址远程主机地址-远程进程标识远程进程标识 不同主机上的进程标识,需要主机地不同主机上的进程标识,需要主机地址址如如IP地址地址和端口号的参与。和端口号的参与。2多重协议的识别 Unix网络编程接口支持的通信协议包括:网络编程接口支持的通信协议包括:TCP/IP协议族的协议族的TCP和和UDP 施乐网络系统施乐网络系统Xerox NS的顺序分组协议的顺序分组协议Sequential Packet Protocol,SPP,类似类似于于TCP 互联网数据报协议互联网数据报协议Internetworking Datagram Protocol,IDP,类似于类似于UDP ARPANET的接口报文处理机链路协议的接口报文处理机链路协议IMPLINK Unix系统的内部进程协议系统的内部进程协议 一个特定的网络间进程通信只能使用相同的一个特定的网络间进程通信只能使用相同的网络通信协议网络通信协议 网络环境中一个进程的全网唯一的标识需网络环境中一个进程的全网唯一的标识需要一个三元组要一个三元组halfhalf-associationassociation来表来表示:示:(协议,本地地址,本地端口号协议,本地地址,本地端口号).).网络环境中一个完整的进程通信标识需要网络环境中一个完整的进程通信标识需要一个五元组一个五元组associationassociation来表示:来表示:协议,本地主机地址,本地端口号,协议,本地主机地址,本地端口号,远端主机地址,远端端口号远端主机地址,远端端口号 TCP121.5.21.215432TCP 121.5.21.2 15432协议类型协议类型IP地址IP地址端口号端口号(3)进程间相互作用模式:Client/Server模型 在在TCP/IP协议体系中,进程间的相互作用采用客协议体系中,进程间的相互作用采用客户户/效劳器效劳器(Client/Server)模型模型;客户与效劳器分别表示相互通信的两个应用程序客户与效劳器分别表示相互通信的两个应用程序的进程的进程;客户向效劳器发出效劳请求,效劳器响应客户的客户向效劳器发出效劳请求,效劳器响应客户的请求,提供客户机所需要的网络效劳请求,提供客户机所需要的网络效劳;网络应用程序采用客户/效劳器 模式的原因 网络环境中资源、计算能力和信息分布的不网络环境中资源、计算能力和信息分布的不均匀性。均匀性。网络环境中进程通信的异步性。必须要建立网络环境中进程通信的异步性。必须要建立一个体制,为准备通信的进程之间建立起连一个体制,为准备通信的进程之间建立起连接,在进程交换数据的过程中维护连接,为接,在进程交换数据的过程中维护连接,为数据交换提供同步。数据交换提供同步。不存在一个高层的调不存在一个高层的调度与协调度与协调 在客户在客户/效劳器模式中,每次通信均由随机效劳器模式中,每次通信均由随机启动的客户进程发起,而效劳器进程从开机启动的客户进程发起,而效劳器进程从开机起就处于等待状态,这样可以保证效劳器随起就处于等待状态,这样可以保证效劳器随时对客户请求做出响应时对客户请求做出响应 。二二.套接字套接字socket 套接字接口与套接字套接字接口与套接字 套接字地址结构套接字地址结构 INET与与UNIX协议族地址结构协议族地址结构 套接字对套接字对(socket pair)Socket 概念概念 套接字接口是应用层套接字接口是应用层与与TCP/IP协议族通协议族通信的信的中间软件抽象层中间软件抽象层。它是一组网络编程接它是一组网络编程接口,包括一系列系统口,包括一系列系统和库调用,头文件和和库调用,头文件和数据结构。数据结构。套接字接口的主要对套接字接口的主要对象是套接字,可以把象是套接字,可以把它看作本地应用进程它看作本地应用进程与网络的接入点与网络的接入点。套接字地址结构套接字地址结构 Socket API中提供了三种类型的地址:中提供了三种类型的地址:sockaddr是通用的套接字结构;是通用的套接字结构;sockaddr_in为为Internet 协议族的地址描述结构;协议族的地址描述结构;sockaddr_un那么是那么是Unix协议族的地址描述结构;协议族的地址描述结构;struct sock