`

http协议简单总结

阅读更多
本文大量参考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协议精析 HTTP(Hypertext Transfer Protocol),即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网的基础,负责处理客户端(如浏览器)与服务器之间的通信。以下是对...

    Netty HTTP协议简单实现

    总结,Netty HTTP 协议的简单实现涉及了 Netty 的基础架构、HTTP 编解码器的使用以及自定义处理器的编写。通过理解和实践这些步骤,你可以构建出一个高效的、可扩展的 HTTP 服务。在实际开发中,还需要关注性能优化...

    Gopher协议使用总结1

    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主要用于浏览器与服务器...

    Web+HTTP+超文本传输协议核心总结 完整PDF

    超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送...本文档是一部HTTP协议的总结性内容,排版优美,便于学习,喜欢的朋友可以下载学习。

    文件传输协议的简单设计与实现

    在服务器Web管理领域,为了更好地管理和控制服务器上的各种资源(如文件、注册表、网络防护等),一种基于HTTP协议的思想被用来设计一个简单的控制协议。该协议主要用于实现对伪agent的控制,即能够通过该协议让伪...

    http实验报告

    本次实验是关于HTTP协议的深入理解和应用,通过在虚拟机环境中安装Windows Server 2008和Windows XP系统,构建了一个简单的Web服务器和客户端的局域网模型。实验的主要目的是加强HTTP协议的理解,掌握Web服务器的...

    HTTP协议详解PDF可打印版RFC2616

    总结,HTTP协议作为互联网的核心协议,理解其工作原理和细节至关重要。通过阅读和研究RFC2616,我们可以深入掌握HTTP/1.1的规范,从而更好地进行Web开发和网络通信设计。而这个PDF版本的文档,则为我们提供了便捷的...

    Http协议原理详解

    总结,HTTP协议是构建Web应用的基础,其简单、灵活的特性使得网络通信变得高效且易于实现。了解和掌握HTTP协议原理对于开发和调试Web应用至关重要。随着技术的发展,HTTP也在不断演进,以适应更加复杂和高效的需求。

    网络协议分析-重点总结.pdf

    - Web服务中的HTTP协议使用TCP协议,用于在客户端与服务器之间传输网页数据。 - 文件传输协议FTP使用TCP协议,允许客户端与服务器之间进行文件上传和下载。 - 流式多媒体应用可能使用UDP协议,例如RTP(实时传输...

    HTTP协议中文版.pdf

    ### HTTP协议核心知识点详解 #### 一、HTTP协议概述 **HTTP**(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的信息传输协议。它最初由Tim Berners-Lee等人设计,目的是为了支持万维网的...

    C# 操作http协议学习总结下.docx

    【C# 操作HTTP协议学习总结】 在C#编程中,操作HTTP协议通常是网络通信的基础,用于发送和接收数据。System.Net.Http命名空间提供了一系列类和方法,使得开发者能够方便地进行HTTP请求和响应的处理。本文将重点讨论...

    TCPIP协议族功能总结----每年必考协议.pdf

    - **HTTP(超文本传输协议)**:Web浏览器和服务器之间的基础协议,用于传输网页内容。 - **DNS(域名系统)**:将易于记忆的域名转换为IP地址。 - **TFTP(简单文件传输协议)**:用于简单的文件传输,通常在...

    HTTP协议和数据网络

    总结起来,HTTP协议是互联网上数据交换的基础,而数据网络则是这一切得以实现的物理和逻辑架构。理解这两者的工作原理对于网络开发和运维人员至关重要。通过深入学习和实践,我们可以更好地优化网络性能,解决网络...

    http协议详细分析 经典

    HTTP(超文本传输协议)是...总结来说,HTTP协议是Web服务的基础,它规定了客户端和服务器间数据交换的格式和流程。通过深入理解HTTP,开发者可以更好地优化网页加载速度、处理网络问题,并设计更高效的Web应用程序。

    http协议教程,对协议进行简单基础的了解

    HTTP(Hypertext ...总结来说,HTTP协议是一个标准化的通信协议,定义了Web客户端和服务器之间的交互方式。了解和掌握HTTP协议的原理和细节,对于开发Web应用、优化网络性能、处理错误和异常情况都具有重要意义。

    netty http协议开发小例子

    总结来说,通过 Netty 实现 HTTP 协议的开发,我们可以利用其高性能的异步 I/O 模型和丰富的协议支持,构建出高效且可扩展的网络服务。通过提供的“NettyStudyServer”,我们可以学习如何创建一个简单的文件服务器,...

    thrift实现http协议案例

    总结一下,Thrift实现HTTP协议的关键在于创建一个自定义Servlet,该Servlet负责将HTTP请求转化为Thrift调用,并将Thrift的响应转换回HTTP响应。这种做法允许我们在保持Thrift高效RPC特性的前提下,利用HTTP作为传输...

Global site tag (gtag.js) - Google Analytics