PangYing网络编程.pptx
《PangYing网络编程.pptx》由会员分享,可在线阅读,更多相关《PangYing网络编程.pptx(60页珍藏版)》请在咨信网上搜索。
1、 1TCP/IP Socket网络编程nSocket简介nC/S模型nSocket常用函数nTCP/IP网络程序框架与实例n通信方式n阻塞n非阻塞nTCP 异常 2Socket网络编程n目标:n应用进程跨越网络的通信n与Internet 上的程序进行通讯n独立于具体协议的网络编程接口 3系统调用和应用编程接口n多数操作系统使用系统调用在应用程序和操作系统间传递控制权n对程序员来说,系统调用和程序设计中的函数调用相似,只是系统调用是将控制权传递给了操作系统 4多个应用进程使用系统调用的机制 应用程序 1应用程序 2应用程序 n由应用程序调用的系统函数用户地址空间中的应用程序系统调用接口系统地址空
2、间中的协议软件包括 TCP/IP 协议软件的操作系统内核 5为什么需要Socketn普通的I/O操作过程n打开文件读/写操作关闭文件nTCP/IP协议被集成到操作系统的内核中,引入了新型的“I/O”操作n进行网络操作的两个进程在不同的机器上,如何连接?n网络协议具有多样性,如何进行统一的操作n需要一种通用的网络编程接口:Socket 6几种应用编程接口 API 提供应用程序使用TCP/IPnSocket Interface nBerkeley UNIX 操作系统定义的一种 API,又称插口接口nWindows Socketn微软OS中采用了插口接口 API,形成稍有不同的 APInTransp
3、ort Layer Interface(TLI)nAT&T 为其 UNIX 系统 V 定义的一种 API 7应用进程通过插口接入到网络 TCPTCP应用进程因特网由操作系统控制插口,又称为 API 8插口的作用 n当应用进程要进行网络通信时n发出系统调用,请求OS为其创建“插口”n将通信所需系统资源分配给此应用进程n操作系统n将这些资源总和用一个号码表示n将号码返回给应用进程n通信完毕n应用进程通知OS回收“号码”相关的所有资源 9插口与操作系统 nSocket以上的进程n受应用程序控制n应用程序开发者有完全控制权nSocket 以下的 TCP 协议软件及 TCP 使用的缓存和必要的变量n受计
4、算机操作系统控制n只要应用程序使用 TCP/IP 协议进行通信,就必须通过插口与操作系统交互并请求服务 10服务器的两种工作方式服务器的两种工作方式n循环方式(iterative mode)n计算机中一次只运行一个服务器进程n当多个客户进程请求服务时,服务器进程按先后顺序依次响应n并发方式(concurrent)n计算机中同时运行多个服务器进程,每个进程都对某特定客户进程做出响应 11无连接循环服务器n使用UDP 的服务器进程的常用方式n一个进程同一时间只向一客户进程服务n服务器进程收到一客户请求后,发送 UDP 响应n对其他客户进程的请求都在服务器队列中排队n当处理完一个请求时,从队列中读下
5、一客户进程的请求,继续处理 12无连接循环服务器的特点 UDP服务器进程UDP客户进程客户插口服务器插口UDP客户进程客户插口UDP客户进程客户插口一次一个客户进程服务器进程只使用一个服务器插口。每个客户使用自己创建的客户插口(端口号自己设定)13面向连接并发服务器的特点(1/3)服务器进程同一时间为多个客户服务TCPTCP客户进程客户插口临时插口TCP客户进程客户插口TCP客户进程客户插口主服务器进程TCP 连接创建从属服务器进程主进程有时又称父进程,从属进程又称子服务器进程。14面向连接并发服务器的特点(2/3)S与C建立多条 TCP 连接,每条在数据传完后释放TCPTCP客户进程客户插口
6、临时插口TCP客户进程客户插口TCP客户进程客户插口主服务器进程TCP 连接创建从属服务器进程 15面向连接并发服务器的特点(3/3)使用 TCP 的服务器只能有一个熟知端口TCPTCP客户进程客户插口临时插口TCP客户进程客户插口TCP客户进程客户插口主服务器进程TCP 连接仅用于接受服务请求的插口创建从属服务器进程所有这些插口都使用服务器的熟知端口号 16并发处理过程 TCPTCP客户进程客户插口临时插口TCP客户进程客户插口TCP客户进程客户插口主服务器进程TCP 连接仅用于接受服务请求的插口创建从属服务器进程S收到请求后,创建一从属服务器(用临时插口和客户建立 TCP 连接),主服务器
7、继续在原来熟知端口等待其他客户请求 所有这些插口都使用服务器的熟知端口号 17C/S modelnClient-server model is basis for distributed applicationsnServer is specialized,complex program(process)that offers a servicenArbitrary application can become a client by contacting a server and sending a requestnMost servers are concurrent 18Socket类型
8、n流式套接字(SOCK_STREAM)n提供面向连接、可靠数据传输服务,无差错、无重复发送且按发送顺序接收n内置流量控制,避免数据流淹没慢接收方。数据被看作是字节流,无长度限制n数据报套接字(SOCK_DGRAM)n提供无连接服务。包独立地发送,可能出错、丢失/重复,无序接收。n原始套接字(SOCK_RAW)n可对较低层次协议,如IP、ICMP直接访问 19Socket的位置 20两类系统中使用的Socketn不同操作系统中的SocketnWindows Socket(Winsock)nLinux Socket(BSD Socket)21Windows Socketn简称WinsocknWin
9、dows环境下的一套网络编程规范,基于4.3BSD的BSD Socket API制定n1991年Winsock 1.1,16位,由WINSOCK.DLL支持,主要用在Windows 95中n1997年Winsock 2.2 版,32位,由WSOCK32.DLL支持,用在Windows 98及以后的版本中n已成为Windows环境网络编程的事实标准 22Windows Socket(续)n三类函数n与BSD Socket相兼容的基本函数n与BSD Socket相兼容的网络信息检索函数nWindows专用扩展函数 23Socket常用的函数n基本函数n网络信息检索函数 24基本函数-网络连接函数n
10、socket创建套接字nbind 绑定本机端口nconnect建立连接nlisten 监听端口naccept 接受连接nrecv,recvfrom数据接收nsend,sendto 数据发送nclose,shutdown关闭套接字 25字节序n大尾端(Big-Endian):字节的高位在内存中放在存储单元的起始位置n小尾端(Little-Endian):与大尾端相反 26网络字节序与主机字节序n网络字节序(NBO,Network Byte Order)n使用统一的字节顺序,避免兼容性问题n主机字节序(HBO,Host Byte Order)n不同机器HBO不一样,与CPU设计有关nMotorol
11、a 68K系列,HBO与NBO是一致的nIntel X86系列,HBO与NBO不一致 27*基本函数(续)-转换函数nIP地址转换函数ninet_addr():点分十进制数表示的IP地址转换为网络字节序的IP地址ninet_ntoa():网络字节序的IP地址转换为点分十进制数表示的IP地址n字节排序函数nhtonl 4字节主机字节序转换为网络字节序nntohl 4字节网络字节序转换为主机字节序nhtons2字节主机字节序转换为网络字节序nntohs2字节网络字节序转换为主机字节序 28*网络信息检索函数ngethostname获得主机名ngetpeername获得与套接口相连的远程协议地址ng
12、etsockname获得套接口本地协议地址ngethostbyname 根据主机名取得主机信息ngethostbyaddr 根据主机地址取得主机信息ngetprotobyname 根据协议名取得主机协议信息ngetprotobynumber根据协议号取得主机协议信息ngetservbyname根据服务名取得相关服务信息ngetservbyport 根据端口号取得相关服务信息ngetsockopt/setsockopt获取/设置一个套接口选项 nioctlsocket 设置套接口的工作方式 29Windows中的Socket编程nWindows中的Socket编程nWinsock 的启动nWin
13、sock API基本函数nTCP/IP网络程序框架(C/S模式)n阻塞与非阻塞通信方式n实例程序说明 30进程通过系统调用接口进行通信的过程 无连接循环服务器 服务器recvfrom()socket()bind()recvfrom()无限制重复socket()若需要就重复sendto()进程sendto()close()客户请求响应 31 面向连接并发服务器 服务器read()socket()bind()accept()无限制重复socket()若需要就重复write()进程close()接受close()客户请求响应listen()fork()connect()write()read()so
14、cket()若需要就重复连接请求主服务器close()接受从属服务器 32基本套接字函数listen#include int listen(int sockfd,int backlog)返回:0成功;-1出错并置errno值;n函数listen仅被服务器调用,它完成两件事情:n函数listen将未连接的套接字转化成被动套接字,指示内核应接受指向此套接字的连接请求;n函数的第二个参数规定了内核为此套接字排队的最大连接个数;n对于给定的监听套接字,内核要维护两个队列n未完成连接队列n已完成连接队列n两个队列之和不超过backlog;33客户服务器Connect调用在未完成队列建立条目SYN JSY
15、N K,ack J+1ack K+1该条目从未完成队列移至已完成队列,acceptConnect返回TCP三路握手和监听套接口的两个队列listen 34listen函数(续)三路握手完成两队列之和不能超过backlog已完成连接队列(ESTABLISHED状态)未完成连接队列(SYN_RCVD状态)新到达的SYN分节服务器TCPacceptTCPTCP为监听套接口维护的两个队列为监听套接口维护的两个队列 35listen函数(续)另外几点说明:n不同的实现对backlog有不同的解释,如源自Berkeley的实现将backlog增加一个模糊因子,把它乘以1.5,再作为两个队列之和;n不要把b
16、acklog定义为0,因为有些实现允许1个连接排队,而有些实现不允许有连接排队;n当一个客户SYN到达时,若两个队列都是满的,tcp就忽略此分节,且不发送RST。这是因为,这种情况是暂时的,客户tcp将重发SYN,期望不久的将来就能在队列中找到空闲条目。如果发送如果发送RSTRST,将,将会出现?会出现?要是TCP服务器发送一个RST,客户的connect函数立即返回一个错误,强制应用进程处理这种情况,而不是让TCP正常的重传机制处理。客户区别不了两种情况,作为SYN的响应,意为“此端口上没有服务器”的RST和意为“有服务器在此端口上但其队列满”的RST。36基本套接字函数connect#in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PangYing 网络 编程
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。