| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> cs架构接口协议(常用socket协议)与bs架构接口协议(常用http协议) -> 正文阅读 |
|
[网络协议]cs架构接口协议(常用socket协议)与bs架构接口协议(常用http协议) |
Socket原理以及与websocket、http的区别: Socket原理: 比如B/S的系统通常使用http协议进行客户端和服务器商的信息交换,C/S的系统通常使用socket协议进行信息交换 socket、websocket、http的区别 http(s)是在socket之上封装的一种上层通讯协议,其特点是: 服务端监听通讯,被动提供服务;客户端主动向服务端发起连接请求,建立起通讯。 每一次交互都是:客户端主动发起请求(request),服务端被动应答(response)。 服务端不能主动向客户端推送数据。 通信的数据是基于文本格式的。二进制数据(比如图片等)要利用base64等手段转换为文本后才能传输。 websocket也是在socket之上封装的一种上层通讯协议,其特点是: 建立通讯时,也是由客户端主动发起连接请求,服务端被动监听。 通讯一旦建立连接后,通讯就是“全双工”模式了。也就是说服务端和客户端都能在任何时间自由得发送数据,非常适合服务端要主动推送实时数据的业务场景。 交互模式不再是“请求-应答”模式,完全由开发者自行设计通讯协议。 通信的数据是基于“帧(frame)”的,可以传输文本数据,也可以直接传输二进制数据,效率高。当然,开发者也就要考虑封包、拆包、编号等技术细节。 编程步骤 (2)客户端 WebSocket的优势 从纯粹的字节数角度考虑 WebSocket只有在进行连接的时候需要发送一个HTTP请求,之后就再也不需要发送纷繁的HTTP头部信息,光从字节数上就减少了很多。而在关闭WebSocket的过程中,也不需要像建立握手的时候那么繁杂,只需要传送一个特定的字节码0×8的关闭帧就行,服务端收到之后,需要响应一个关闭帧到客户端。 从请求数的角度考虑 WebSocket可以一直保持连接,通过Socket通道传输数据,节省掉了建立连接需要耗费的时间。 从服务器并发数的角度考虑 Java曾引入一个新的I/O API,其被称为非阻塞式的I/O。这一API使用一个选择器来避免每次有新的HTTP连接在服务器端建立时都要绑定一个线程的做法,当有数据到来时,就会有一个事件被接收,接着某个线程就被分配来处理该请求。因此,这种做法被称为每个请求一个线程(thread-per-request)模式。其允许web服务器,比如说WebSphere和Jetty等,使用固定数量的线程来容纳并处理越来越多的用户连接。在相同硬件配置的情况下,在这一模式下运行的web服务器的伸缩性要比运行在每个连接一个线程(thread-per-connection)模型下的好得多。 每个连接一个线程模式通常会有一个更好的响应时间,因为所有的线程都已启动、准备好且是等待中,但在连接的数目过高时,其会停止提供服务。在每个请求一个线程模式中,线程被用来为到达的请求提供服务,连接则是通过一个NIO选择器来处理。响应时间可能会较慢一些,但线程会回收再用,因此该方案在大容量连接方面有着更好的伸缩性。 而WebSocket对于服务端的优势就在于Socket减少了数据传输和处理的成本,使得这些异步的IO机制能够充分地扬长避短。 换句话说,WebSocket带来的并发能力提升,不仅仅因为传输机制本身,服务端一样需要做调整来适应新的机制,这样才能充分发挥WebSocket的优势。 如何使用Jmeter进行Socket测试: |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:54:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |