搬砖:理解HTTP,TCP,UDP,Socket,WebSocket

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

https://blog.csdn.net/jek123456/article/details/60746835

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

有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把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

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

 

6.HTTP、WebSocket与TCP的关系

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

 

能比较的都比较了,附上一张关系图强化理解。其实,如果不是专攻网络方面,作为一个程序猿,了解了不同的通讯方式及其对应的优缺点,就可以确定其应用的场景。而这些,就已经基本够用了。

 

HTTP-WebSocket-TCP关系图

-END-

网络协议、socketwebSocket 一、网络协议 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 1、OSI七层协议 OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,从上到下分别是 7应用层6表示层5 会话层 4传输层3 网络层 2数据链路层1物理层。 下面的图表显示不同的协议在最初OSI模型中的位置: 7 应用层 例如HTTP、SMTP... 阅读详情

相关推荐

一文搞懂SocketTCPUDPHTTPWebSocket的关系区别

的视角,带你快速理清这些网络基础概念的本质联系。无论你是后端开发者、前端工程师还是运维人员,理解这些概念都将帮助你更高效地解决网络问题!:传统HTTP/1.0每次请求后断开(HTTP/1.1支持长连接)(如OSI七层模型或TCP/IP四层模型)。:每次请求独立(通过Cookie/Session维持状态):应用层协议,基于TCP(端口同HTTP,可绕过防火墙):应用层协议,基于TCP(默认端口80/443):一次握手后持续连接(避免HTTP频繁握手):适合实时应用(如聊天室、股票行情)

qq_28930623的博客 1506

WebSocket Socket TCP/UDP

WebSocket Socket通信源码例子,TCP/UDP都有,适合网络通信入门的练习学习,有一个在线的聊天室系统

一文说清楚httptcpsocketwebsocket区别

一文说清楚httptcpsocketwebsocket区别

诺浅的专栏 1万+

SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现

SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现。websocket_study.rar 为springMVC版本的socket实现 websocket02.rar 里面包含tomcat的websocket实现+java socket双向通信实现+java udp双向通信实现

1小时教你理解HTTPTCPUDPSocketWebSocket

相关阅读:厉害了Word哥!阿里巴巴73款开源产品最全总结全景图文/Poker_Facer原文:http://www.jianshu.com//p/42260a2575f...

emprere的博客 1059

2018-03-13 HTTP Socket TCP学习

协议学习: https://www.jianshu.com/p/a5410f895d6b https://www.jianshu.com/p/42260a2575f8 实际例子: nano实际例子,和项目很相似 https://www.jianshu.com/p/ef6279a429d4 转载于:https://www.cnblogs.com/buder-cp/p/8563448....

weixin_30575309的博客 402

学习笔记0718----代码管理平台

代码管理平台1. 代码管理平台2. svn介绍2.1 svn安装配置2.2 linux上连接svn2.3 windows上连接svn 1. 代码管理平台 版本控制,记录若干文件内容变化,以便将来查阅特定版本修订情况 版本管理工具发展简史,cvs svn  git 参考http://luckypoem14.github.io/test/2012/04/24/scm-history/ svn全...

嘻哈记的运维学习之路 999

HTTPTCPUDPWebsocket

文章目录1、TCP协议2、UDP协议3、Websocket4、TCPUDPWebSocket区别5、HTTP1、http协议介绍2、httphttps区别3、http版本区别4、http无状态5、查看接口使用的http版本6、长连接、短连接、长轮询、短轮询区别参考 1、TCP协议 位于传输层, 提供可靠的字节流服务,传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。字节流服务(Byte Stream Service) 是指, 为了方便传输, 将大块数据分割成以报文段(segment)

极客 2599

一文搞懂HTTPTCPUDPSocketWebSocket

转载:一文搞懂HTTPTCPUDPSocketWebSocket-技术教程-图南导航 一、这一大堆关键词之间到底有啥区别? 有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCPSocket搞混,更加会纠结TCP连接Socket连接以及HTTP的长/短连接之间到底有啥区别。 其实有了区别才好理解。但在这之前首先得理清一个概念,那就是OSI七层模型,以及所谓的五层模型,四层模型到底是什么

beenles的博客 661

【Linux网络】TCP UDP socket HTTP webSocket之间的区别

本文首先讲述了OSI和TCP/IP模型,重点讲述了TCP UDP socket HTTP webSocket之间的区别,介绍了HTTPWebSocket协议。

