福哥答案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】改成【文件名.后缀名】。

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

最新文章

  1. Jquery ajax提交表单几种方法
  2. JS基础语法
  3. C语言之复杂指针详解
  4. 一个介绍webrtc的国外网址
  5. 【风马一族_Python】 更替pip的版本
  6. notepad++每行首尾添加内容
  7. 获取自动增长IDmysqli函数
  8. 【原创】NSURLSession HTTPS Mutual Authentication
  9. TypeScript教程1
  10. 操作系统:ucore的部分Bug&挑战练习
  11. 201521123019 《Java程序设计》第9周学习总结
  12. 【原】无脑操作:HTML5 + CSS + JavaScript实现比赛排程
  13. [工作积累] Tricks with UE4 PerInstanceRandom
  14. 2018"百度之星"程序设计大赛 - 资格赛hdu6349三原色(最小生成树)
  15. 可长点心吧-sort
  16. jquery-ui 之dialog
  17. WPF Demo18 路由事件
  18. Android的API版本和名称对应关系
  19. java.io.InvalidClassException
  20. POJ 2462 / HDU 1154 Cutting a Polygon

热门文章

  1. ffplay源码编译
  2. T133309 57级返校测试重测-T2-选票统计
  3. Spark实现wordcount的几种方式
  4. echarts 实战 : 恼人的间隔问题
  5. 【思维+大数(高精度)】number 计蒜客 - 45276
  6. SW算法求全局最小割(Stoer-Wagner算法)
  7. python-闭包和装饰器-01-闭包(closure)
  8. vue中v-for
  9. 一个使用android相机的例子,二维码必须用相机
  10. Python延迟初始化(lazy property)