从零讲解HTTP协议

今天正好有时间,就给大家写一点HTTP协议入门教程,从零开始为大家讲解什么是HTTP协议。

一、什么是HTTP协议

HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,定义了Web客户端向Web服务器请求Web页面的方式,以及服务器向客户端传送Web页面的方式。

定义中的名词解释:

什么是超文本?

超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。

什么是应用层协议?

网络的设计者使用分层的方式组织网络协议以及实现这些协议的硬件和软件,历史上比较重要的一个协议组织模型是五层因特网协议栈,从顶层到底层,分别为应用层、运输层、网络层、链路层、物理层。其中应用层常见的协议有HTTP、SMTP、FTP等,运输层协议有TCP、UDP等,网络层有IP等。

二、HTTP协议特点

1. HTTP使用TCP作为它的运输层协议,TCP为HTTP提供可靠数据传输服务。使用了分层结构,HTTP协议不用担心数据丢失,也不用关注TCP从网络的数据丢失和乱序故障中恢复的细节。

2. HTTP是一个无状态协议,服务器向客户端发送被请求的文件,而不保存任何关于该客户的信息,(需要保存则应当使用cookie)。

3. HTTP/1.0使用非持续连接,HTTP/1.1使用持续连接。使用持续连接,在客户和服务器中不用多次分配TCP的缓冲区和保持TCP变量,同时避免了每一个传输对象的两倍RTT交付时延。HTTP的默认模式是使用带流水线的持续连接。

三、HTTP报文格式

1. 请求报文

举例如下:

GET  /somedir/page.html  HTTP/1.1

Host:  www.someschool.edu

Connection: close

User-agent: Mozilla/5.0

Accept-language: fr

-------------------------------------------------------

First line: request line

Other lines: header line

请求行: 方法字段 - URL字段 - HTTP版本字段

其中,方法字段可取GET, POST, HEAD, PUT, DELETE等

默认为GET请求,在URL后附带参数,有大小限制,不超过1K

表单提交中指明用POST时用POST,在实体中传递,无大小限制

HEAD方法常用于调试,只返回HTTP报文,不返回请求对象

Connection: close表示不使用持续连接

常见的请求头:

