IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> web-socket -> 正文阅读

[网络协议]web-socket

TCP/IP

TCP/IP协议https://blog.csdn.net/L_fengzifei/article/details/123482374

1. 概念

socket接口连接应用层和传输层,具体来说属于传输层的内容

网络数据传输过程

发送信息的应用程序,通过socket变成接口把信息传给操作系统的TCP/IP协议栈通信模块
通过TCP/IP协议栈通信模块一层层传递给其他通信模块,最后再通过网卡等硬件设备发送到网络上去
经过网络上路由器的一次次转发,最终到了目标程序所在的计算终端设备,再通过终端的操作系统的TCP/IP协议栈通信模块一层层的上传
最终接收信息的程序,通过socket编程接口接收到了传输的信息

requsets库底层也是使用socket编程接口发送http请求信息
http传输的消息,底层也是通过TCP/IP协议传输的

1.1 消息格式

消息:消息头+消息体
消息头:长度、类型、状态
消息体:数据

特别针对TCP协议传输,格式定义一定要明确规定消息边界
TCP传输的是字节流,如果没有指定边界或成都,接收方对数据的处理存在歧义(开始和结束)

TCP数据传输过程

发送和接收不一定是完整的消息
https://www.bilibili.com/video/av74106411/?p=82&spm_id_from=pageDriver

应用程序发送数据(字节流),数据存在本机的发送缓冲中,然后根据网络传输协议(四层TCP/IP协议),再发送给对方。socket.send()会返回实际上本次存储到发送缓冲中的字节长度(返回值是要发送的字节数量,该数量可能小于string的字节大小)
达到对方主机中,先将数据存储到接收缓冲中,socket.recv(bufsize)定义要接收的最大数量

解决方法:定义消息头或消息尾部
指定消息边界的方法

用消息内容中不可能出现的字节串作为消息的结尾字符
定义消息头,直接指定消息长度

2. socket

socket(套接字)

应用程序通过套接字向网络发出请求或应答网络请求,使主机间火车一台计算机上的进程间可以通信

服务端一般先于客户端启动
服务端和客户端都可以收发消息

#服务端
socket.bind() # 绑定端口号
socket.listen() # 开启监听
socket.accept() # 阻塞式等待接收

# 客户端
socket.connect() # 连接服务端端口号

# 服务端/客户端
socket.close() # 关闭socket
socket.recv() # 接收数据,bufsize指定最大接收数量,TCP协议
socket.send() # 发送数据,TCP协议

socket.sendto() # 发送数据,UDP协,同样返回发送的字节数
socket.recvfrom() # 接受数据,UDP,返回接收到的数据和发送端的端口地址


# 创建对象
# version1
import socket 
sockect.socket()

# version2
from socket import socket
socket([family,[type[,proto]]])
# family: 套接字家族:AF_UNIX 或 AF_INET(IP协议)
# type: 套接字类型
#		面向连接:SOCK_STREAM --TCP
#		面向非连接:SOCK_DGRAM --UDP
# protocol: 默认为0

2.1多线程响应???

python多线程

2.2 TCP/UDP

https://www.byhy.net/tut/py/etc/socket/

UDP是无连接协议

无需事先建立虚拟连接,可以直接给对方地址发消息
缺点:不安全,UDP协议本身没有重传机制;TCP协议底层有消息验证是否到达,如果丢失,发送会重传
数据消息发送是独立的报文:TCP协议通信双方的信息数据有明确的先后顺序(发送方应用先发送的信息肯定是先被接收方应用先接收的)。UDP协议发送的是一个个独立的报文,接收方应用接收到的次序不一定和发送的次序一致

系统设计时要确定应用语义中的最大报文长度,从而可以确定一个对应长度的应用程序接收缓冲,防止只接收一部分的数据

TCP socket字节流协议,如果应用接收缓冲不够大,只接收了一部分数据,后面可以继续接收,然后搜索找到边界拼接就可以
UDP socket数据报协议,如果只接收了数据报的一部分,剩余的消息就会被丢弃,下次接收只能接收
补充说明–没看???https://www.byhy.net/tut/py/etc/socket/

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:20:11  更:2022-04-18 18:23:20 
 
开发: 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 4:24:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码