http协议浅谈(一)

本文详细介绍了HTTP协议的基础概念,包括其特点、请求与响应的方式、状态码的含义以及各种报头的作用。同时对比了HTTP与HTTPS的主要区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http协议是属于应用层的面向对象的协议。
http主要特点是:
支持C/S模式。
灵活:允许传输任意类型数据,由Content-Type标记类型。
简单快速:客户向服务器请求数据时,只需要请求方法(GET、POST、PUT等等)和路径。
无连接:一次连接只能处理一个请求,也就是服务器处理完请求并收到客户端应答时,就断开连接,这样可以节省传输时间。
无状态:即对事务处理能力无记忆。也就是如果后续处理需要前边的信息,则它需要重传。

http请求:
请求方法有多种:
GET              请求获取Request-URI所标识的资源
POST            在Request-URI所标识的资源后添加数据
PUT              请求服务器存储一资源,并以Request-URI标识
DELETE       请求服务器删除Request-URI所标识的资源
HEAD           请求获取Request-URI所标识的资源的响应消息报头
TRACE         请求服务器回送收到的请求消息,主要用于诊断或者测试
CONNECT   保留将来使用
OPTIONS    请求查询服务器性能,或者查询与资源相关的选项和需求

http响应:
状态码:
1XX:指示消息 — — 表示请求已接收,继续处理
2XX:成功 — — 表示请求已被成功接收,理解,接受
3XX:重定向 — — 要完成请求必须要更进一步的操作
4XX:客户端错误 — —请求有语法错误或请求无法实现
5XX:服务端错误 — —服务器未能实现合法请求
常见状态码:200:OK //请求成功     400:Bad Request //客户端请求有语法错误,无法被服务器理解
401:unauthorized //请求未经授权,这个状态码需要和WWW-Authenticate报头一起使用
403:Forbidden //服务器收到请求,但是拒绝服务  404:Not Found //请求资源不存在
500:Internal Server Error //服务器发生了不可预期的错误
503:Server Unavailable //服务器当前不能处理客户端请求,一段时间后,可能恢复正常

http报头
普通报头:
Cache-Control:用于指定缓存指令,缓存指令是单向的,且是独立的。
请求时的缓存指令包括:no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached
响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage
Date:消息产生的日期和时间
Connection:允许发送指定连接的选项

请求报头:
Accept:客户端接受哪些类型信息,如:Accept:text/html表示客户端希望接受html文本
Accept-Charset:客户端接受的字符集
Accept-Lanuage:制定一种自然语言
Accept-Encoding:指定可接受的编码
Host(发送请求时,该报头是必需的):用于指定被请求资源的Internet主机和端口
User-Agent:允许客户端将自己的操作系统、浏览器及其它属性告诉服务器。
Authorization:用于证明客户端是否有权查看某资源。

响应报头:
Location:用于重定向接受者到一个新的位置,常用在更换域名时候。
Server:包含了服务器用来处理请求的软件信息。与User-Agent是相对应的。
WWW-Authenticate:必须被包含在401响应消息中。

实体报头:请求和响应都可以发送一个实体。
Content-Encoding:被用作媒体类型的修饰符,值代表了附加内容的编码。
Content-Lanuage:资源所用的自然语言
Content-Length:实体正文长度
Content-Type:指明发送给接收者的实体正文的媒体类型
Last-Modified:资源最后修改的日期和时间
Expires:响应过期的日期和时间

HTTPS:基于安全套层的超文本传输协议或者HTTP over SSL。与http基于同一协议,所以大多数时候两者一样,请求和响应一样。与HTTP区别:http的URL以http://开头,https以https://开头;http是不安全的,https是安全的;http的标准端口是80,https的标准端口是443;https需要对传输数据加密,http不需要加密;https需要认证证书,http无需认证;在OSI网络模型中,http工作在应用层,https工作在传输层。


### 串口通讯协议设计规范与最佳实践 #### 设计规范 串口通信作为种常见的数据传输方式,在硬件和软件层面都需要遵循定的设计规范,以确保系统的可靠性和稳定性。 1. **波特率设置** 波特率决定了每秒传输的数据位数。为了保证双方设备之间的同步性,必须严格匹配波特率参数[^2]。通常情况下,常用的波特率为9600、115200等标准化数值。 2. **数据帧结构** 数据帧由起始位、数据位、奇偶校验位(可选)、停止位组成。具体配置如下: - 起始位:固定为低电平,表示帧数据的开始。 - 数据位:般为7到8位,取决于实际需求。 - 奇偶校验位:用于检测传输错误,可以选择无校验、奇校验或偶校验。 - 停止位:高电平持续时间,可以是倍或多倍于比特周期。 3. **超时机制** 在长时间未接收到有效数据时,应引入超时机制来防止死锁现象的发生。这可以通过定时器实现,并结合事件驱动模型提升程序响应效率[^1]。 4. **流控策略** 实现软硬件握手功能非常重要。常用的方法包括XON/XOFF字符控制或者RTS/CTS信号线管理流量方向及速率调整。 #### 最佳实践 除了基本的设计原则之外,还有些经过验证的最佳实践经验可以帮助优化整个过程: 1. **CRC校验增强可靠性** 循环冗余检验(CRC)算法被广泛应用于保障消息完整性方面。特别是在噪声环境较为恶劣条件下尤为必要[^2]。 2. **采用异步模式减少耦合度** 使用UART这样的通用异步接收发送装置(UART),可以在不依赖外部时钟源的前提下完成高效的信息交换操作[^4]。 3. **模块化编码提高维护便利性** 将复杂的逻辑分解成独立的功能单元分别处理,比如初始化函数单独封装;读写操作各自定义接口形式等等做法均有利于后期升级迭代工作开展顺利进行下去。 4. **充分考虑边界条件测试覆盖范围广** 对极端情况下的行为表现给予特别关注,例如缓冲区溢出保护措施安排合理与否直接影响整体性能指标达成效果如何评估等问题都要仔细考量清楚才行。 ```python import serial from time import sleep def init_serial(port='/dev/ttyUSB0', baudrate=115200, timeout=1): ser = serial.Serial( port=port, baudrate=baudrate, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=timeout ) if not ser.is_open: raise Exception(f"Failed to open {port}") return ser def send_data(ser, data): try: ser.write(data.encode()) sleep(0.1) # Allow some delay for transmission except Exception as e: print(e) def read_response(ser): response = "" while True: byte = ser.read().decode('utf-8') if not byte or byte == '\n': break response += byte return response.strip() ``` 以上代码片段展示了如何利用Python中的`pyserial`库创建个简单的串口通信应用程序实例。其中包括了端口打开、数据发送以及响应读取等功能部分演示说明[^2]。 #### 标准参考 不同领域可能会有不同的特定要求和技术规格书可供查阅学习借鉴之处很多。例如工业自动化场景下经常涉及到Modbus RTU/TCP协议栈构建任务就需要参照官方文档指南执行相应步骤动作序列组合起来形成最终解决方案成果展示出来供大家交流讨论共同进步成长壮大队伍规模扩大影响力范围延伸出去影响更多人群受益匪浅值得推荐尝试下看看效果怎样再做进步改进完善细节方面的不足之处加以弥补修正过来达到预期目标为止结束本次话题分享环节谢谢大家的支持配合共同努力创造美好未来前景无限光明灿烂辉煌明天等着我们起去开创属于自己的传奇故事篇章吧! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值