您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

一文搞懂HTTP,TCP,UDP,Socket,WebSocket

时间:2022-02-25 11:09:42  来源:简书  作者:糖加一勺丶

 

一、这一大堆关键词之间到底有啥区别?

有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCP和Socket搞混,更加会纠结TCP连接与Socket连接以及HTTP的长/短连接之间到底有啥区别。

其实有了区别才好理解。但在这之前首先得理清一个概念,那就是OSI七层模型,以及所谓的五层模型,四层模型到底是什么鬼?

OSI七层模型是万能的国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连的理想标准,说白了理想和现实的差距就是七层模型和五层模型的差距。具体分类如下表:

七层模型

五层模型

四层模型

 

应用层

 

 

 

表示层

应用层

应用层

 

会话层

 

 

 

传输层

传输层

传输层

 

网络层

网络层

网络层

 

数据链路层

数据链路层

链接层/实体层

 

物理层

物理层

 

 

七层模型的上三层归为应用层即为TCP/IP五层模型,五层模型的下两层归为链接层或者说实体层即为四层模型。
也就是说,所谓的五层或者四层,其实可以认为是方便理解而形成的潜规则,而具体的实施肯定还是得根据七层的标准来。毕竟每一层都有每一层各自的功能,而为了完成每一层的功能,就需要大家遵守相关的规则,也就是协议。所以,对模型分层没必要太在意,五层也好,四层也罢,对于这些看不见摸不着的东西,你只要知道,互联网是分层的,来来去去加起来也就这么几层就够了。

那么,回到第一个问题,这一大堆关键词之间到底有啥区别?

  • 从本质上来区分,HTTP,WebSocket,TCP,UDP,IP都是协议,而TCP/IP是不同协议的组合,你也可以称之为协议栈,协议族,TCP/IP模型等等都可以,你开心就行,反正都是虚无的不能吃的东西,都是为了完成对应功能而制定的统一规则。
    而Socket(套接字)才是真正能操作的东西。Socket的本质是API,是先人对TCP/IP协议族的抽象或者说封装,它就像一个门面,给你一个操作TCP/IP协议的入口,来建立Socket连接。值得一提的是,此Socket是指网络编程下的Socket,而不是Unix中的Socket。虽然概念相似,但是Unix中的Socket不是基于这些乱七八糟的协议,而是基于操作系统本身的文件系统。
  • 从分层上来区分,HTTP,WebSocket是应用层协议,TCP,UDP是传输层协议,IP是网络层协议。

二、这些关键词之间具体有什么联系?

1.TCP和UDP

TCP是面向连接的一种传输控制协议。TCP连接之后,客户端和服务器可以互相发送和接收消息,在客户端或者服务器没有主动断开之前,连接一直存在,故称为长连接。特点:连接有耗时,传输数据无大小限制,准确可靠,先发先至。
UDP是无连接的用户数据报协议,所谓的无连接就是在传输数据之前不需要交换信息,没有握手建立连接的过程,只需要直接将对应的数据发送到指定的地址和端口就行。故UDP的特点是不稳定,速度快,可广播,一般数据包限定64KB之内,先发未必先至。

2.HTTP

HTTP是基于TCP协议的应用,请求时需建立TCP连接,而且请求包中需要包含请求方法,URI,协议版本等信息,请求结束后断开连接,完成一次请求/响应操作。故称为短连接。
而HTTP/1.1中的keep-alive所保持的长连接则是为了优化每次HTTP请求中TCP连接三次握手的麻烦和资源开销,只建立一次TCP连接,多次的在这个通道上完成请求/响应操作。
值得一提的是,服务器无法主动给客户端推送消息。

3.WebSocket

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

4.Socket连接和TCP连接

其实这就是一个文字游戏而已,建立Socket连接需要至少一对Socket(套接字),而创建Socket连接可以指定不同的传输层协议,即TCP或UDP,所以当采用TCP建立连接时,该Socket连接就视为一个TCP连接。而采用UDP则是无连接的。

5.Socket和WebSocket

这两个虽然名字差不多,但却是两个完全不同的概念,就好比JAVAJavaScript一样毫无关系。Socket是一套协议封装后的接口,用于建立Socket连接,而WebSocket虽然是html5的产物,但也不仅仅局限于浏览器的应用程序,许多语言都提供了WebSocket的支持,比如C,C++,Python等。

6.HTTP、WebSocket与TCP的关系

HTTP通信过程属于“你推一下,我走一下”的方式,客户端不发请求则服务器永远无法发送数据给客户端,而WebSocket则在进行第一次HTTP请求之后,其他全部采用TCP通道进行双向通讯。所以,HTTP和WebSocket虽都是基于TCP协议,但是两者属于完全不同的两种通讯方式。


来源:简书 作者:糖加一勺丶



