最近总是遇到http无响应、乱码、响应超时的问题,去查了一些资料对http协议做了一个初步总结,供大家拍砖。
WEB服务器和浏览器之间的一问一答的交互过程也得遵循一定的规则,这个规则就是HTTP协议。它是TCP/IP协议集中的一个应用层协议,用于定义浏览器和WEB服务器之间交换数据过程以及数据本身的格式。现在被广泛使用的HTTP/1.1相对HTTP/1.0而言,最大的特点就是支持持续连接。
1.HTTP/1.0的会话方式:
建立连接,发送请求信息 -----------------------------------------> 客户机 服务器 <------------------------------------------ 关闭连接,回送响应消息
每次连接只处理一个请求,即使是对同一个网站的每一个页面的访问,浏览器和WEB服务器都要建立一次单独的连接。
2.HTTP/1.1的会话方式:
建立连接,第1个请求信息 --------------------------------------------------------------------------> ............ 发送第N请求信息 --------------------------------------------------------------------------> 客户机 回送第1次响应 服务器 <-------------------------------------------------------------------------- .............. 回应第n次响应 <-------------------------------------------------------------------------- 发送关闭连接请求 --------------------------------------------------------------------------> 关闭连接 <--------------------------------------------------------------------------
HTTP/1.1 支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图象的网页文件的多个请求和响应可以在一个连接中传输,但每个单独的网页文件的请求和响应仍然需要使用各自的连接,还允许客户端不用等待上一次请求结果返回就可以发送下一个请求。
HTTP消息的格式:
一个完整的请求消息包括:一个请求行、若干消息头、以及实体内容。
一个完整的响应消息包括:一个状态行、若干消息头、以及实体内容。
下面对这几个部分再做个详细的解说:
1.请求行:包括三个部分,即请求方式、资源路径、以及使用的HTTP协议版本。语法如下:请求方式 资源路径 HTTP版本号<CRLF>,其中<CRLF>表示回车和换行这两个字符的组合。HTTP请求方式包括POST、GET、 HEAD、OPTIONS、DELETE、TRACE和PUT几种。常用的是前两种。
2.状态行:包括HTTP协议的版本号、一个状态码、以及对状态码进行描述的文本信息。
语法如下:HTTP版本号 状态码 原因叙述<CRLF>
使用GET和POST传递参数:
在URL地址后面可以附加一些参数,每个参数都由参数名和参数值组成,中间用=分隔,各个参数用&分隔,URL地址和整个参数之间用?分隔,如下所示:
http://www.it315.org/servlet/ParamsServlet?param1=aaa¶m2=bbb
使用GET传递参数的数据量是有限的,一般限制在1KB以下。使用POST比GET要大的多。是没有限制的。但是必须设置Content=Type消息头为‘application/x-www-form-urlencoded’和设置Content-Length消息头为实体内容的长度。
响应状态码:
-
200:表示一切正常,返回的是正常请求结果。
-
404:表示服务器上不存在客户机上所请求的资源,这个状态码在浏览网页时最常见的。
状态代码
-
200 OK (正常)
-
201 Created
-
301 Moved Permanently (页面已经永久性地迁移)
-
302 Found
-
304 Not Modified
-
307 Temporary Redirect (页面暂时性地迁移到了别的地方,由 Location 指定)
-
400 Bad Request
-
401 Unauthorized
-
403 Forbidden
-
404 Not Found (页面没有找到)
-
500 Internal Server Error (服务器端发生错误)
-
501 Not Implemented
通用信息头:
-
Cache-Control:此字段用于通知客户机和服务器之间的代理服务器如何使用已缓存的页面。
-
Connection:用于指定处理完本次请求/响应后,客户端和服务器是否还要继续保持连接。
-
Date:用于表示HTTP消息产生的当前时间。
-
Transfer-Encoding:用于指定实体内容的传输编码方式。
请求头:
-
Accept:用于指定客户端程序能够处理的MIME类型。有多个时用逗号隔开。
-
Accept-Charset:指出客户端程序可以使用的字符集。有多个时用逗号隔开。
-
Accept-Encoding:指定客户机能够进行解码的数据编码方式。有多个时用逗号隔开。
-
Accept-Language:指定客户机期望服务器返回哪个国家语言的文档。有多个时用逗号隔开。
-
Host:指定资源所在的主机名和端口号。
响应头:
-
Accept-Range:用于说明当前WEB服务器是否接受Range请求和Range请求中指定的数据的单位。
-
Location:用于通知客户机应该到哪个新的地址去获取文档。由于当前响应并没有直接返回内容给客户机,所以使用Location头的HTTP消息不应该有实体内容,由此可见,在消息头中不能同时出现Location和Contect-Type这两个头自段。
实体头:
-
Allow:用于指定客户机请求的资源所支持的请求方法。
-
Content-Encoding:用于指定实体内容的压缩编码方式。
-
Content-Language:用于指定返回的网页文档的国家语言类型。
-
Content-Length:用于指定实体内容的长度。
-
Content-Location:用于指定响应消息中所封装的实体内容的实际位置路径。
-
Content-Type:用于指定实体内容的MIME类型。客户机通过检查服务器响应消息的此字段中的MIME类型就能知道实体内容的数据格式和知道以何种方式来进行处理了。<Tomcat>安装目录下的conf目录下的web.xml文件里面就定义了很多的类型。
-
Last-Modified:用于指定文档的最后修改时间。
扩展头:
-
Refresh:此字段告诉浏览器隔多长时间刷新。
相关推荐
尽管TCP/IP协议为互联网通信提供了基础支持,但其在设计之初并未充分考虑安全性,导致了一系列安全隐患。IPSec协议作为一种有效的解决方案,通过在IP层提供加密和认证服务,显著增强了网络的安全性。随着网络安全...
1. **Xmodem协议**:由Bob Frankston在1970年代初开发,是最早的文件传输协议之一。Xmodem每次传输一个128字节的数据块,包含一个校验和来检测错误。如果接收方检测到错误,会请求发送方重新发送该数据块。这种简单...
协议部分可能涉及HTTP/2等协议的使用,传输层技术可能涵盖TCP/IP的优化,而中继节点互通则关注如何在不同节点间高效、灵活地交换数据。 问题待解部分提出了两个挑战:采用多节点后的延迟问题和多节点间的回溯问题。...
同时,理解计算机网络基础,如TCP/IP协议、HTTP协议,以及简单的网络编程知识。 【知识点四:软件工程】 初级程序员应了解软件开发的生命周期,包括需求分析、设计、编码、测试和维护等阶段。理解软件工程原则,如...
- **高效数据传输**:在握手阶段使用HTTP协议进行初始化,之后则直接使用二进制格式传输数据,大大提高了传输效率。 #### 五、WebSocket的工作原理 1. **握手过程**:客户端通过发送一个特殊的HTTP请求来发起...
API(Application Programming Interface)是一组预定义的函数、协议和工具,用于构建软件应用。在这里,开发者可能使用了某个诗词相关的API,如获取每日诗词、随机诗词等服务。对接API通常需要理解API的文档,了解...
2.1.4 HTTP协议与HTTPS协议的区别 14 2.2 截取HTTP请求 15 2.2.1 Burp Suite Proxy 初体验 15 2.2.2 Fiddler 19 2.2.3 WinSock Expert 24 2.3 HTTP应用:黑帽SEO之搜索引擎劫持 24 2.4 小结 25 第3章 信息探测 26 ...
4. **网络协议**:熟悉TCP/IP协议栈,理解HTTP、FTP等常见应用层协议的工作原理,有助于在游戏中的网络嗅探和欺骗活动。 5. **操作系统安全**:学习如何利用系统漏洞,例如权限提升,以及如何防范这些攻击,如安全...
ZeroMQ不仅仅是一个消息队列,更是一个强大的网络通信库,支持多种传输协议,如TCP、UDP、PUB/SUB、PAIR等模式,适用于多种编程语言,如C、C++、Python、Java等。 **安装ZeroMQ** 在安装ZeroMQ之前,你需要先访问...
培训课程 时间安排 分类 授课内容 章节 实验 第一天 基础篇 Web安全简介 第一节:服务器是如何被入侵的 第二节:如何更好的学习web安全 Web安全简介 第一节:http协议解析 1.发起http请求 2. http协议详解 3.模拟...
基础篇 Web安全简介 第一节:服务器是如何被入侵的 第二节:如何更好的学习web安全 Web安全简介 第一节:http协议解析 1.发起http请求 2. http协议详解 3.模拟http请求 4.http和https协议区别 第二节:截取HTTP请求...
4. **计算机网络**:会涉及到TCP/IP协议栈、网络传输层、应用层协议(如HTTP、FTP等)、网络安全和网络编程等知识。 5. **数据库系统**:包括关系数据库理论、SQL语言、数据库设计与优化、事务处理和并发控制等。 ...
服务器与客户端之间的通信协议,如HTTP、HTTPS,可以通过在数据传输前进行DES加密,确保数据在传输过程中不被窃取或篡改。然而,需要注意的是,由于DES的56位密钥长度相对较短,现代计算机可能在短时间内破解,因此...
- **阅读许可协议**: 在安装过程中,会弹出许可协议窗口,用户需要阅读并勾选“我同意该许可协议的条款”,然后点击“下一步”继续安装流程。 - **选择安装方式**: 通常情况下,建议选择“自动安装”选项以简化安装...
计算机网络的基础知识,如TCP/IP协议、HTTP协议;操作系统概念,如进程、线程、同步互斥等。 5. **离散数学**:集合论、图论、逻辑推理等,这些在解决复杂算法问题时十分关键。 6. **数据库基础**:SQL语言,包括...
4. AJAX和UpdatePanel:ASP.NET AJAX扩展了传统的HTTP协议,实现了页面的部分刷新,提高了用户体验。UpdatePanel是ASP.NET AJAX中的关键组件,它允许在不刷新整个页面的情况下更新部分内容,书中有详细的实操教程。 ...
然而,B/S架构的局限性,如HTTP协议的限制和服务器负载等问题,促使了RIA的诞生,它通过将部分计算任务转移到客户端,提升了交互性能,但并未牺牲易用性和部署的简易性。 展望未来,软件开发架构可能会呈现以下趋势...
4. **多数据中心**:Consul设计之初就考虑了多数据中心的场景,每个数据中心可以有自己的Consul集群,通过 gossip 协议进行数据同步,实现全局的服务发现和健康检查。 5. **DNS集成**:Consul可以通过内置的DNS...
- **HTTP**:超文本传输协议,用于Web通信。 - **TCP/IP**:传输控制协议/互联网协议,构成互联网的基础。 9. **Spring框架**: - **Spring MVC**:Spring框架的一部分,用于构建Web应用。 - **Spring**:核心...
【标签】"ASP"进一步强调了这个项目的核心技术,即ASP,它在20世纪90年代末至21世纪初非常流行,特别是在Windows服务器环境中。ASP允许开发者通过HTML、CSS、JavaScript以及服务器端脚本创建动态网页,处理用户请求...