网络软件设计9.pptVIP

  • 0
  • 0
  • 约4.58千字
  • 约 28页
  • 2015-08-07 发布于江苏
  • 举报
网络软件设计 面向连接与无连接服务 服务与协议 引入 回到基本流程 申请套接字资源时,需要指明套接字类型 SOCK_STREAM SOCK_DGRAM 指明了套接字类型后,究竟产生了哪些影响? 程序流程的不同 数据传输服务的不同! 无连接程序流程 流程比较 流程比较 流程比较 无连接的流程 打开套接字 通信 关闭套接字 数据报与字节流服务 数据报服务 由无连接协议--UDP提供 发送:以报文为单位 如果报文超过最大可发送长度,将拒绝发送 每次用户交付的数据,都将封装在一个UDP报文发送 接收:以报文为单位 如果接收缓冲区小于接收的报文长度,将无法得到全部接收数据 即便接收缓冲区足够大,每次也只能接收一个UDP报文 数据报与字节流服务 字节流服务 由面向连接协议--TCP提供 对字节流的理解:对用户交付的数据以流的形式,不加限制 发送: 用户可发送“任意”长度的报文, TCP实体可根据通信的需要分拆用户一次交付的数据为多个TCP报文,发送; 或组合用户多次交付的数据为单个TCP报文。 接收: 用户得到的数据并不受到TCP报文大小限制,接收缓冲小时,可得到TCP报文的一部分 接收缓冲大时,可一次得到多个TCP报文 可靠服务与不保证可靠服务 面向连接提供可靠的通信质量 当通信中丢失报文时,TCP层可在不通知用户的情况下得到恢复 当通信中出现重复报文时,不会交给用户,而引起误会 无连接不保证通信可靠性 当通信中丢失报文时,UDP并不进行差错恢复 当通信中出现重复报文时,也会交给用户,是否引起误会由用户自行负责 源和目的 “连接”与通信源和目的 连接由源和目的确定,在通信过程中,不能改变 在已建立连接的套接字,不能向另外的目的发送数据 不能接收非连接对端送来的数据 在通信过程中,用户不再(不能)指定源和目的 “无连接”与通信源和目的 在通信过程中,可向任意目的发送数据 在通信过程中,可收到任意源送来的数据 多路复用 多路复用 程序可同时与多个对等实体通信 “连接”与多路复用 每个套接字对应一个连接 实现多路复用必须实现同时检测多个套接字 --select() “无连接”与多路复用 无连接是否必须使用select? 哪些情况下,会在无连接方式下使用select? 服务与协议 套接字函数 用户通过套接字函数获得服务 套接字函数的具体功能应由相应的协议实现 服务和协议之间一般是一一对应的 服务和协议之间可以不完全对应,在某些场合下可提供一定的灵活性和便利 在(面向连接)流套接字上能够使用sendto和recvfrom等服务原语吗? 在(无连接)数据报套接字上能使用connect和send、recv等原语吗? 如果能,会产生怎样的效果呢? 服务与协议 字节流和数据报服务 流套接字上使用sendto和recvform函数是否能获得数据报类型的服务? 数据报套接字上使用send和recv是否能获得字节流服务? 可靠性 流套接字会不会因为使用sendto和recvfrom而变得无法保证可靠性了? 数据报套接字使用send和recv是否变得可靠了? 源和目的的限定 函数的交叉使用 套接字函数 可在两种方式下使用,且功能相同 可在两种方式下使用,但功能不同 只能在一种方式下使用 通过对函数交叉使用的测试,深入体会两种服务方式的不同以及服务与协议之间的关系 函数的交叉使用 在两种方式下使用且功能相同 socket() bind() closesocket() 控制类、信息类、辅助类 函数交叉使用的测试目标 无连接方式,数据报套接字(SOCK_DGRAM) listen 能否得到正确返回值 accept 能否得到正确返回值 connect 能否得到正确返回值 recv 能否收到数据 send 能否发送数据 函数交叉使用的测试目标 面向连接方式,流套接字(SOCK_STREAM) recvform() 能否得到接收数据 sendto() 能否正确发送数据 函数交叉使用的测试结果 可在两种方式下使用(,但结果不同) connect recv send sendto recvfrom 只能在一种方式下使用 listen accept 进一步测试 数据报套接字与面向连接服务 使用面向连接的服务是否能约束源和目的? 在建立“连接”前能否使用recv和send 在建立“连接”前使用recvfrom和sendto是否不受源和目的限制 在建立“连接”后能否使用recv和send,是否受到源和目的限制 在建立“连接”后使用recvfrom和sendto,是否受到源和目的限制 是否能获得字节流服务 在建立连接后使用recv和send是否能形成字节流的服务效果? 是否能获得可靠服务保证 进一步测试 字节流套接字与无连接通信服务 在连接建立之前使用recvfrom和se

文档评论(0)

1亿VIP精品文档

相关文档