前言

伴随着网络的快速发展,网络通讯越来越重要,通讯的快捷、安全、方便影响着用户的体验。本文将探讨这些技术的原理、特点以及在实际应用中的应用场景。

1.HTTTP(超文本传输协议)

HTTP是一种传输超文本的协议,它是现代互联网通信的基础。其特点包括:

  • 简单性:HTTP使用简单的请求-响应模型,客户端向服务端发送请求,服务器响应请求。
  • 无状态性:每个请求都是独立的,服务器不会保留客户端的状态信息。
  • 灵活性:HTTP协议支持不同类型的数据传输,如文本、图片、视频等。

2.Websocket

Websocket是一种在单个TCP连接上进行全双工通信的协议,它允许客户端和服务器之间进行实时数据交换。其特点包括:

  • 双向通信:Websocket允许服务器主动向客户端推送数据,而不需要客户端发起请求。
  • 低延迟:Websocket使用单个TCP连接,减少了建立和关闭连接的开销,从而降低了通信延迟。
  • 跨平台:Websocket协议被主流的浏览器和服务器支持,可以在各种设备和平台上使用。

3.Netty

Netty是一个基于NIO的网络通信框架,它提供了高效的事件驱动机制,适用于开发高性能、可拓展的网络应用。其特点包括:

  • 异步性:Netty使用异步的I/O操作,可以处理大量并发的连接而不会阻塞线程。
  • 可组件化:Netty的组件化设计使得开发者可以灵活地组合各种功能模块,以满足不同的需求。
  • 高性能: Netty提供了高性能的网络编程能力,适用于开发高吞吐量、低延迟的网络应用。

在上面的一些介绍中我们有一个全双工的概念,那么这个是什么意思呢???

首先它是有单工,半双工,全双工三种概念。

  • 单工:是指数据只能在一个方向上传输,通信双方中的一个角色只能发送数据,另一个角色只能接收数据。这就意味着通信双方不能同时发送和接收数据。我们的HTTP通信就是一种单工通信。
  • 半双工:是指通信允许在两个方向上进行传输,但是不能同时进行。通信双方可以交替地发送和接收数据,但不能同时进行发送和接收。
  • 全双工:这个大家肯定就知道了,允许数据在两个方向上同时进行传输,通信双方可以同时发送和接收数据,无需等待对方完成发送或接收。

HTTP和Websocket

HTTP和Websocket都是网络通信协议,但它们的区别已经显而易见了。

  • 连接方式:HTTP是基于请求和相应模型的,每次请求都需要向客户端发起连接,虽然可以通过长连接或长轮询的方式实现半双工通信,但是服务器还是不能主动向客户端发送信息;而Websocket是基于长连接的,客户端和服务器之间保持一个持久的连接,可以随时进行双向通信。
  • 数据格式:HTTP协议通常用于传输静态内容,如HTML、CSS、JavaScript等;而Websocket协议更适合传输实时数据,如聊天消息等。
  • 性能开销:由于HTTP协议每次请求都需要建立连接和断开连接,所以在频繁通信的场景下会有较大的性能开销;而Websocket协议使用单TCP连接,可以减少这种开销。

