几种常用协议介绍

article/2025/9/27 2:02:27

几种常见协议介绍

TCP/IP协议,其实是一个协议集合,这个集合里面包含了网络通讯所需的所有协议,里面不仅有TCP(传输控制协议)、IP(网际协议),还有UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP、TFTP等许多协议,还有物联网中占着极其重要的作用的mqtt协议,http协议等。
dhcp 动态主机设置协议
mqtt 消息队列遥测传输
tcp 传输控制协议
arp 地址解析协议
http 超文本传输协议
下图是物联网设备连接网络,注册mqtt服务,发送订阅wireshark抓取的包截图:
在这里插入图片描述
下面分别介绍下上述协议内容。

一.dhcp协议

动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或网络服务供应商自动分配IP地址;给用户用于内部网管理员作为对所有计算机作中央管理的手段。
在这里插入图片描述
client (0.0.0.0) ---->发送 DHCP discover包 ----> server(255.255.255.255) //请求分配ip地址服务
client (0.0.0.0) <-----接收DHCP Offer 包 <---- server(255.255.255.255) //回应客户端可以分配ip地址
client (0.0.0.0) ---->发送 DHCP REQUEST包 ----> server(255.255.255.255)//请求分配ip地址
client (0.0.0.0) <-----接收DHCP ACK 包 <---- server(255.255.255.255) //请求收到确认

想查看包详情内容可自行使用wireshark工具抓取设备连接网络请求查看详细内容,此处不做介绍。

二tcp协议

1.tcp的三次握手

第一次握手:主机A发送位码为syn=1,随机产生seq number=x的数据包到服务器,客户端进入SYN_SEND状态,等待服务器的确认;主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number(主机A的seq+1),syn=1,ack=1,随机产生seq=y的包,此时服务器进入SYN_RECV状态;

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

2.tcp四次挥手

第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;

第二次挥手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我也没有数据要发送了,可以进行关闭连接了;

第三次挥手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入CLOSE_WAIT状态;

第四次挥手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

本文中三次握手过程‘
主机 (172.20.231.2) send seq = 0 --------> 主机(39.96.31.118) //第一次握手
主机(172.20.231.2) <-----send seq = 0 ack = 0+1 主机(39.96.31.118) //第二次握手
主机(172.20.231.2) send seq = 0+1 ack = 1 --------> 主机(39.96.31.118) //第三次握手

四次挥手此次没有抓包,不做介绍。

三.http协议

超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。
主要方法:
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据
其他方法:

方法描述
HEAD与 GET 相同,但只返回 HTTP 报头,不返回文档主体。
PUT上传指定的 URI 表示。
DELETE删除指定资源。
OPTIONS返回服务器支持的 HTTP 方法。
CONNECT把请求连接转换到透明的 TCP/IP 通道

本文中使用http post请求服务器更新密钥

四.mqtt协议

MQTT 连接必须是一个客户端和代理之间,而不能是一个客户端与另一个客户端。客户端通过发送 CONNECT 命令给代理启动建立连接。一旦建立连接,该连接将一直打开,直到从客户端接收到断开连接的命令。
1.连接请求(connect command)
在这里插入图片描述
目标端口是1883,它是 MQTT 基于TCP 的默认端口。
端口 8883 用于基于 TLS 的 MQTT。
连接命令详解:
Header Flags:保存有关 MQTT 控制包类型的信息。
Connect Flags:连接标志位包含指定 MQTT 连接行为的参数。它能够有效指示连接状态。
Clean session:连接标志的第1位,该标志用来将客户端是否想要建立持久连接的信息告知给代理。标志设置为 true 时会清除会话,在断开连接时删除订阅信息;当期设置为 false 时,可以实现持久连接并保存订阅信息,在重新连接时使用高级别 QoS 传递消息。
Will flag:连接标志的第2位。MQTT 的遗愿标志位的一部分。设置该标志就意味着如果接受了连接请求,那么服务器将存储一个 Will 消息。Will 消息是一个带有Will 主题和 Will 消息内容的 MQTT 消息。它用于连接断开时通知其他客户端。当客户端断开连接时,代理会传送此消息。当 Will 标志设置为1时,服务器将使用连接标志中的 Will QoS 和 Will Retain 字段。
Will QoS:连接标志的3、4位。表示发布 Will 消息时要使用的 QoS 级别。
Will retain:连接标志的第5位。如果 Will Retain 设置为0,则服务器必须将 Will消息作为未保留消息发布;当其设置为1时,则将 Will 消息作为保留消息进行发布。
User Name and Password:分别占据连接标志的第6、第7位。设置此字段将使用证书。MQTT 允许发送用户名和密码来验证客户端和授权。如果密码未采用加密手段,则以明文形式发送。
Keep alive: Keep alive 计时器用来确认 MQTT 客户端是否在线。客户端通过向代理周期性发送 PING 请求,代理返回 PING 命令响应。
Client ID:它是每一个连接到 MQTT 代理的 MQTT 客户端的标识符。每个代理也是唯一的。
Payload: Payload包含了客户端ID、Will 主题、Will 消息,用户名和密码,其状态由标志决定。

