您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Socket编程基础.ppt
网络高级编程计算机科学学院梁晓Email:xiaoliang.edu@gmail.comTel:13540013002NetworkAdvancedProgramming学分、课时、成绩组成本课程3学分(包含上机项目)理论课时32,上机课时32考核方式介绍及各项所占比重上机项目(Demo&CodeReview):40%•功能实现•代码规范化、文档化•期末考试(上机)平时作业检查(随机抽查&主动汇报):10%期末考试(笔试):50%三次考勤缺席,取消考试资格!NetworkAdvancedProgramming知识准备计算机网络基础OSI模型,TCP/IP协议相关知识C语言与数据结构相关的知识指针,链表,队列,栈等Windows环境编程基础*VisualStudio开发环境的基本使用程序调试技术NetworkAdvancedProgramming教材及参考书籍教材《Windows网络编程》,第二版,罗莉琴詹祖桥编著,人民邮电出版社参考书籍《用TCP/IP进行网际互联》(第三卷)客户-服务器编程与应用,DouglasE.Comer,电子工业出版社,2008《Windows网络编程技术》(第二版),清华大学出版社,2005《UNIX网络编程:第3版》(美)史蒂文斯,(美)芬纳,(美)鲁道夫著,杨继张译,清华大学出版社,2006-1-1《Windows核心编程》JeffreyRichter/ChristopheNasarre,译者:葛子昂/周靖/廖敏,清华大学出版社NetworkAdvancedProgramming课程主要内容网络编程基础Socket编程基础并行处理、多线程编程高级Socket编程技术探测网络中的在线设备NetBIOS网络编程NetworkAdvancedProgramming学习方法理解比什么都重要!实践、实践、再实践!动脑筋写代码NetworkAdvancedProgramming概述计算机网络数据库操作系统CPUNetworkAdvancedProgramming概述CPU(CentralProcessUnit)GPU(GraphicsProcessUnit)PPU(PhysicsProcessUnit)“Thebody”“TheEyes”“Themovement”CPUOpenCL异构系统并行编程框架XPUNetworkAdvancedProgramming概述操作系统CPU提供资源访问虚拟化操作(文件、硬件、网络等)一切基于Web应用ChromeOSChromebookNetworkAdvancedProgramming概述计算机网络数据库操作系统CPUNetworkAdvancedProgramming互联网国内互联网公司互联网人-----机-----物机器:互联网设备+端系统社交网络物联网•RFID(射频识别技术)–用于门禁,图书馆、食品安全追溯•NFC(近距离通信)–用于手机刷卡等•WSN(无线传感器网络)–应用领域可以归纳为:军事、救灾、航空、反恐、防爆、环境、医疗、保健、家居、工业、商业等NetworkAdvancedProgramming概述计算机网络数据库操作系统CPU第一章网络编程基础计算机科学学院梁晓Email:xiaoliang.edu@gmail.comTel:13540013002NetworkAdvancedProgramming网络程序在网络体系结构中的位置从功能上,网络程序分为两部分:通信模块—分布式应用基础用户交互或后台处理模块NetworkAdvancedProgramming实现网间进程通信必须解决的问题进程间的标识如何与网络协议栈连接应用程序需要一个简单的方式与协议栈连接多重协议栈的识别多重协议栈:TCP/IP,IPX/SPX(NetWareOS),AppleTalk等不同的通信服务不同的网络应用有不同的通信服务要求NetworkAdvancedProgramming网间进程的标识IP地址--在网络中标识主机IP地址(网络号+主机号)传输层端口--标识进程端口是TCP/IP协议族中,应用层进程与传输层协议实体间的通信接口;从实现的角度讲,端口是一种抽象的软件机制,包括一些数据结构和I/O缓冲区;应用程序需要与端口建立绑定关系;每个端口都拥有一个叫作端口号(portnumber)的整数型标识符;NetworkAdvancedProgramming客户与服务器第一次通信NetworkAdvancedProgramming使用端口号来判断服务Webserver(port80)客户端202.5.7.8服务端128.2.194.242FTPserver(port21)Servicerequestfor128.2.194.242:80(i.e.,theWebserver)Webserver(port80)FTPserver(port21)Servicerequestfor128.2.194.242:21(i.e.,theFTPserver)TCP/IP协议栈TCP/IP协议栈ClientClientNetworkAdvancedProgramming标识网间进程TCP和UDP端口号分配端口0:不使用,或者作为特殊的使用;端口1-254:保留给特定的服务,TCP和UDP均规定,小于256的端口号才能分配给网上著名的服务;端口255-1023:保留给其他的服务,如路由;端口1024-4999:可以用作任意客户的端口;端口5000-65535:可以用作用户的服务器端口NetworkAdvancedProgramming网络协议的特征面向消息的协议vs.基于流的协议面向连接的服务vs.无连接的服务面向连接服务是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立连接,使用连接,终止连接的过程。无连接服务是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系统中独立传送可靠性vs.次序性NetworkAdvancedProgramming三类网络编程基于TCP/IP协议栈的网络编程基于TCP/IP协议栈的网络编程是最经典的网络编程方式,主要是使用各种编程语言,利用操作系统提供的套接字网络编程接口,直接开发各种网络应用程序。本书主要讲解这种网络编程的相关技术。基于应用的网络编程JAVA,HTML,ASP,PHP基于.NET框架的WebServices网络编程NetworkAdvancedProgrammingC/S模式Clientasks(request)–serverprovides(response)Typically:singleserver-multipleclientsTheserverdoesnotneedtoknowanythingabouttheclienteventhatitexistsTheclientshouldalwaysknowsomethingabouttheserveratleastwhereitislocatedClientprocessServerprocess1.Clientsendsrequest2.Serverhandlesrequest3.Serversendsresponse4.ClienthandlesresponseResourceNetworkAdvancedProgrammingC/S模式C/S模式,因特网上应用程序最常用的通信模式。客户方采取的是主动请求方式,其工作过程是:(1)打开一通信通道,并连接到服务器所在主机的特定监听端口。(2)向服务器发送请求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议进行。(3)请求结束后,关闭通信通道并终止。NetworkAdvancedProgrammingC/S交互模式服务器的工作过程:(1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公认的地址上(熟知端口,如FTP为21)接收客户请求。(2)等待客户的请求到达该端口。(3)服务器接收到服务请求,处理该请求并发送应答信号。(4)返回第二步,等待并处理另一客户请求。(5)在特定的情况下,关闭服务器。NetworkAdvancedProgramming服务器的工作方式若有多个客户端同时请求,服务器如何处理?循环方式(iterativemode)在计算机中一次只运行一个服务器进程。当有多个客户进程请求服务时,服务器进程就按请求的先后顺序依次做出响应。并发方式(concurrentmode)在计算机中同时运行多个服务器进程,而每一个服务器进程都对某个特定的客户进程做出响应。NetworkAdvancedProgramming服务端的并发性并发性是C/S模式的基础,并发允许多个客户获得同一种服务,而不必等待服务器完成对上一个请求的处理。这样才能很好地同时为多个客户提供服务。操作系统支持并发性程序开发Unix系统:fork(),创建新进程Windows系统:CreateThread(),创建新线程NetworkAdvancedProgramming服务器的设计方式服务器设计方式由采用的传输层协议和工作方式决定;(TCP/UDP)+(循环/并发)四种设计方式:面向连接的并发面向连接的循环无连接的并发无连接的循环NetworkAdvancedProgrammingTCPTCP客户临时端口临时端口TCP客户临时端口TCP客户临时端口主服务器TCP连接熟知端口仅用于接受服务请求创建从属服务器面向连接的并发服务器主服务器主要流程在周知端口上设置监听模式While(true){若在周知端口上有客户端的TCP连接请求;进行三次握手建立TCP连接;创建从属服务器(用临时端口与客户端进行通信);}NetworkAdvancedProgramming无连接循环服务器UDP服务器UDP客户临时端口熟知端口UDP客户临时端口UDP客户临时端口一次一个客户服务器只使用一个熟知端口。每一个客户则使用自己创建的临时端口(端口号自己设定)。
本文标题:Socket编程基础.ppt
链接地址:https://www.777doc.com/doc-5154175 .html