Accept: text/html,image/*   客户可接受的数据类型

Accept-Charset: ISO-8859-1  接受数据需要使用的字符集编码

Accept-Encoding: gzip,compress  接受的数据压缩格式

Accept-Language: en-us,zh-cn  接受的语言环境

Host: www.it315.org:80  虚拟主机名

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  缓存资源的最后获取时间

Referer: http://www.it315.org/index.jsp  当前的请求来自哪个链接

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  客户端的信息

Cookie

Connection: close/Keep-Alive  指定是否保持连接

Date: Tue, 11 Jul 2000 18:23:51 GMT  当前时间

2. 响应报文

举例如下:

HTTP/1.1 200 ok

Connection: close

Date: Tue, 09 Aug 2011 15:44:04 GMT

Server: Apache/2.2.3 (CentOS)

Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT

Content-Length: 6821

Content-Type: text/html

(Data, Data, Data ...)

-------------------------------------------------------

First line: status line

Last line: entity body

Other lines: header line

状态行:协议版本 - 状态码 - 状态信息

状态码和状态信息常见的有:

200 OK

301 Moved Permanently

400 Bad Request

404 Not found

505 HTTP Version Not Supported

-------------------------------------------------------

100 ~ 199 表示成功接收,客户端需要继续提交才能完成整个过程,200 ~ 299 表示成功接收并已完成整个过程

300 ~ 399 为完成请求,客户需要进一步细化请求,如302请求重定向,304, 307 通知使用缓存

400 ~ 499 客户端请求有错误

500 ~ 599 服务器端出现错误

常见的响应头:

Location: http://www.it315.org/index.jsp  配合302实现请求重定向

Server:apache tomcat  服务器的基本信息

Content-Encoding: gzip  服务器发送数据时使用的压缩格式

Content-Length: 80  发送数据的大小

Content-Language: zh-cn  发送数据使用的语言环境

Content-Type: text/html; charset=GB2312  当前所发送的数据的基本信息

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  缓存相关

Refresh: 1;url=http://www.it315.org  定时刷新到某个URL

Content-Disposition: attachment;filename=aaa.zip  与下载有关的头

Transfer-Encoding: chunked  数据传输类型,数据一块块传输

Set-Cookie:SS=Q0=5Lb_nQ; path=/search  设置cookie

ETag: W/"83794-1208174400000"  和缓存相关

Expires: -1 指定资源缓存的时间,如果取值为0或-1浏览就不缓存资源

Cache-Control: no-cache  如果为no-cache则通知浏览器不缓存

Pragma: no-cache   如果为no-cache则通知浏览器不缓存

由于历史原因,以上三个都用来控制缓存,同时使用

Connection: close/Keep-Alive  是否保持连接

Date: Tue, 11 Jul 2000 18:23:51 GMT 当前时间

原文来自:Linux社区

时间: 2024-11-08 19:22:02

从零讲解HTTP协议的相关文章

iOS- 如何使用Apple的零配置网络协议Bonjour?

1.前言 这段时间为了解决公司App的网络离线需求,做了个Apple推出的零配置网络协议Bonjour的Test,主要是为了解决iOS设备的IP获取,之前是可以使用socket的广播来实现,但是使用Apple推出的Bonjor相比会更加简单和稳定.希望能对大家有点帮助,如果有什么地方有error也欢迎大家指出,互相学习. 这是之前写过的一篇关于socket的blog——socket广播 iOS- 移动端Socket UDP协议广播机制的实现 2.什么是Bonjour?能做些什么? 相信没有了解过

第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么

第四十六个知识点 在Sigma协议中,正确性,公正性和零知识性意味着什么 Sigma协议 Sigma协议是Alice想要向Bob证明一些东西的协议(Alice知道一些秘密).他们有下面的一般范式:Alice知道一个秘密,Alice和Bob都分享了一些相同的信息.因此: Alice给Bob发送了一个值,这个值叫做承诺(commitment). Bob均匀的随机选择一个挑战(challenge)发送给Alice. Alice计算一个回应(response)发送给Bob. Bob检查回应,接受或者拒绝

HTTPS协议在Tomcat中启用是如何配置的

版权声明:本文为博主阿甘(Gane_Cheng)原创文章,欢迎转载,传播知识,请留言告知并注明出处,方便文章有误改正之后能找到原文.个人之言,请抱着怀疑的态度参考! 目录(?)[+] 转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/53001846.html (浏览效果更好) 本文将讲解HTTPS协议在Tomcat中启用是如何配置的. 概念简介 Tom

linux下使用quagga配置ospf协议

环境:三台redhat6.5(VM虚拟机) 一.ospf协议 OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由.是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部. PS:这里不过多讲解ospf协议,可在网上自行查找学习 二.配置 首先下载安装软件包,其他yum源以及网络配置就不再

架构设计:系统间通信(19)——MQ:消息协议(上)

1.概述 从本文开始,我们介绍另一类型的系统间通讯及输:MQ消息队列.首先我们将讨论几种常用消息队列协议的基本原理和工作方式,包括MQTT.XMPP.Stomp.AMQP.OpenWire等.然后在这个基础上介绍两款MQ产品:ActiveMQ和RabbitMQ,它们是现在业务系统中应用广泛的消息队列软件.包括他们的安装.运行.支持协议.集群化和调用方式. 当然,在这个过程中我们还会提到其他的消息队列协议(或者实现),例如微软JBossMQ.MSMQ.商业化产品WebSphere MQ.Oracl

架构设计:系统间通信(20)——MQ:消息协议(下)

(接上文<架构设计:系统间通信(19)--MQ:消息协议(上)>) 上篇文章中我们重点讨论了"协议"的重要性,并为各位读者介绍了Stomp协议和XMPP协议.这两种协议是消息队列中两种不同使用场景下的典型代表.本文主要接续上文的篇幅,继续讨论消息队列中另一种典型协议:AMQP协议. 3-3.AMQP协议 AMQP协议的全称是:Advanced Message Queuing Protocol(高级消息队列协议).目前AMQP协议的版本为 Version 1.0,这个协议标准

HTTP协议——学习资料小结

嗯,这几天回头再次的学习Servlet的知识点,觉得HTTP协议的内容是相当重要的,现在虽然知道浏览器与应用程序的交互离不开它,但是怎么将信息从浏览器传输到服务器的这个知识点还是一个盲点.于是从网上找了找相关的资料大概的能让我明白了一些这里面的情况,当然,具体的实现等等还不是特别的清楚,下面先记录下来这些不错的入门的网络资源,然后在慢慢将这些知识盲点补上来,非常感谢原作者的辛勤写作! 1:特别推荐看一看阮一峰老师的关于网络协议的两篇非常棒的博文(阮老师的其他博文也是相当的精彩,主要是通俗易懂,简

【转】Tomcat启用HTTPS协议配置过程

转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/53001846 http://www.ganecheng.tech/blog/53001846.html (浏览效果更好) 本文将讲解HTTPS协议在Tomcat中启用是如何配置的. 1. 概念简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选. HTTP

Java网络编程从入门到精通(20):HTTP协议简介

一.什么是HTTP协议 HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写.HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据.HTTP协议主要用于Web浏览器和Web服务器之间的数据交换.我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入http://host:port/path,开头的4个字母http就相当于通知浏览器使用HTTP协议来和host所确定的服务器进行通讯. HTTP协议