TCP/IP协议,HTTP协议与webSocket协议区别

http协议(识别数据内容)与webSocket协议

 

同:建立在TCP之上,同http一样通过TCP来传输数据

不同:

HTTP协议为单向协议,即浏览器只能向服务器请求资源,服务器才能将数据传送给浏览器,而服务器不能主动向浏览器传递数据。分为长连接和短连接,短连接是每次http请求时都需要三次握手才能发送自己的请求,每个request对应一个response;长连接是短时间内保持连接,保持TCP不断开,指的是TCP连接。

 

WebSocket解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮询问题。

一种双向通信协议,在建立连接后,WebSocket服务器和Browser/UA都能主动的向对方发送或接收数据,就像Socket一样,不同的是WebSocket是一种建立在Web基础上的一种简单模拟Socket的协议;    

WebSocket需要通过握手连接,类似于TCP它也需要客户端和服务器端进行握手连接,连接成功后才能相互通信。

WebSocket在建立握手连接时,数据是通过http协议传输的,“GET/chat HTTP/1.1”,这里面用到的只是http协议一些简单的字段。但是在建立连接之后,真正的数据传输阶段是不需要http协议参与的。

 

TCP/IP协议(用来传输数据)

 

socket是对TCP/IP协议的封装,本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP。

四层,分别为应用层(Telnet、FTP和Email等)、运输层(TCP、UDP)、网络层(IP、ICMP、IGMP等)和链路层(设备驱动程序)

三次握手完毕后,客户端与服务器才正式开始传送数据

四次挥手后断开连接

套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认

TCP:面向连接,通过三次握手建立连接,通讯完成时要拆除连接,只能端到端传输

UDP:无连接,可实现广播发送

 

TCP/IP通信数据流

下面是我们访问一个网页,各种协议在里面起的作用。

以上图例来自《图解HTTP》

PS:微信公众号                FEvivi

                                                                                      

关注后回复    vivi     获取我的微信号,望不吝赐教,pps:可轻撩哈哈

感谢大佬们阅读,希望大家头发浓密,睡眠良好,情绪稳定,早日实现财富自由~
 

 

  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你的问题是如何使用nodejs中间层,解封装基于TCP/IP协议分装的数据,并进行协议转发。 首先,你需要使用nodejs内置的net模块,来建立TCP/IP连接,接收数据。你可以使用net.createServer()方法来创建一个TCP服务器,然后监听指定的端口,例如: ``` const net = require('net'); const server = net.createServer((socket) => { // 新的连接 console.log('连接已建立'); // 监听data事件,接收数据 socket.on('data', (data) => { console.log(`接收到数据: ${data}`); // 将数据解封 const decodedData = decodeData(data); // 将解封后的数据转发给第三方平台 forwardData(decodedData); }); // 监听连接断开事件 socket.on('end', () => { console.log('连接已断开'); }); }); // 监听指定端口 server.listen(8080, () => { console.log('TCP服务器已启动'); }); ``` 接下来,你需要实现decodeData()函数,用于解封数据。具体的解封方法,需要根据数据的格式来定。解封完成后,你可以将数据转换为JSON格式,方便后续转发处理。 ``` function decodeData(data) { // TODO: 解封数据 const decodedData = JSON.parse(data); return decodedData; } ``` 最后,你需要实现forwardData()函数,用于将解封后的数据转发给第三方平台。你可以根据你要转发的协议来选择对应的模块,例如使用nodejs内置的http模块发送HTTP请求,或使用socket.io模块建立WebSocket连接等等。以下以发送HTTP请求为例: ``` const http = require('http'); function forwardData(data) { const options = { hostname: 'thirdparty.com', port: 80, path: '/api/data', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': data.length } }; const req = http.request(options, (res) => { console.log(`转发请求状态码: ${res.statusCode}`); }); req.on('error', (error) => { console.error(`转发请求出错: ${error}`); }); req.write(data); req.end(); } ``` 在forwardData()函数中,你需要设置第三方平台的地址、端口、路径、请求方法、请求头等参数。然后,使用http.request()方法发送HTTP请求,并将解封后的数据作为请求体发送。最后,你需要监听请求的响应结果,以便确认转发请求是否成功。 综上所述,基于以上实现,你可以使用nodejs中间层,实现解封装基于TCP/IP协议分装的数据,并进行协议转发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值