Tags:HTTP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、这一大堆关键词之间到底有啥区别?有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊...【详细内容】
2022-02-25  Tags: HTTP  点击:(0)  评论:(0)  加入收藏
文章目录 HTTPS VS HTTP HTTPS=HTTP+加密+证书+完整性保护 加密 对称加密 非对称加密 混合加密 证书 完整性保护 HTTPS并不能取代HTTP SSL是把双刃剑 HTT...【详细内容】
2022-02-25  Tags: HTTP  点击:(0)  评论:(0)  加入收藏
1、一个简单的 HTTP 服务器在Web应用中,浏览器请求一个URL,服务器就把生成的HTML网页发送给浏览器,而浏览器和服务器之间的传输协议是HTTP,那么接下来我们看下如何用Java来实现...【详细内容】
2022-02-25  Tags: HTTP  点击:(0)  评论:(0)  加入收藏
1xx:信息提示这类状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。100:继续101:切换协议 2xx:成功这类状态代码表明服务器成功地接受了客户端...【详细内容】
2022-02-24  Tags: HTTP  点击:(4)  评论:(0)  加入收藏
上周,微信里有个小伙伴儿给我发来了消息: 随后,我让他截了一个完整的图,我一瞅,是HTTPS啊!没用HTTP!再一瞅,是www.baidu.com啊,不是什么山寨网站!我瞬间明白了些什么,让他点击了一下...【详细内容】
2022-02-23  Tags: HTTP  点击:(8)  评论:(0)  加入收藏
随着DDoS攻击出现,网站被劫持的情况也日愈增多,站长使用HTTPS也越来越多。那么,HTTPS是什么意思?HTTPS对网站防护起到怎样的作用?下面我们一起了解一下。首先,我们看看HTTPS的意思...【详细内容】
2022-02-10  Tags: HTTP  点击:(18)  评论:(0)  加入收藏
一、背景超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之...【详细内容】
2022-02-10  Tags: HTTP  点击:(17)  评论:(0)  加入收藏
HTTP/3 已经来临,这对 Web 性能是件大事。让我们看看它能让网站速度提升多少吧!等等,HTTP/2 难道不好么?它在这几年不是挺火的吗?确实是,但它仍有一些问题。为了解决这些问题,新版...【详细内容】
2022-01-27  Tags: HTTP  点击:(23)  评论:(0)  加入收藏
常见的62种http响应代码整理,当网站出现流量下降,索引下降,Robots检测失败,无法访问时,首先应检查HTTP响应状态代码指示特定HTTP请求是否已成功完成。当流量下降、索引下降、Robo...【详细内容】
2022-01-20  Tags: HTTP  点击:(38)  评论:(0)  加入收藏
1. HTTP Host头攻击从HTTP / 1.1开始,HTTP Host标头是必需的请求标头。它指定客户端要访问的域名。例如,当用户访问 https://example.net/web-security时,其浏览器将组成一个包...【详细内容】
2022-01-10  Tags: HTTP  点击:(41)  评论:(0)  加入收藏
▌简易百科推荐
一、这一大堆关键词之间到底有啥区别?有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊...【详细内容】
2022-02-25  糖加一勺丶  简书  Tags:HTTP   点击:(0)  评论:(0)  加入收藏
文章目录 HTTPS VS HTTP HTTPS=HTTP+加密+证书+完整性保护 加密 对称加密 非对称加密 混合加密 证书 完整性保护 HTTPS并不能取代HTTP SSL是把双刃剑 HTT...【详细内容】
2022-02-25  白鹭鹭鹭    Tags:HTTP协议   点击:(0)  评论:(0)  加入收藏
1xx:信息提示这类状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。100:继续101:切换协议 2xx:成功这类状态代码表明服务器成功地接受了客户端...【详细内容】
2022-02-24  中科三方    Tags:HTTP状态码   点击:(4)  评论:(0)  加入收藏
作者:一天,本文首发于公众号:网络之路博客前言前一篇介绍了OSI参考模型/TCP/IP协议体系每层的作用以及分层的好处,但是对于一个应用数据访问来说,在TCP/IP协议体系中,它不是独立完...【详细内容】
2022-02-23  网络之路博客  微信公众号  Tags:浏览器   点击:(6)  评论:(0)  加入收藏
学习calico vpp包括: 1. vpp dapaplane架构。 2. 搭建k8s vpp dataplane环境,实践一下。 vpp VPP(Vector Packet Processor)是一个高性能、开源的用户空间网络数据平面,用C语言编...【详细内容】
2022-02-16  LStack朗澈云    Tags:calico   点击:(13)  评论:(0)  加入收藏
一、TrueNAS介绍 TrueNAS是一款开源网络存储系统,前身是FreeNAS系统,其目前有三个版本,分别是TrueNAS® CORE、TrueNAS® ENTERPRISE、TrueNAS® SCALE;本文介绍的是Tr...【详细内容】
2022-02-11  王忘杰    Tags:TrueNAS   点击:(26)  评论:(0)  加入收藏
前段时间有个朋友告诉我,重启路由器就可以换IP了。开玩笑,作为一个经常和ip打交道的互联网民工,会不知道这种常识吗?(知道个P啊)你知道吗?重启路由器可以改变IP地址!但是这不妨碍...【详细内容】
2022-02-10  神龙IP    Tags:路由器   点击:(26)  评论:(0)  加入收藏
什么是FIFO?FIFO一般用于不同时钟域之间的数据传输,也常用来实现不同位宽的接口的数据匹配。 “不同时钟域间传输数据”时,FIFO类似缓存,根据时钟A,向FIFO中写入数据,根据时钟B,读...【详细内容】
2022-02-10  争取个有趣的灵魂    Tags:FIFO   点击:(16)  评论:(0)  加入收藏
一、背景超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之...【详细内容】
2022-02-10  程序员阿龙    Tags:https   点击:(17)  评论:(0)  加入收藏
当我们打开浏览器,要访问一个网站或者一个ftp服务器的时候,一定要输入一串字符串, 比如:https://blog.csdn.net/或者:ftp://192.168.0.111/这样我们就可以得到一个html格式的页面...【详细内容】
2022-02-10  一口Linux    Tags:URI   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条