本文大量参考http://zsxxsz.iteye.com/blog/568250,对原作者表示感谢
一、协议层次
http是应用层的协议,地位类似于SMTP FTP等,是构建在传输层协议TCP之上
二、数据封装
由于http处于最上层的应用层,所以其HTTP报文需要经过多次封装,才能在网络间传递
三、消息格式
HTTP请求和HTTP响应,都称为http消息,包括消息头和消息体
消息头包括消息行、实体头、头部结束标识;其中实体头又包括通用头、请求头(响应头)、实体头
消息体就是HTTP数据体,在RFC2616中称为HTTP Entity,不是必选的。比如HTTP GET请求,就只有请求头,没有请求体
四、消息格式举例
五、HTTP的局限性
http规范的几个约束,决定了它目前有一些缺陷,需要通过其他方式来进行规避
首先http协议是无状态的,所以每次请求对于服务端来说都是新请求,服务端无法记忆客户端此前发来的请求。规避这个限制的方法有session cookie等,都需要额外编程来实现
其次http协议是text-based的,也就是说http消息体里面,都是一些纯文本,没法天然表示对象的类型(json某种程度上就可以)。所以在服务端,需要额外的编程,来把纯文本信息转换成对象
最后,http协议是纯粹的请求-响应模型,也就是说,服务端没有办法主动发起对客户端的请求。
规避这个问题,最常见的方式是客户端用轮询的方式,定时主动发起请求,给人的感觉就像是服务端主动推送的一样。但是如果轮询太频繁,对服务端会造成较大压力
还有一种方式,是服务端和客户端保持长连接,服务端利用这个长连接,将后续的消息发回客户端,这类实现有comet等
另外,现在的html5,有一种websocket,好像也能解决这个问题
还有一种方法,是在客户端添加某些插件,比如flex,以及古老的applet
总的来说,我见过最多的还是第一种方式,comet和websocket,现在好像都还不是很成熟,没见过广泛的应用。哪位网友有实践经验,还请介绍一下
六、与socket的关系
socket在不同的平台有不同的实现,比如java.net包里,就提供了java平台的socket实现,利用这组API,可以进行比较容易的网络编程。
socket用的不是http协议,只是其传输层协议也是用的TCP和UDP。总的来说,socket和http关系不大。http是应用层协议,而socket是一组编程API接口。两者都是构建于传输层协议(TCP、UDP)之上
- 大小: 57.8 KB
- 大小: 90.1 KB
- 大小: 55 KB
- 大小: 58.8 KB
分享到:
相关推荐
### HTTP协议精析 HTTP(Hypertext Transfer Protocol),即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网的基础,负责处理客户端(如浏览器)与服务器之间的通信。以下是对...
总结,Netty HTTP 协议的简单实现涉及了 Netty 的基础架构、HTTP 编解码器的使用以及自定义处理器的编写。通过理解和实践这些步骤,你可以构建出一个高效的、可扩展的 HTTP 服务。在实际开发中,还需要关注性能优化...
3. 替换所有 '\r'(回车)为 '%0d%0a',这代表HTTP协议中的换行符。 4. 删除空白行,用 '%0a' 替换,表示HTTP协议中的行结束。 5. 对URL中的问号 '?' 进行URL编码,变为 '%3f',空格转换为 '%20'。 6. 在HTTP包末尾...
#### 一、HTTP协议详解 **1.1 定义** HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种应用层协议,它通过利用更低层的TCP/IP协议来实现客户端与服务器之间的数据交互。HTTP主要用于浏览器与服务器...
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送...本文档是一部HTTP协议的总结性内容,排版优美,便于学习,喜欢的朋友可以下载学习。
在服务器Web管理领域,为了更好地管理和控制服务器上的各种资源(如文件、注册表、网络防护等),一种基于HTTP协议的思想被用来设计一个简单的控制协议。该协议主要用于实现对伪agent的控制,即能够通过该协议让伪...
本次实验是关于HTTP协议的深入理解和应用,通过在虚拟机环境中安装Windows Server 2008和Windows XP系统,构建了一个简单的Web服务器和客户端的局域网模型。实验的主要目的是加强HTTP协议的理解,掌握Web服务器的...
总结,HTTP协议作为互联网的核心协议,理解其工作原理和细节至关重要。通过阅读和研究RFC2616,我们可以深入掌握HTTP/1.1的规范,从而更好地进行Web开发和网络通信设计。而这个PDF版本的文档,则为我们提供了便捷的...
总结,HTTP协议是构建Web应用的基础,其简单、灵活的特性使得网络通信变得高效且易于实现。了解和掌握HTTP协议原理对于开发和调试Web应用至关重要。随着技术的发展,HTTP也在不断演进,以适应更加复杂和高效的需求。
- Web服务中的HTTP协议使用TCP协议,用于在客户端与服务器之间传输网页数据。 - 文件传输协议FTP使用TCP协议,允许客户端与服务器之间进行文件上传和下载。 - 流式多媒体应用可能使用UDP协议,例如RTP(实时传输...
### HTTP协议核心知识点详解 #### 一、HTTP协议概述 **HTTP**(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的信息传输协议。它最初由Tim Berners-Lee等人设计,目的是为了支持万维网的...
【C# 操作HTTP协议学习总结】 在C#编程中,操作HTTP协议通常是网络通信的基础,用于发送和接收数据。System.Net.Http命名空间提供了一系列类和方法,使得开发者能够方便地进行HTTP请求和响应的处理。本文将重点讨论...
- **HTTP(超文本传输协议)**:Web浏览器和服务器之间的基础协议,用于传输网页内容。 - **DNS(域名系统)**:将易于记忆的域名转换为IP地址。 - **TFTP(简单文件传输协议)**:用于简单的文件传输,通常在...
总结起来,HTTP协议是互联网上数据交换的基础,而数据网络则是这一切得以实现的物理和逻辑架构。理解这两者的工作原理对于网络开发和运维人员至关重要。通过深入学习和实践,我们可以更好地优化网络性能,解决网络...
HTTP(超文本传输协议)是...总结来说,HTTP协议是Web服务的基础,它规定了客户端和服务器间数据交换的格式和流程。通过深入理解HTTP,开发者可以更好地优化网页加载速度、处理网络问题,并设计更高效的Web应用程序。
HTTP(Hypertext ...总结来说,HTTP协议是一个标准化的通信协议,定义了Web客户端和服务器之间的交互方式。了解和掌握HTTP协议的原理和细节,对于开发Web应用、优化网络性能、处理错误和异常情况都具有重要意义。
总结来说,通过 Netty 实现 HTTP 协议的开发,我们可以利用其高性能的异步 I/O 模型和丰富的协议支持,构建出高效且可扩展的网络服务。通过提供的“NettyStudyServer”,我们可以学习如何创建一个简单的文件服务器,...
总结一下,Thrift实现HTTP协议的关键在于创建一个自定义Servlet,该Servlet负责将HTTP请求转化为Thrift调用,并将Thrift的响应转换回HTTP响应。这种做法允许我们在保持Thrift高效RPC特性的前提下,利用HTTP作为传输...