🌝大家其实都有听过HTTP、HTTPS、TCP、UDP、Websocket,有部分小伙伴只知道概念或者对其有一些模糊的认知,下面我就带大家了解一下。
概念
HTTP
HTTP全称:Hypertext Transfer Protocol(超文本传输协议)
🍊HTTP是一种用于通过 Internet 传输数据(通常是网页)的协议。
🍊HTTP运行在应用层,使用IP协议在网络上传输数据。客户端(例如网络浏览器)向服务器(例如网络服务器)发送对特定资源(例如网页)的请求,并且服务器发回包含所请求资源的响应,如果该资源无法找到,则会响应错误消息。
🍊HTTP 请求由一个方法(例如 GET、POST)、一个指定资源位置的 URI(统一资源标识符)以及可选的标头和请求主体组成。HTTP 响应由状态代码(例如 200 OK、404 Not Found)、提供有关资源和响应信息的标头以及包含所请求资源或错误消息的响应主体组成。
🍊HTTP 是一种无状态协议,这意味着服务器不会保留有关同一客户端先前请求的任何信息。来自客户端的每个请求都被视为单独且独立的请求,并且服务器使用单独的响应来响应每个请求。
🍊HTTP 广泛用于通过 Internet 传输数据,Web 浏览器使用它从 Web 服务器请求网页,Web 服务器将请求的网页发送回 Web 浏览器。
HTTPS
HTTPS全称:Hypertext Transfer Protocol Secure(安全超文本传输协议)
🍊HTTPS是 HTTP 的扩展,它添加了加密以保护传输数据的隐私和安全。HTTPS 广泛用于网络上的安全交易,例如登录在线银行帐户或进行在线购买。
🍊当客户端通过 HTTPS 连接到服务器时,客户端和服务器使用 SSL/TLS 加密建立安全会话。这种加密保护正在传输的数据不被第三方参与者拦截或修改。
🍊在 HTTPS 中,客户端和服务器首先进行“握手”以建立安全会话。在握手过程中,客户端和服务器商定加密方法并生成一个共享密钥,该密钥将用于加密它们之间传输的所有后续数据。握手后,客户端和服务器可以通过安全会话传输数据,所有数据都使用共享密钥加密和解密。
🍊HTTPS 请求和响应类似于 HTTP 请求和响应,但增加了加密。该请求包含一个方法(例如 GET、POST)、一个指定资源位置的 URI(统一资源标识符),以及可能包含敏感信息的标头和请求主体。响应包含状态代码(例如 200 OK、404 Not Found)、提供有关资源和响应信息的标头以及包含所请求资源或错误消息的响应主体。
🍊HTTP 和 HTTPS 之间的主要区别之一是 HTTP 不安全,所有通过 HTTP 传输的数据都可以很容易地被拦截和读取,而 HTTPS 为传输的数据提供加密和安全性。这就是为什么 HTTPS 通常用于 Web 上的安全交易。
TCP
TCP全称:Transmission Control Protocol(传输控制协议)
🍊TCP是一种传输层协议,用于确保通过 Internet 可靠有序地传输数据。它是互联网协议 (IP) 套件中使用的主要协议之一。
🍊TCP 通过在两个设备(例如客户端和服务器)之间建立虚拟连接来提供可靠的数据传输。当客户端要向服务器发送数据时,它会与服务器建立 TCP 连接并开始传输数据。服务器接收数据并确认收到数据。如果客户端没有收到确认,它会重新传输数据,直到收到来自服务器的确认。
🍊TCP 还提供流量控制,确保客户端传输数据的速度不会超过服务器接收数据的速度。它还提供拥塞控制,减少网络拥塞时传输的数据量,防止网络拥塞影响其他用户的服务质量。
🍊TCP 将数据分割成更小的数据包,称为“段”,并通过网络分别传输每个段。这些段在接收端重新组合成原始数据。此过程可确保数据以与传输时相同的顺序到达接收端,即使数据段采用不同的网络路径也是如此。
🍊TCP是面向连接的协议,这意味着在传输数据之前,必须在两个设备之间建立虚拟连接。此连接一直保持到数据传输完成,数据传输完毕后连接终止。
🍊TCP 广泛用于需要可靠数据传输的应用程序,例如电子邮件、文件传输和 Web 浏览。许多其他协议也使用它,例如 HTTP 和 FTP,它们依赖 TCP 提供可靠的数据传输。
UDP
UDP全称:Transmission Control Protocol(用户数据报协议)
🍊UDP是一种传输层协议,用于在 Internet 上传输数据。它是互联网协议 (IP) 套件中使用的主要协议之一。
🍊与 TCP 不同,UDP 是一种无连接协议,这意味着在传输和接收数据的设备之间没有建立虚拟连接。相反,每个 UDP 数据报都是单独和独立发送的,没有任何交付或排序保证。
🍊UDP 用于不需要可靠数据传递但需要快速高效数据传输的应用程序。例如,UDP 通常用于流式视频和音频、在线游戏和 IP 语音 (VoIP) 应用程序。
🍊在 UDP 中,要传输的数据被分成更小的数据包,称为“数据报”。每个数据报都是单独和独立传输的,没有任何交付或排序保证。接收设备负责将数据报重新组装成原始数据。
🍊与 TCP 相比,UDP 提供更快、更高效的数据传输,因为没有用于建立和维护虚拟连接的开销,也没有用于错误检查和重新传输丢失或损坏数据的开销。
🍊但是,由于缺乏可靠的数据传递,UDP 可能更适合于容忍某些数据丢失的应用程序,例如视频和音频流,而不是需要可靠数据传递的应用程序,例如文件传输和电子邮件。
Websocket
🍊WebSocket 是一种通信协议,用于通过 Internet 在客户端和服务器之间进行实时双向通信。它支持全双工通信,允许客户端和服务器同时发送和接收数据。
🍊WebSockets 被设计为在与 HTTP(端口 80)和 HTTPS(端口 443)相同的端口上工作,并且使用与 HTTP 和 HTTPS 相同的底层传输层,即传输控制协议 (TCP)。
🍊WebSockets 与传统 HTTP 通信的主要区别在于,HTTP 是一种请求-响应协议,客户端发送请求,服务器发送响应,而 WebSockets 允许客户端和服务器之间进行连续的双向通信。这意味着服务器无需客户端请求就可以向客户端推送数据,客户端无需等待响应即可向服务器发送数据。
🍊WebSockets 广泛用于在线游戏、聊天系统和股市数据更新等实时应用程序,其中低延迟和实时数据更新很重要。它们还用于需要实时通信的基于 Web 的应用程序,例如在线协作工具和交互式仪表板。
🍊WebSockets 为 Internet 上的实时应用程序提供了一种快速、高效和低延迟的通信解决方案。
通信流程
HTTP
HTTP 在 Internet 协议 (IP) 套件的应用层上运行,它使用底层传输层协议(TCP 或 UDP)来传输数据。
以下是 HTTP 通信的工作流程:
客户端(例如网络浏览器)向服务器(例如网络服务器)发送针对特定资源(例如网页或图像)的 HTTP 请求。该请求包含有关所需资源和客户端功能的信息。
服务器接收请求并处理它。如果所请求的资源可用,则服务器会向客户端返回 HTTP 响应以及所请求的资源。响应包括有关资源的信息以及请求的状态。
客户端接收来自服务器的响应并处理它。如果响应成功,则客户端向用户显示请求的资源。
HTTP 使用请求-响应模型,客户端向服务器发送请求,服务器返回响应。客户端和服务器使用一系列消息进行通信,其中每条消息都包含一个标头和一个有效负载。标头包含有关消息的信息,例如请求或响应的类型、有效负载的格式以及请求的状态。有效负载包含正在传输的实际数据。
HTTPS
HTTPS 在互联网协议 (IP) 套件的应用层上运行,它使用底层传输层协议(TCP 或 UDP)来传输数据。
以下是 HTTPS 通信的工作流程:
客户端(例如网络浏览器)向服务器(例如网络服务器)发送 HTTPS 请求以获取特定资源(例如网页或图像)。该请求包含有关所需资源和客户端功能的信息。
服务器接收请求并使用 SSL(安全套接字层)或 TLS(安全传输层)建立安全连接,这是用于安全 Internet 通信的标准加密技术。
一旦建立了安全连接,客户端和服务器就会交换信息以相互验证。客户端验证服务器是否可信,服务器验证客户端是否有权访问所请求的资源。
身份验证过程完成后,客户端和服务器使用安全连接传输实际数据,例如请求的资源或用户输入的表单数据。
服务器接收请求并处理它。如果请求的资源可用,服务器会向客户端返回 HTTPS 响应以及请求的资源。响应包括有关资源的信息以及请求的状态。
客户端接收来自服务器的响应并处理它。如果响应成功,则客户端向用户显示请求的资源。
HTTP 和 HTTPS 的主要区别在于后者提供加密和身份验证以保护传输过程中的敏感信息。当客户端向服务器发送 HTTPS 请求时,数据会使用安全加密算法进行加密,只有预期的接收者才能对其进行解码。此外,服务器的身份使用数字证书进行验证,这有助于防止中间人攻击。
TCP
TCP(传输控制协议)是一种传输层协议,可在网络上不同主机上运行的应用程序之间提供可靠、有序的数据传输。它是 Internet 上最常用的协议之一,许多 Internet 上最受欢迎的服务都使用它,例如万维网、电子邮件和文件传输。
以下是 TCP 通信的工作流程:
客户端应用程序通过向服务器应用程序发送包含 SYN(同步)标志的 TCP 段来启动 TCP 连接。这称为“SYN 请求”。
服务器应用程序接收 SYN 请求并发回一个设置了 SYN 和 ACK(确认)标志的 TCP 段。这称为“SYN-ACK 响应”。
客户端应用程序收到 SYN-ACK 响应并发回设置了 ACK 标志的 TCP 段。这样就完成了建立 TCP 连接的三次握手。
一旦建立了 TCP 连接,客户端和服务器应用程序就可以使用 TCP 段相互发送数据。每个段包含一部分数据,以及序列号和确认号,TCP 协议使用它们来提供可靠的数据传送。
TCP 协议通过使用多种技术提供可靠的数据传输,例如重新传输丢失或损坏的段、重新排序乱序段以及检测和处理重复段。
当客户端或服务器应用程序想要结束 TCP 连接时,它会发送一个设置了 FIN(完成)标志的 TCP 段。另一个应用程序收到 FIN 并发回一个设置了 ACK 标志的 TCP 段。这将终止 TCP 连接。
TCP 的主要优点是它的可靠性。TCP 确保数据按发送顺序传送给接收者,它检测并重新传输任何丢失或损坏的段。这使它成为需要可靠、按顺序传输数据的应用程序的理想协议,例如电子邮件、文件传输和 Web 浏览。
UDP
UDP(用户数据报协议)是一种传输层协议,可在网络上不同主机上运行的应用程序之间提供简单、不可靠的数据传输。与提供可靠、有序的数据传送的 TCP 不同,UDP 是无连接的,不保证将数据传送到接收方。
以下是 UDP 通信的工作流程:
客户端应用程序向服务器应用程序发送 UDP 数据报。UDP 数据报包含客户端要发送的部分数据,以及服务器的目标 IP 地址和端口号。
UDP 数据报通过网络传输到服务器,没有任何交付保证。UDP 协议不提供任何错误检测或纠正机制,因此数据报有可能丢失、重复或乱序传送。
服务器应用程序接收 UDP 数据报并处理其中包含的数据。
不需要像 TCP 那样在客户端和服务器应用程序之间建立专用连接。客户端可以向任何正在侦听正确 IP 地址和端口号的服务器发送任意数量的 UDP 数据报,而无需显式设置或断开连接。
UDP 的主要优点是它的简单性和速度。因为 UDP 不提供任何可靠性保证,所以它比 TCP 更快并且需要更少的开销,而 TCP 必须实施机制来确保数据的可靠传送。这使得 UDP 成为需要快速发送大量数据的应用程序的不错选择,例如在线游戏、视频会议和流媒体。
⚠️注意:TCP 是一种可靠的、面向连接的协议,这意味着在客户端和服务器应用程序之间建立专用连接,所有数据都通过该连接传输。这与不可靠的无连接协议 UDP(用户数据报协议)形成对比,后者不保证数据的可靠传送。
Websocket
WebSocket 是一种通信协议,它通过单个长期连接在客户端和服务器之间提供全双工通信。WebSocket 协议旨在解决传统 HTTP 请求-响应模型的局限性,该模型需要为每个新请求建立一个新连接。
以下是 WebSocket 通信的工作流程:
客户端通过向服务器发送 WebSocket 升级请求来启动连接,通常是通过 HTTP 连接。升级请求包含一个特殊的标头,表明客户端想要升级到 WebSocket 通信。
服务器响应升级请求,状态码为101,表示连接已成功升级为WebSocket通信。
从这一点开始,连接以全双工模式运行,这意味着客户端和服务器都可以随时向对方发送数据。WebSocket 协议提供了一种基于消息的通信模型,其中数据作为消息传输,而不是作为字节流传输。
消息使用紧凑的二进制格式传输,这比传统 HTTP 或 TCP 使用的基于文本的格式更有效。WebSocket 协议提供了一种机制,可以自动将大消息分成较小的数据包,并在另一端将数据包重新组合成原始消息。
WebSocket 连接一直保持打开状态,直到客户端或服务器决定关闭它。关闭连接是一个简单的两步过程,包括发送关闭消息,然后等待另一端确认关闭消息。
WebSocket 的主要优点是它能够在客户端和服务器之间提供实时的双向通信,而无需频繁建立和断开连接。这使得 WebSocket 成为需要实时更新的应用程序的理想选择,例如在线游戏、股票行情和聊天应用程序。
⚠️注意:由于 WebSocket 协议是一项相对较新的技术,它还没有像传统的 HTTP 和 TCP 那样得到广泛支持,可能需要在某些服务器和防火墙上进行特殊配置才能正常工作。
异同点
相似之处:
- 它们都是用于在 Internet 上传输数据的通信协议。
- 它们都位于 IP(互联网协议)之上,用于网络传输数据。
区别:
HTTP 与 HTTPS:HTTP 是明文通信协议,而 HTTPS 是使用 SSL/TLS 加密的加密版本。
TCP 与 UDP:TCP 是一种面向连接的协议,可提供可靠、有序的数据传输,而 UDP 是一种无连接协议,速度优先于可靠性。
HTTP、HTTPS、TCP 和 UDP:所有这些协议都使用 IP 在互联网上传输数据,但它们的数据传输方法不同。HTTP和HTTPS用于传输网页和其他类型的数据,TCP用于可靠的数据传输,UDP用于快速高效的数据传输。
WebSockets 是一种基于单个 TCP 连接的持久性全双工通信协议,而 HTTP 和 HTTPS 用于短期请求/响应事务。
所有这些协议都扮演着不同的角色,并用于不同的目的。为您的应用程序的特定要求选择正确的协议以确保高效和可靠的通信非常重要。
应用领域(常用)
下面列举只是许多领域中的几个例子
HTTP
Web 浏览:Web 浏览器使用 HTTP 从 Web 服务器检索和显示网页。
Web 开发:Web 开发人员使用 HTTP 来创建动态 Web 应用程序和网站。
电子商务:电子商务站点使用 HTTP 在客户端和服务器之间传输有关产品、价格和订单的数据。
API(应用程序编程接口):HTTP 用于创建使应用程序能够相互通信和交换数据的 API。
云计算:云计算服务使用 HTTP 来提供对远程计算资源的访问。
物联网 (IoT):IoT 设备使用 HTTP 通过互联网传输数据,例如传感器读数和控制命令。
移动应用程序:移动应用程序使用 HTTP 从服务器检索数据并更新客户端上的信息。
社交媒体:社交媒体平台使用 HTTP 在客户端和服务器之间传输有关用户、帖子和交互的数据。
HTTPS
安全网页浏览:网页浏览器使用 HTTPS 来加密客户端和服务器之间传输的数据,确保用户的隐私和安全。
电子商务:电子商务网站使用 HTTPS 传输敏感信息,例如支付详情和个人信息,为客户提供额外的安全保护。
银行和金融服务:金融机构使用 HTTPS 来保护交易和保护客户数据。
医疗保健:HTTPS 在医疗保健中用于保护敏感的患者信息,例如医疗记录和个人详细信息。
政府网站:政府网站使用 HTTPS 来保护敏感信息的传输,例如纳税申报表和其他个人数据。
登录页面:登录页面使用 HTTPS 来加密用户名和密码的传输,防止窃听和其他安全威胁。
云计算:云计算服务使用 HTTPS 来保护客户端和服务器之间传输的数据,为用户提供隐私和安全。
TCP
文件传输:TCP 用于在互联网上传输大文件,确保数据准确无误地传输。
电子邮件:TCP 用作许多电子邮件协议的传输层协议,例如 SMTP(简单邮件传输协议),确保电子邮件消息的可靠传递。
Web 浏览:Web 浏览器使用 TCP 在客户端和服务器之间传输数据,从而提供可靠且无错误的网页和其他数据传输。
远程访问:TCP 用于远程访问协议,例如 Telnet 和 SSH,允许用户安全地连接到远程计算机并访问其资源。
数据库连接:TCP用于数据库连接,例如JDBC(Java数据库连接)和ODBC(开放式数据库连接),以在客户端和服务器之间传输数据。
流媒体:流媒体服务(例如 Netflix 和 YouTube)使用 TCP 在 Internet 上传输大量视频和音频数据。
游戏:许多在线游戏平台(例如 Xbox Live 和 PlayStation Network)都使用 TCP 来为在线游戏提供稳定快速的连接。
UDP
流媒体:流媒体服务(如 IPTV 和在线游戏)使用 UDP 传输实时视频和音频数据。
语音和视频通话:许多语音和视频通话应用程序(例如 Skype 和 Facetime)使用 UDP 来传输实时语音和视频数据。
DNS:域名系统 (DNS) 使用 UDP 将域名解析为 IP 地址。
游戏:许多在线游戏平台(例如 Xbox Live 和 PlayStation Network)使用 UDP 来传输实时游戏数据。
网络监控:UDP 被 Nagios 和 Wireshark 等网络监控工具用于监控网络活动。
虚拟专用网络 (VPN):PPTP 和 OpenVPN 等 VPN 协议使用 UDP 在互联网上安全地传输数据。
远程管理:远程管理工具(如远程桌面和 VNC)使用 UDP 来远程控制计算机和访问其资源。
Websocket
实时 Web 应用程序:WebSocket 用于实现 Web 浏览器和 Web 服务器之间的实时通信,实现在线聊天、实时游戏和协作工具等应用程序。
物联网 (IoT):IoT 设备使用 WebSocket 在设备和云服务器之间传输实时数据。
股票市场交易:股票市场交易平台使用 WebSocket 传输有关股票价格和市场趋势的实时数据。
在线游戏:许多在线游戏平台都使用 WebSocket 来启用实时多人游戏。
社交媒体:许多社交媒体平台都使用 WebSocket 向用户实时更新新帖子、评论和通知。
远程医疗:远程医疗平台使用WebSocket在远程会诊时传输医生和患者之间的实时数据。