懵逼的HTTP、Socket与TCP

简介: HTTP、Socket、TCP这三个概念在网络开发中经常被提及,也是比较容易被混淆的概念,这三者在TCP/IP协议族中的位置关系:三者的位置关系.png其中,HTTP是应用层的协议,也是开发中最常用的一个网络协议;TCP是传输层的协议,大学学过计算机网络的都知道,该层还有一个UDP协议;而Socket是从传输层上抽象出来的,采用IP地址加端口号的形式来标识,并不是传统意义上的网络协议,所以从协议簇来说,三者还是很好区分的。

HTTP、Socket、TCP这三个概念在网络开发中经常被提及,也是比较容易被混淆的概念,这三者在TCP/IP协议族中的位置关系:

img_c0d6d53ce4581b68b838c7453b96b8c7.png
三者的位置关系.png

其中,HTTP是应用层的协议,也是开发中最常用的一个网络协议;TCP是传输层的协议,大学学过计算机网络的都知道,该层还有一个UDP协议;而Socket是从传输层上抽象出来的,采用IP地址加端口号的形式来标识,并不是传统意义上的网络协议,所以从协议簇来说,三者还是很好区分的。那么HTTP连接、TCP连接、Socket连接有什么区别?

1、TCP连接与HTTP连接

在网络分层中,HTTP协议是基于TCP协议的,客户端向服务端发送一个HTTP请求时,需要先与服务端建立TCP连接,也就是经典的三次握手(通常对用户来说是很难察觉的),握手成功以后才能进行数据交互。HTTP是基于请求响应模式且无状态的协议,1.1之前只支持短连接,也就是请求响应一次以后连接中断,下次请求需要重新进行TCP连接,而1.1之后支持持长连接,即进行一次TCP连接以后,客户端可以发送多次的HTTP请求给服务器端。

小结:HTTP基于TCP

2、TCP连接与Socket连接

Socket是应用层与传输层之间的同一个抽象层,它是一套接口,所以Socket连接可以基于TCP连接,也有可能基于UDP。我们知道,TCP协议是可靠的,UDP协议是不可靠的,那么基于TCP协议的Socket连接同样是可靠的;基于UDP协议的Socket连接是不可靠的,大多数的即时通讯工具都是基于后者实现的。

小结:Socket可基于TCP,亦可UDP

3、HTTP连接与Socket连接

HTTP 1.1之前是短连接,基于TCP协议的Socket连接是长连接,虽然HTTP1.1开始支持长连接,但不像Socket连接一旦建立,除非一方主动断开,否则连接状态一直保持。(网友ttdevs向我补充:基于TCP的Socket可能是短连接,也可能是长连接,长连接可能需要通过心跳等一些手段来维持,各自有不同的应用场景。而不是简单的"基于TCP协议的Socket连接是长连接"。后在网上查找了相关资料,有这么一句:"在TCP连接保持期间,如果没有数据包发送,定时发送数据包(心跳),以维持连接状态。"因为我自己没做过这块的具体工作,如果有大神可以详解,欢迎指正! )

HTTP连接中,只有客户端发起请求后服务端才会响应,服务端是无法主动向客户端发消息的。而Socket连接中,通信双方发送消息并没有先后的限制,通信双方中的任何一方可以随时向另一方发送消息。

4、HTTP Or Socket?

用HTTP:双方不需要时刻保持连接,客户端只是通过一个个HTTP请求来获取服务器的特定资源。如通过get/post请求获取网页、图片、JSON或者XML数据,还有常用的文件上传、小文件下载等。

用Socket:大部分即时通讯应用(知乎上说QQ有部分功能是基于TCP,因为TCP每次都需要三次握手,虽然可靠但是网络不好的时候就惨了)、聊天室(基于UDP+消息广播的方式)、大文件传输等。

目录
相关文章
|
2月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
4月前
|
网络协议 API
区分TCP/IP、HTTP、Socket三者的差异
HTTP关注于应用层的协议规范,而Socket关注于为应用程序提供编程中的网络功能,这些功能本身是建立在底层的TCP/IP协议之上;HTTP是更高层次的抽象,定义了如何包装数据,而TCP/IP定义了如何传送数据,Socket则是两者之间在程序中的桥梁,负责实现细节。在实际应用中,通常HTTP通信也是通过Socket来完成,因为HTTP仅是具体内容的封装形式,而Socket则是传送方式的实现形式。
479 16
|
4月前
|
网络协议 安全 API
WebSocket、Socket、TCP 和 HTTP 的差别与应用场景
WebSocket、Socket、TCP 和 HTTP 是网络通信中的四大“使者”,各具特色:HTTP 适合短时请求,TCP 稳定可靠,Socket 灵活定制,WebSocket 实现实时双向通信。本文用通俗语言解析它们的区别与应用场景,助你为项目选择最合适的通信方式。
1921 3
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
245 13
|
网络协议 前端开发 API
HTTP 和 TCP 协议的应用场景有哪些不同
【10月更文挑战第25天】HTTP(超文本传输协议)和 TCP(传输控制协议)处于网络协议栈的不同层次,各自具有独特的功能和特点,因此它们的应用场景也存在明显的差异。
|
网络协议
http 与 tcp 的关系
【10月更文挑战第25天】总的来说,HTTP 和 TCP 是网络通信中不可或缺的两个协议,它们共同为网络应用提供了可靠的数据传输和交换服务。理解它们之间的关系对于开发和维护网络应用具有重要的意义。
|
网络协议 API 数据格式
HTTP 和 TCP 协议的主要区别
【10月更文挑战第25天】HTTP 和 TCP 在网络通信中扮演着不同的角色,各自具有独特的功能和特点,它们相互配合,共同为实现网络应用的各种需求提供了基础支持。
|
网络协议 Linux 网络性能优化
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
461 1
|
前端开发 C# 开发者
WPF开发者必读:MVVM模式实战,轻松构建可维护的应用程序,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离关注点,提高了代码的可维护性和可扩展性。本文详细介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定与逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种模式,开发者可以更高效地构建桌面应用程序。希望本文能帮助你在WPF开发中更好地应用MVVM模式。
827 1
|
网络协议
网络协议概览:HTTP、UDP、TCP与IP
理解这些基本的网络协议对于任何网络专业人员都是至关重要的,它们不仅是网络通信的基础,也是构建更复杂网络服务和应用的基石。网络技术的不断发展可能会带来新的协议和标准,但这些基本协议的核心概念和原理将继续是理解和创新网络技术的关键。
663 0
下一篇
oss云网关配置