计算机网络总结( 三 )


服务端:“好了 , 我活干完了!”
客户端:“好的 , 我挂断了!”——客户端同时等待一段时间后关闭 , 而服务端收到消息后立即关闭
3. TCP和UDP的区别

计算机网络总结

文章插图
 
UDP 在传送数据之前不需要先建立连接 , 远地主机在收到 UDP 报文后 , 不需要给出任何确认 。虽然 UDP 不提供可靠交付 , 但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信) , 比如: QQ 语音、 QQ 视频 、直播等等
TCP 提供面向连接的服务 。在传送数据之前必须先建立连接 , 数据传送结束后要释放连接 。TCP 不提供广播或多播服务 。由于 TCP 要提供可靠的 , 面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前 , 会有三次握手来建立连接 , 而且在数据传递时 , 有确认、窗口、重传、拥塞控制机制 , 在数据传完后 , 还会断开连接用来节约系统资源) , 这一难以避免增加了许多开销 , 如确认 , 流量控制 , 计时器以及连接管理等 。这不仅使协议数据单元的首部增大很多 , 还要占用许多处理机资源 。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景 。
4. TCP 如何保证可靠传输
应用数据被分割成 TCP 认为最适合发送的数据块 。
TCP 给发送的每一个包进行编号 , 接收方对数据包进行排序 , 把有序数据传送给应用层 。
校验和: TCP 将保持它首部和数据的检验和 。这是一个端到端的检验和 , 目的是检测数据在传输过程中的任何变化 。如果收到段的检验和有差错 , TCP 将丢弃这个报文段和不确认收到此报文段 。
TCP 的接收端会丢弃重复的数据 。
流量控制: TCP 连接的每一方都有固定大小的缓冲空间 , TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据 。当接收方来不及处理发送方的数据 , 能提示发送方降低发送的速率 , 防止包丢失 。TCP 使用的流量控制协议是可变大小的滑动窗口协议 。(TCP 利用滑动窗口实现流量控制)
拥塞控制: 当网络拥塞时 , 减少数据的发送 。
ARQ协议: 也是为了实现可靠传输的 , 它的基本原理就是每发完一个分组就停止发送 , 等待对方确认 。在收到确认后再发下一个分组 。
超时重传: 当 TCP 发出一个段后 , 它启动一个定时器 , 等待目的端确认收到这个报文段 。如果不能及时收到一个确认 , 将重发这个报文段 。
4.1 ARQ协议
自动重传请求(Automatic Repeat-reQuest , ARQ)是OSI模型中数据链路层和传输层的错误纠正协议之一 。它通过使用确认和超时这两个机制 , 在不可靠服务的基础上实现可靠的信息传输 。如果发送方在发送后一段时间之内没有收到确认帧 , 它通常会重新发送 。ARQ包括停止等待ARQ协议和连续ARQ协议 。
4.1.1 停止等待ARQ协议
停止等待协议是为了实现可靠传输的 , 它的基本原理就是每发完一个分组就停止发送 , 等待对方确认(回复ACK) 。如果过了一段时间(超时时间后) , 还是没有收到 ACK 确认 , 说明没有发送成功 , 需要重新发送 , 直到收到确认后再发下一个分组 。
在停止等待协议中 , 若接收方收到重复分组 , 就丢弃该分组 , 但同时还要发送确认 。
优缺点:
优点: 简单
缺点: 信道利用率低 , 等待时间长
1) 无差错情况:
发送方发送分组,接收方在规定时间内收到,并且回复确认.发送方再次发送 。
2) 出现差错情况(超时重传):
停止等待协议中超时重传是指只要超过一段时间仍然没有收到确认 , 就重传前面发送过的分组(认为刚才发送过的分组丢失了) 。因此每发送完一个分组需要设置一个超时计时器 , 其重传时间应比数据在分组传输的平均往返时间更长一些 。这种自动重传方式常称为 自动重传请求 ARQ。另外在停止等待协议中若收到重复分组 , 就丢弃该分组 , 但同时还要发送确认 。连续 ARQ 协议 可提高信道利用率 。发送维持一个发送窗口 , 凡位于发送窗口内的分组可连续发送出去 , 而不需要等待对方确认 。接收方一般采用累积确认 , 对按序到达的最后一个分组发送确认 , 表明到这个分组位置的所有分组都已经正确收到了 。


推荐阅读