TCP,HTTP,UDP,Socket,WebSocket区别

在说各自区别之前,先看一下这个图:

这里讲互联网请求与相应分成了四层(万维网理想状态分七层,很多博客划分为五层,这里链路层将物理层一并合并统称为链路层)、其实无论是划分为多少层,每一层都有每一层各自的功能,而为了完成每一层的功能,就需要大家遵守相关的规则,也就是协议。所以,对模型分层没必要太在意,五层也好,四层也罢,对于这些看不见摸不着的东西,你只要知道,互联网是分层的,来来去去加起来也就这么几层就够了。

好,接下来回答一下主题:

TCP,UDP属于第三层(从下往上数),改成被称为运输层,作为数据的传输者,可以理解为高速公路的卡车

这里介绍一下TCP和UDP的区别

TCP:是一种面向连接的(三次握手),可靠的(发送过去的数据对方不down机,一定会接受到,例如发送一串数字【1,2,3,4,5】,接收时有可能变成两次【1,2】和【2,4,5】,或者变成任意接收方式,协议栈只保证接收顺序正确)、基于字节流的传输层通信协议,且数据流之间无边界

UDP:是无连接的,速度相当快,面向分组的,分组传输过去的数据要么完全成功要么完全失败,类似关系型数据库的事务

HTTP:属于应用层协议,基于TCP协议,是一个无状态的,默认为短连接,当然也可以实现长连接;相对于TCP增加了请求头的信息

Socket:对协议的一种操作封装,它通过一系列API来访问操作系统的网络协议栈,从而建立服务器与客户端连接,发送或接收数据,它只是一种连接模式,不是协议

WebSocket

1,它跟Socket完全两个东西,就像Java与JavaScript的关系是一样的;

2,WebSocket虽然是Html5的产物,但也不仅仅局限于浏览器的应用程序,许多语言都提供了WebSocket的支持,比如C,C++,Python等。

3,也是一种协议也是基于TCP之上,具体流程是WebSocket通过HTTP先发送一个标记了 Upgrade 的请求,服务端解析后开始建立TCP连接,省去了HTTP长连接每次请求都要上传header的冗余,可以理解为WebSocket是HTTP的优化,但WebSocket不仅仅在Web应用程序上得到支持

猜你喜欢

转载自my.oschina.net/lovexin/blog/1786446
今日推荐