网络协议对接——HTTP

本文详细介绍了HTTP协议的工作原理,包括请求-响应模型、HTTP请求方法、状态码以及其无连接、无状态的特点。此外,还阐述了HTTP请求和响应的组成部分,以及TCP连接的建立与释放过程。
   在嵌入式设备中,软件定制组常用的网络协议类型有:Http、Https、WebService、WebSocket、Mqtt、Tcp自定义协议、Udp自定义协议等。
   
   **今天的主角:HTTP**
   
  HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网服务器传输超文本到本地浏览器的传送协议。
  HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。
  HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
  HTTP协议工作于客户端-服务器架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。WEB服务器根据接收到的请求,向客户端发送响应信息。

http请求-响应模型
http请求-响应模型

特点:
1.简单快捷:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因为通信速度很快。
2.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时他的应答就较快。
5.支持B/S及C/S模式:Client/Server是建立在局域网的基础上的,Browser/Server是建立在广域网的基础上的,内外网都支持HTTP的请求与访问。<

### TCP/IP 协议实现 TCP/IP协议通过四个层次来定义通信过程,每一层负责不同的功能并提供服务给上一层。具体来说: - **应用层**:为用户提供各种高级应用程序接口和服务,如HTTP、FTP等[^2]。 - **传输层**:主要由两个核心协议构成——TCP和UDP。其中,TCP提供了可靠的数据流传输机制;而UDP则用于不需要确认消息到达情况下的快速发送[^1]。 - **网络层**:处理无连接的逻辑寻址以及最佳路径选择问题,即路由选择。该层最著名的协议就是IP(Internet Protocol),它规定了如何在网络之间传递数据包。 - **链路层/网络接口层**:负责物理地址解析(ARP)、错误检测等功能,并最终完成实际比特级的信息传送工作。 #### 数据封装与解封流程 当一台计算机要向另一台发送信息时,会按照如下顺序进行操作: 1. 应用程序产生的原始数据被交给传输层; 2. 传输层加上必要的头部信息形成段(Segment, 对于TCP而言) 或者报文(Datagram, 针对UDP), 并将其提交到下一层—网络层; 3. 网络层再附加自己的头文件创建IP数据报(Data Packet); 4. 接着这些数据报会被送到链路层,在这里它们成为帧(Frame); 5. 帧经过物理介质传送给接收方之后,整个过程反过来执行,逐层剥离各层添加的内容直到恢复最初的应用层数据。 ```python def tcp_ip_encapsulation(data): """ 模拟TCP/IP 封装过程 参数: data (str): 来自应用层的数据 返回值: tuple: 包含五元组形式表示的一系列封装后的数据结构 ('Application Data', 'Transport Layer Segment', 'Network Layer Datagram', 'Link Layer Frame') """ transport_layer_segment = f"TCP Header + {data}" network_layer_datagram = f"IP Header + {transport_layer_segment}" link_layer_frame = f"Ethernet Header + {network_layer_datagram}" return ("Application Data", "Transport Layer Segment", "Network Layer Datagram", "Link Layer Frame") # 调用函数模拟一次完整的TCP/IP封装动作 encapsulated_data = tcp_ip_encapsulation("Hello World!") for item in encapsulated_data: print(item) ``` ### TCP/IP 的应用场景 由于其强大的互连互通能力,TCP/IP几乎适用于所有的现代互联网环境当中: - Web浏览依赖HTTP/S协议运行在TCP之上,确保网页内容能够安全稳定地加载显示出来。 - 文件传输通常采用FTP(File Transfer Protocol)或SFTP(Secure File Transfer Protocol),这两种都是基于TCP构建的服务端口,默认情况下分别监听21号和22号端口号。 - VoIP(Voice over Internet Protocol)电话通话也离不开TCP的支持,尽管有时为了减少延迟会选择更轻量级但不可靠的RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)组合方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值