m0_63198468的博客 4385

C语言网络编程socket通信:TCPUDPHTTPWebSocket深度解析

本文深入探讨了C语言网络编程socket通信的核心技术,重点解析了TCPUDPHTTPWebSocket协议的应用。文章首先阐述了网络编程的重要性,即实现远程通信和构建网络应用。随后详细介绍了TCP通信的可靠连接特性,提供了完整的TCP服务器/客户端代码示例,涵盖socket创建、绑定、监听、连接及数据传输等关键步骤。在UDP通信部分,则突出了其无连接特性,并给出UDP服务器/客户端的实现代码。文章还特别强调了网络编程中的常见问题及避坑指南,包括连接失败、数据收发异常等情况的处理。通过理论讲解代码

编程世界如山海,探索不止。 9971

HTTPTCPSocketWebSocket的区别和联系

目录一、OSI网络七层模型二、TCP连接三、HTTP连接四、 WebSocket五、Socket六、SOCKET连接HTTP连接 七、SOCKET连接TCP/IP连接八、WebSocketSocket的关系九、WebSocketHTTP的关系 是 的缩写,译为“开放式系统互联”。 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。但是, 只是存在于概念和理论上的一种模型,它的缺点是分层太多,增加了网络工作的复杂性,所以没有大规模应用。后来人

林在闪闪发光的博客 2543

全面理解WebSocketSocketTCPHTTP的关系及区别

全面理解WebSocketSocketTCPHTTP的关系及区别 转:http://www.webzsky.com/?p=1388 1.什么是WebSocket及原理 WebSocket是HTML5中新协议、新API。 WebSocket从满足基于Web的日益增长的实时通信需求应运而生,解决了客户端发起多个Http请求到服务器资源浏览器必须要在经过长时间的轮询问题,实现里多路复用,是全双工、双向、单套接字连接,在WebSocket协议下服务器和客户端可以同时发送信息。 原理: WebSock

corleone_4ever的博客 4303

TCP UDP socket http webSocket 之间的关系

阅读目录OSI & TCP/IP 模型几者之间的关系HTTPSocketWebSocketwebSocket 概念webSocket 优点Websocket 的作用ajax轮询long pollWebsocketTCP三次握手 OSI & TCP/IP 模型 要弄清 tcp udp socket http websocket 之间的关系,首先要知道经典的OSI七层模型,之对应的是TCP/IP的四层模型。 从图中可以看出,tcp udp工作在传输层,http websocket 工作在应

wgchen 3509

WebSocketSocketTCPHTTP的关系及区别

Websocket:同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的,解决了服务器客户端全双工通信的问题,包含两部分:一部分是“握手”,一部分是“数据传输”。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。Socket是对TCP/IP协议的封装,像创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCPUDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

qq_33588386的博客 1569

Socket /UDP /TCP /Websocket /HTTP区别和联系

UDP:轻量、高效,适合实时性要求高的场景。TCP:可靠、稳定,适合数据完整性要求高的场景。WebSocket:基于 TCP 的长连接,适合实时双向通信(如 Web 应用)。Socket:通用编程接口,可基于 UDPTCP 实现网络通信。

unicornnnqz的博客 954

HTTPTCPUDPSocketWebsocket之间的联系区别

HTTPTCPUDPSocketWebsocket之间的联系区别 TCP/IP协议(Transmission Control Protocol/InternetProtocol): 网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。 通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP

纸上得来终觉浅 1565

网络协议中HTTP,TCP,UDP,Socket,WebSocket的优缺点/区别

先说一下网络的层级:由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层 1、TCPUDP TCP:是面向连接的一种传输控制协议。属于传输层协议。TCP连接之后,客户端和服务器可以互相发送和接收消息,在客户端或者服务器没有主动断开之前,连接一直存在属于长连接。 优点:安全、传输数据无大小限制、准确可靠,先发先至 缺点:效率低,不能做离线任务、连接有耗时 UDP:是面向非连接的用户数据报协议。属于传输层协议。所谓的无连接就是在传输数据之前不需要交换信息,没有握手建立连接.

办公研究所 1274
上一篇: 搬砖:TCP、UDP、HTTP、SOCKET、WebSocket之间的区别
下一篇: 搬砖:socket网络通讯 TCP IP UDP HTTP SOCKET
nedwons
博客等级 码龄9年 311粉丝 572原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值