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

一文搞懂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/ target=_blank class=infotextkey>Python等。

6.HTTP、WebSocket与TCP的关系

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


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



Tags:HTTP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
HTTPS网站怎么实现
HTTP协议迁移到HTTPS,以提供更加安全的网络环境并增强用户信任。那么,如何将一个使用HTTP的网站安全升级到HTTPS呢?我们需要理解HTTP和HTTPS的区别。HTTP,即超文本传输协议,是一...【详细内容】
2024-03-27  Search: HTTP  点击:(10)  评论:(0)  加入收藏
HTTPS采用高安全的TLS加密,可为什么Fiddler抓到HTTPS包能解密?
在网络安全领域,加密算法是确保数据传输安全的一部分,但TLS(传输层安全协议)的重要性远不止于此。它构建了一个更高层次的安全体系,涵盖了比简单加密更广泛、更深层次的安全考量...【详细内容】
2024-02-19  Search: HTTP  点击:(50)  评论:(0)  加入收藏
网站如何启用HTTPS安全访问方式?
HTTPS(全称为Hyper Text Transfer Protocol Secure)是一种在计算机网络上进行安全通信的协议,它通过SSL/TLS证书对传输数据进行加密,确保了用户与服务器之间信息交换的私密性和...【详细内容】
2024-01-17  Search: HTTP  点击:(71)  评论:(0)  加入收藏
实现网站HTTPS访问方式
首先我们需要了解HTTPS 并不是一个全新的协议,而是在 HTTP 的基础上,通过 SSL 增加了一层加密协议,从而大大增加了 HTTP 协议的安全性。HTTPS主要由两部分组成:HTTP(超文本传输...【详细内容】
2024-01-10  Search: HTTP  点击:(95)  评论:(0)  加入收藏
HTTP:网络通信的标准语言解析
当我们在浏览器中输入一个网址,瞬间跳转到想要的网页,背后隐藏的是一系列复杂的网络通信过程。在这个过程中,有一种语言扮演着至关重要的角色,它就是HTTP(超文本传输协议)。这不仅...【详细内容】
2023-12-20  Search: HTTP  点击:(68)  评论:(0)  加入收藏
网站付费https证书和免费证书区别
网站付费https证书和免费https证书有什么区别呢?有免费https证书为什么还要选择付费https证书呢?首先,我们来回答“有免费https证书为什么还要选择付费https证书呢?”按道理来说...【详细内容】
2023-12-13  Search: HTTP  点击:(155)  评论:(0)  加入收藏
HTTPS加密协议,你会多少?
什么是HTTPS?HTTPS是超文本传输协议(HTTP)的安全版本。它通过使用安全套接层协议(SSL)或传输层安全协议(TLS)来加密通信内容,确保数据在客户端和服务器之间传输时得到保护。这种加密...【详细内容】
2023-12-08  Search: HTTP  点击:(109)  评论:(0)  加入收藏
五分钟让你搞懂 Http 和 Https 协议的区别是什么?
在互联网世界中,HTTP和HTTPS是我们日常接触最多的两个协议,它们在数据传输、安全性上存在重要区别。 无需花费太多时间,让我们简洁明了地了解HTTP和HTTPS的关键差异,为你揭开网...【详细内容】
2023-12-06  Search: HTTP  点击:(153)  评论:(0)  加入收藏
HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别
HTTP 和 HTTPS 是两种常见的网络协议,它们都是用于在浏览器和服务器之间传输数据的。但是,它们之间也有一些重要的区别,这些区别涉及到数据的安全性、传输性能、使用成本和搜索...【详细内容】
2023-11-27  Search: HTTP  点击:(241)  评论:(0)  加入收藏
Go HTTP GET 请求可以发送 body 吗
前段时间遇到一个朋友,他跟我说他们在开发一个 Go 项目时,遇到了一个争议点,说来也好理解。WEB UI 端选择 GET、POST 类型时,程序是否要区分所传递的值(例如:Body),还是不管是什么类...【详细内容】
2023-11-27  Search: HTTP  点击:(165)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(17)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(34)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(42)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(40)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(72)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(61)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(43)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(157)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(53)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(84)  评论:(0)  加入收藏
站内最新
站内热门
站内头条