zoukankan      html  css  js  c++  java
  • 2020-07-05:tcp和udp的区别和应用场景。如何实现断点续传?

    福哥答案2020-07-05:

    区别:
    1.可靠性:tcp可靠。udp不可靠。
    2.连接性:tcp面向连接。udp无连接。
    3.报文:tcp字节流。udp面向报文。
    4.传输效率:tcp低。udp高。
    5.多点通信:tcp一对一通信。udp一对一、一对多、多对一,多对多通信。

    应用场景:
    tcp:
    (1)文件传输(FTP,HTTP 对数据的准确性要求高,速度可以相对慢);
    (2)发送或接收邮件(SMTP,POP3,IMAP 对数据准确性要求高,非紧急应用);
    (3)远程登录(SSH,TELNET 对数据准确性有一定要求,有连接概念)等等
    udp:
    (1)即时通信(QQ聊天,对数据准确性和丢包要求比较低,但速度必须快);
    (2)在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的)
    (3)网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等

    断点续传,客户端向服务端发送文件,tcp为例:
    1.客户端文件分块,假设文件3.3M,一个块1M,总共有4个块。
    2.客户端发送 【文件信息标识,文件名,文件大小,文件MD5】,服务端确认。如果服务端没有,服务端新建【文件名.后缀名.loading】;如果服务端已经有了【文件名.后缀名.loading】,计算块序号,让客户端从块序号开始;如果服务端有了【文件名.后缀名】,比对MD5,如果一样,客户端就不用发数据了,如果不一样,需要进行步骤3。
    3.客户端发送【块标识,块MD5,块内容】,服务端对块内容进行MD5,跟客户端发过来的MD5进行对比。MD5一样就通过。不一样,需要客户端重发。
    4.客户端重复步骤3,直到最后一个块发送成功。
    5.服务端修改文件名。把【文件名.后缀名.loading】改成【文件名.后缀名】。

    断点续传的答案是临时写的,不完全对,请直接评论。

  • 相关阅读:
    斐波那契数列 的两种实现方式(Java)
    单链表反转
    单链表合并
    两个有序list合并
    list去重 转载
    RemoveAll 要重写equals方法
    Java for LeetCode 138 Copy List with Random Pointer
    Java for LeetCode 137 Single Number II
    Java for LeetCode 136 Single Number
    Java for LeetCode 135 Candy
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13442836.html
Copyright © 2011-2022 走看看