服务器需要回复消息:connect ack

2.订阅请求(subscribe request)
在这里插入图片描述
服务器需要回复消息:subscribe ack

mqtt响应的消息不做介绍。

笔者接触相关知识不久,在此简单记录,如有错误之处,欢迎指出。


http://chatgpt.dhexx.cn/article/oOL9hTvB.shtml

相关文章

个人如何申请注册公司邮箱?企业邮箱注册申请流程详解

大部分人可能知道邮箱&#xff0c;但是公司邮箱是什么&#xff1f;企业邮箱注册申请流程&#xff1f;个人如何申请注册公司企业邮箱&#xff1f; 在一家公司实习时人事告诉我使用公司邮箱&#xff0c;用我名字拼音命名的&#xff0c;还是无限容量、单次群发500封、邮件误删可以…

手把手教你申请CCC(City Colleges of Chicago)教育邮箱

如果你还不知道edu教育邮箱的好处&#xff0c;那么你就out了&#xff0c;很多大公司的的优惠福利专门针对学生群体。比如可以利用edu邮箱获得Office365免费使用权限&#xff0c;可以免费扩容Onedrive至1024GB&#xff1b;可以获得AutoCAD、3ds Max、Maya等在内70余款软件的3年免…

工大校园邮箱申请流程

由于pycharm破解日益复制&#xff0c;代理服务器总是被封杀&#xff0c;只好老老实实合法使用&#xff0c;但还是要免费的方法&#xff0c;那就申请学生邮箱&#xff0c;毕竟钱不是问题&#xff0c;穷才是。 第一步打开这个网址&#xff0c;登陆一下 https://cas.bjut.edu.cn…

matlab 柱面投影,matlab练习程序(圆柱投影)

圆柱投影就是将一张二维的图像投影到三维的圆柱体上&#xff0c;不过在显示图像的时候依然是以二维的形式给出。 投影最重要的步骤就是计算投影变换公式&#xff0c;和图像旋转类似&#xff0c;只要得到变换公式&#xff0c;再依照公式进行代码编写就很容易了。 这里就不写投影…

C/C++ 图像处理(8)------图像の柱面投影算法

图像的柱面投影算法,在360环形全景应用中几乎一定会用到。而为何要用该算法,可以参考下图: 从图像中可以看到,該环形全景设备由八个摄像头环形排列而成(需注意环形全景的形态并不固定,摄像头的个数不一定是八个,甚至只有一个摄像头在一直匀速转圈也是可以的)。每个摄…

全景图(二):在Unity3D上实现360°柱面投影

在全景图&#xff08;一&#xff09;&#xff1a;使用Unity完成水晶球纹理贴图 建立的工程基础之上&#xff0c;做修改。 步骤&#xff1a; 1、把上次创建好的水晶球移走&#xff0c;放到一个不妨碍观察的地方。 2、创建一个圆柱体&#xff0c;位置设为&#xff08;0,1.5,0&a…

图像拼接(一):柱面投影+模板匹配+渐入渐出融合

这种拼接方法的假设前提是&#xff1a;待拼接的两幅图像之间的变换模型是平移模型&#xff0c;即两幅图像同名点位置之间只相差两个未知量&#xff1a; Δx 和 Δy &#xff0c;自由度为2&#xff0c;模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄像机…

2D射影儿何和变换——柱面投影,图像拼接柱面投影

