计算机网络(编程部分)讲述.pptx

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络(编程部分)讲述

张建忠 zhangjz@nankai.edu.cn 网络应用程序与Socket编程 传输层的主要工作 追求的目标:可靠性 单机用户:应用程序依赖于底层系统的可靠性,系统保证数据传送到底层后不会丢失和重复 网络用户:希望互联网能够提供迅速、准确、可靠的通信功能,保证不发生丢失、重复、错序等可靠性问题 传输层:保证端对端数据传输的可靠性 传输控制协议TCP 用户数据报协议UDP 点对点通信与端对端通信 互联层:点对点通信 传输层:端对端通信 端对端通信与虚拟通信平台 TCP提供的服务 TCP提供的服务:面向连接、可靠、全双工数据流 TCP提供的服务特征 面向连接(Connection Orientation) 完全可靠性(Complete Reliability) 全双工通信(Full Duplex Communication) 流接口(Stream Interface) 连接的可靠建立与优雅关闭(Reliable Connection Startup Graceful Connection Shutdown) TCP通信过程 建立连接(可靠地建立) 发送数据(可靠、全双工、流式数据) 关闭连接(优雅地关闭) TCP的可靠性实现 必要性:TCP建立在IP协议提供的面向非连接、不可靠的数据报投递服务基础之上 TCP需要解决的可靠性问题 丢失数据的恢复问题(重传) 流量控制问题(窗口) 可靠建立与关闭连接问题(三次握手) TCP端口与连接 TCP端口:一个TCP连接两端的端点 TCP端口的表示:16位的二进制数 利用TCP端口可以提供多路复用功能 著名的TCP端口号 用户数据报协议UDP UDP提供的服务:面向非连接、不可靠 服务特点 面向非连接,数据直接封装在IP数据报中投递 不确认,不排序 运行效率高,实现简单 利用UDP的应用程序要承担可靠性方面的全部工作 UDP的端口 UDP利用端口对给定主机上的多个目标进行区分 UDP端口使用16位二进制数表示 TCP和UDP各自拥有自己的端口号 网络编程界面 TCP/IP协议通常在操作系统的内核中实现 编程界面:由操作系统提供的功能调用,可以使应用程序方便地使用内核的功能 socket(套接字):TCP/IP网络操作系统为网络程序开发提供的典型网络编程界面 Socket的位置 套接字 由加利福尼亚大学伯克利分校(University of California,Berkeley)首创 把网络连接看成一个流(Stream),可以向流写字节,也可以从流读取字节 为程序员屏蔽了网络的底层细节(媒体类型、信息包的大小、网络地址、信息重发等) Socket通过绑定机制与驱动程序建立关系(通知自己所对应的IP和Port) 发送数据:由Socket交给驱动程序向网络发送 接收数据:驱动程序收到与Socket绑定的数据后,由驱动程序交给Socket,应用进程从Sokcet中读取 Socket常用的操作 连接远程机器 绑定端口 接收远程连接请求 监听到达的数据 发送数据 接收数据 关闭连接 TCP和UDP工作过程 socket套接字 数据报套接字(datagram sockets):使用UDP协议,支持主机之间面向非连接、不可靠的信息传输 流式套接字(stream sockets):使用TCP协议,支持主机之间面向连接的、顺序的、可靠的、全双工字节流传输 Windows、UNIX、Linux都支持socket Java提供的socket Microsoft提供的socket Windows Sockets API、CAsyncSocket类、WinSock控件 CAsyncSocket编程--创建socket 构造CAsyncSocket对象 利用Create创建和初始化socket (1) //在堆栈上构造CAsyncSocket对象 CAsyncSocket sock; (2) //在堆上构造CAsyncSocket对象 CAsyncSocket* pSocket = new CAsyncSocket; BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT| FD_CONNECT|FD_CLOSE, LP

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档