第3讲 流式套接字.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3讲 流式套接字

网络编程技术第三讲 流式套接字OutlineTCP:传输控制协议流式套接字编程模型基本函数程序举例OutlineTCP:传输控制协议流式套接字编程模型基本函数程序举例传输层协议TCPTransport Control Protocol,传输控制协议面向连接提供高可靠性服务,用于一次传输要交换大量报文的情形。增加许多开销:确认、流量控制、计时器以及连接管理等。服务器进程客户进程LISTEN(被动打开)SYN, SEQ = x(主动打开) SYN_SENTSYN_RCVDSYN, ACK, SEQ = y, ACK = x + 1ESTABLISHEDSYN_RCVDACK, SEQ = x + 1, ACK = y + 1ESTABLISHEDESTABLISHED(全双工数据传送阶段)FIN, SEQ = u(主动关闭) FIN_WAIT_1CLOSE_WAIT ( 被动关闭)ACK, SEQ = v, ACK = u + 1FIN_WAIT_2CLOSE_WAITFIN, ACK, SEQ = v, ACK = u + 1TIME_WAITLAST_ACKACK, SEQ = u + 1, ACK = v + 1TIME_WAITCLOSEDTCP正常的连接与关闭CLOSED被动打开主动打开 发送 SYN关闭 收到 SYN发送 SYN, ACKLISTEN被动打开收到 RST发送 SYN 关闭或超时收到 SYN,发送 SYN, ACKSYN_RCVDSYN_SENT同时打开主动打开收到 ACK 收到 SYN, ACK发送 ACK数据传送 阶段收到 FIN发送 ACK被动关闭 关闭发送 FINESTABLISHEDCLOSE_WAIT 关闭发送 FIN主动关闭 关闭发送 FIN收到 FIN发送 ACK同时关闭FIN_WAIT_1CLOSING收到 ACKLAST_ACK收到 FIN, ACK 发送 ACK收到 ACK收到 ACK收到 FIN发送 ACKFIN_WAIT_2TIME_WAIT定时经过两倍报文段寿命后TCP的有限状态机 起点OutlineTCP:传输控制协议流式套接字编程模型基本函数程序举例流式套接字编程模型基础传输方式客户机/服务器方式特点面向连接过程服务器进程和客户端进程在通信前必须创建各自的套接字,建立连接,然后对相应的套接字进行“读”、“写”操作,实现数据的传输。适用场合:大数据量可靠性要求高广域网通信过程服务器通信过程:socket初始化;创建套接字,指定使用TCP(可靠的传输服务)进行通信;指定本地地址和通信端口;等待客户端的连接请求;进行数据传输;关闭套接字;结束对windows sockets dll的使用。通信过程客户端通信过程:socket初始化;创建套接字,指定使用TCP(可靠的传输服务)进行通信;指定服务器地址和通信端口;向服务器发送连接请求;进行数据传输;关闭套接字;结束对windows sockets dll的使用。客户/服务器交互模型服务器socket(),建立流式套接字,返回套接字标识s 客户端bind(),使套接字s与本地地址相连 socket(),建立流式套接字,返回套接字标识s listen(),在套接字s上侦听连接请求 accept(),准备接收客户连接;accept返回,创建新套接字ns,原套接字s仍处于侦听状态;connect(),s与服务器建立连接 recv/send(),在s上读写数据recv/send(),在ns上读写数据closesocket(),关闭s,通信结束 closesocket(),关闭套接字nsclosesocket(),关闭套接字s,服务结束客户/服务器交互模型为什么客户端没有bind,而服务器端需要?客户端的套接字如何获得端点地址?应用如何获知自己当前的主机地址和端口号?server如何处理与多个client建立连接?流式套接字服务器工作原理clientServerchildListening serverServerchildclientconnectionconnectionTCPTCPTCPconnectionconnectionconnectionconnectionOutlineTCP:传输控制协议流式套接字编程模型基本函数程序举例①创建套接字——socket()函数定义:SOCKET socket(int af, int type, int protocol); 输入参数:af:指定网络地址类型,一般取AF_INET,表示该套接字在Internet域中进行通信;type:指定套接字类型,这里取SOCK_STREAM,表示创建的套接字是流套接字;protocol:指定网络协议,取0表示默认为TCP/IP协议。返回值:正确:创建的套接字句柄

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档