引入二维空间(以下简称2D) 的射影变换 这些变换发生在用透视摄像机对平面摄像的时候. 该章偏重于入门介绍并为三维空间(以下简称3D) 几何铺路. 大多数的概念在2D 中比3D 中更容易理解和可视化. 本章介绍射影变换&#xff0c;包括它的特殊悄况:仿射和相似变换; 并把注意力…

鱼眼图像与柱面的投影

鱼眼图像到柱面的反投影及柱面到鱼眼图像的投影 https://blog.csdn.net/c20081052/article/details/80999904 鱼眼图像到柱面图像的投影公式推导参考链接&#xff0c;自己照着推导过&#xff0c;应该是没有问题的。这个是平面图像到柱面的投影&#xff0c;我理解的鱼眼图像也是…

【论文笔记】激光点云柱面投影图的显著性检测 LiDAR Imaging-based Attentive Perception

内华达大学里诺分校 在嵌入式处理器设备上(飞行器)达到了毫秒级执行时间, 使用的激光雷达型号 :  OUSTER OS1-64 &#xff08;图像尺寸204810&#xff09;&#xff0c;OUSTER OS0-128&#xff08;图像尺寸204810&#xff09; 这种激光雷达可以提供的信息包括: 距离, 强度, 反射…

图像拼接---图片柱面投影简单实现

算法思想参考&#xff1a;http://blog.csdn.net/weixinhum/article/details/50611750 柱面投影是图片拼接的前期的一部分工作&#xff0c;以下代码只是简单的实现了投影&#xff0c;还可以优化&#xff0c; 柱面半径设置位图片宽度的一半&#xff0c;即 R width/2 代码运算…

2.8 投影柱面

空间曲线 在xOy坐标面上的投影曲线是 投影柱面的参数方程为 例 2.8.1 将以下空间曲线投影到xOy坐标面&#xff0c;试作出投影柱面的图形。 解 输入以下代码&#xff1a; with(plots): x:t->cos(t): y:t->sin(t): z:t->t: S:2: T:6:K:50: quxian:spacecurve([x(t),y(t…

【Opencv】2D射影儿何和变换——柱面投影,图像拼接柱面投影

引入二维空间(以下简称2D) 的射影变换 这些变换发生在用透视摄像机对平面摄像的时候. 该章偏重于入门介绍并为三维空间(以下简称3D) 几何铺路. 大多数的概念在2D 中比3D 中更容易理解和可视化. 本章介绍射影变换&#xff0c;包括它的特殊悄况:仿射和相似变换; 并把注意力主要…

matlab 柱面投影,图像拼接(不投影到柱面)(渐入渐出融合) matlab程序

1,先拍摄一组图片,比如两幅图:A、B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里自带的) 有两三对误匹配对,后来调整阈值得到没有误匹配对的结果。 4,配准第二步:根据匹…

opencv柱面投影,C语言实现

在做全景拼接的时候&#xff0c;为了保持图片中的空间约束与视觉的一致性&#xff0c;需要进行柱面投影&#xff0c;否则离中心图像距离越远的图像拼接后变形越大。 柱面投影公式为 这个是https://blog.csdn.net/zouxin_88/article/details/85167602的代码&#xff0c;rgb彩色…

柱面投影matlab程序

拼接之前要进行柱面、立方体面或者球面投影&#xff0c;《全景拼接的关键技术研究》选的是柱面投影&#xff0c;根据其理论有&#xff1a; %假设相机市场角为45度 %反投影到柱面时左右有缝隙了 Aimread(F:\fisheye\kk.jpg); [H,W,k]size(A); fW/(2*tan(pi/4/2)); %视场角越…

柱面投影、拼接视差、球面投影

1. 图像拼接传统做法: 特征点提取:sift、surf、orb等特征点提取; 基于特征点的配准:RANSAC方法剔除匹配点并拟合图像变换矩阵(全局单应性矩阵); 图像融合:先确定缝合线,再利用加权融合、多频带融合的方法融合; 方法:除了按照上文提到的顺序利用opencv进行拼接,还可以…

opencv柱面投影

在做全景拼接的时候&#xff0c;为了保持图片中的空间约束与视觉的一致性&#xff0c;需要进行柱面投影&#xff0c;否则离中心图像距离越远的图像拼接后变形越大。 柱面投影公式为 变换效果如下&#xff1a; int main() {cv::Mat image1 cv::imread("images/1.jpg"…