请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问tcp上传 应该比http协议上传的效率要高?

最近把大部分课听完了, 请问tcp上传 应该比http协议上传的效率要高, HTTP是一个无状态的协议,客户端和服务端请求长时间无响应会中断请求, 为何课程仍然采用HTTP协议上传做秒传, 难不成百度云盘 pc 端 仍然采用HTTP上传 (web端采用HTTP, 所以他们推荐采用app 和 pc端软件); 最近腾讯直播更极端一点采用udp协议传输,tcp协议验证, 效率更高!! 这是我不明白的地方, 请老师给我讲解一下!!! HTTP协议上传GB级别的文件 尤其让人头疼

正在回答 回答被采纳积分+3

1回答

xiaomo 2019-11-25 20:21:35

同学你好,

(1)http本身是基于tcp之上的一种应用层协议,所以说tcp上传效率要比http高不太准确。http与tcp, 都是要经过三次握手之后才开始传输数据的;http对比tcp做的工作,简单来说它另外定义传输数据的规范,比如会按照规则来解析header,body。

(2)http的确有无状态短链接的特点,不过也有keep-alive的特性,同时在使用过程中也可以升级为websocket这种全双工通讯协议。

(3)秒传的原理是通过文件hash来提前判断文件是否已经上传过,是的话则直接完成传输(往数据库写入文件记录,但是没有发生实际的数据传输), 所以这个和用什么协议没太大关系。

(4)上传大文件,目前都是采用分块上传的方式,把文件切成多份,发起多次传输,可以有效的提高传输效率和降低重传成本。

(5)关于"客户端和服务端请求长时间无响应会中断请求", 这应该是大多数协议都是会发生的现象,主要是看协议的参数设置,比如超过多久对方没有响应则认为链接已断开。异常断开的常见后果就是文件需要重传,所以这时分块又可以发挥作用了。

(6)在这种文件传输场景,http协议不是导致传输效率低的原因,目前各大共有云服务(比如阿里云,AWS的文件传输都是支持基于http协议的)。而对于即时通讯/游戏领域,因为数据交互频繁,推荐用支持长连接的协议则是好的。而即时通讯也有用udp的常用场景,因为udp没有消息ack机制,这方面可以减轻通讯负担。

1 回复 有任何疑惑可以回复我~
  • 提问者 慕粉1494638 #1
    请问你做115网盘 仍然是http协议上传的么
    回复 有任何疑惑可以回复我~ 2019-11-26 08:22:40
  • xiaomo 回复 提问者 慕粉1494638 #2
    是的。后来混合了阿里云oss,也是http协议。oss具体api文档也可以参考这里:https://help.aliyun.com/document_detail/31978.html?spm=a2c4g.11186623.6.1473.84d069cb7B17BZ
    回复 有任何疑惑可以回复我~ 2019-11-26 08:35:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信