简单了解HTTP、Websocket和Netty的更多相关文章

  1. Eclipse 搭建一个简单的SpringBoot+WebSocket环境

    WebSocket是一种在单个TCP连接上进行全双工通信的协议. WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范. WebSocket API也被 ...

  2. 基于websocket的netty demo

    前面2文 基于http的netty demo 基于socket的netty demo 讲了netty在http和socket的使用,下面讲讲netty如何使用websocket websocket是h ...

  3. netty同时做http和websocket(netty入门)

    ---恢复内容开始--- http://www.jianshu.com/p/5c29c6c6d28c ---恢复内容结束--- http://www.jianshu.com/p/5c29c6c6d28 ...

  4. WebSocket就是这么简单

    前言 今天在慕课网上看到了Java的新教程(Netty入门之WebSocket初体验):https://www.imooc.com/learn/941 WebSocket我是听得很多,没有真正使用过的 ...

  5. Netty实战十二之WebSocket

    如果你有跟进Web技术的最新进展,你很可能就遇到过“实时Web”这个短语,这里并不是指所谓的硬实时服务质量(QoS),硬实时服务质量是保证计算结果将在指定的时间间隔内被递交.仅HTTP的请求/响应模式 ...

  6. WebSocket简单介绍(1)

    HTML5作为下一代WEB标准,拥有许多引人注目的新特性,如Canvas.本地存储.多媒体编程接口.WebSocket等等.今天我们就来看看具有“Web TCP”之称的WebSocket. WebSo ...

  7. netty学习第5章 netty整合websocket

    学习netty之后,可能都有一个疑问,就是如何选择一个编码.解码器,在netty中的编解码可是和json这种编解码是不一样的,netty的编解码器主要是解决TCP粘包.拆包的问题.netty中有许多自 ...

  8. netty系列之:使用netty搭建websocket服务器

    目录 简介 netty中的websocket websocket的版本 FrameDecoder和FrameEncoder WebSocketServerHandshaker WebSocketFra ...

  9. websocket++简单使用例子

    前言 html5支持使用websocket协议与服务器保持一个长连接,方便双方互相传输数据,而且服务器也能主动发送信息给客户端,而在这之前使用HTTP是很难做到的.下面介绍使用C++实现的websoc ...

  10. 简单聊聊WebSocket

    一.概述 上一篇文章<浅析一次HTTP请求>我们分析了简单的一次 HTTP 请求具体是怎么样完成的,分析了 HTTP 协议的数据结构,如何连接,如何断开,又是如何多路复用的,那么今天我们来 ...

随机推荐

  1. [转帖]JMeter 接口测试快速入门

    https://my.oschina.net/choerodon/blog/5289725   JMeter简介 JMeter 的特性: 对于多种协议的功能测试和性能测试 Web - HTTP, HT ...

  2. 遇到疯狂GC时进行判断然后重启服务的方法-GPT学习使用之三

    遇到疯狂GC时进行判断然后重启服务的方法-GPT学习使用之三 背景 最近怀疑产品遇到了第三方组建的bug Groupdocs转换渲染某些文件时出现了严重的FullGC的情况 而且出现的奇怪的功效学GC ...

  3. HotSpare 9361Raid卡热备盘的设置过程

    HotSpare 9361Raid卡热备盘的设置过程 摘要 公司最近一批服务器到位(去年生产) 插满24盘位的 960G 的SSD 的超融合服务器. (硬盘是镁光的 !-_-!) 想着Raid6虽然数 ...

  4. [转帖]020 Linux 20 个宝藏命令案例

    https://my.oschina.net/u/3113381/blog/5478108 1 JDK 相关的查找命令 (1)确认是否安装 JDK //命令 java -version //输出示例 ...

  5. 2024年最新的Python操控微信教程

    自从微信禁止网页版登陆之后,itchat 库实现的功能也就都不能用了,那现在 Python 还能操作微信吗?答案是:可以! 在Github上有一个项目叫<WeChatPYAPI>可以使用 ...

  6. Docker容器基础入门认知-Cgroup

    在上一篇说完 namespace 给容器技术提供了隔离之后,我们在介绍一下容器的"限制"问题 也许你会好奇,我们不是已经通过 Linux Namespace 给容器创建了一个容器了 ...

  7. 如何将数据库中的树结构表导出EXCEL

    我们常常会遇到这样的需求,将数据库中父子结构的表数据导出作为表头 我们实现的开发中就遇到这样的需求:将所有用户的权限表导出,权限作为表头 思路:sql求出每一条权限数据应该跨的行数,在代码中填充这些数 ...

  8. 人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测

    人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow.torch版本)含数据转化.模型构建.MLP.TCNN+RNN.LSTM模型训练以及预测 1.赛题简介 项目链接以及 ...

  9. 2.3 Windows驱动开发:内核字符串转换方法

    在内核编程中字符串有两种格式ANSI_STRING与UNICODE_STRING,这两种格式是微软推出的安全版本的字符串结构体,也是微软推荐使用的格式,通常情况下ANSI_STRING代表的类型是ch ...

  10. 21.10 Python 使用CRC32校验文件

    CRC文件校验是一种用于验证文件完整性的方法,通过计算文件的CRC值并与预先计算的CRC校验值进行比较,来判断文件是否发生变化,此类功能可以用于验证一个目录中是否有文件发生变化,如果发生变化则我们可以 ...