• HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,HTTP协议定义了浏览器(即万维网客户进程)怎样向万维网(WWW:World Wide Web )服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
  • 从层次的角度看,HTTP是面向事务的应用层协议。
  • HTTP协议工作于客户端-服务端(C/S)架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
  • HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
HTTP 工作流程
  1. 用户在点击鼠标链接某个万维网文档时,HTTP协议首先要和服务器建立TCP连接。这需要使用三报文握手。
  2. 当建立TCP连接的三报文握手的前两部分完成后(即经过了一个RTT时间后),万维网客户就把HTTP请求报文,作为建立TCP连接的三报文握手中的第三个报文的数据,发送给万维网服务器。
  3. 服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户。
HTTP 特点
  • HTTP是协议本身是无连接的。这就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
  • HTTP协议是无状态的。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。
HTTP 报文结构

HTTP有两类报文:

  1. 请求报文——从客户向服务器发送请求报文。
  2. 响应报文——从服务器到客户的回答。

由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。

HTTP请求报文和响应报文都是由三部分组成的:

  1. 开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行,而在响应报文中的开始行叫做状态行。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。
  2. 首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
  3. 实体主体,在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

请求报文的第一行“请求行”只有三个内容,即方法请求资源的URL,以及HTTP的版本

注意:这里的方法是对所请求的对象进行的操作这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。下面是一些常用方法:

方法(操作) 意义
OPTION 请求一些选项的信息
GET 请求读取由URL所标志的信息
HEAD 请求读取由URL所标志的信息的首部
POST 给服务器添加信息(例如,注释)
PUT 在指明的URL下存储一个文档
DELETE 删除指明的URL所标志的资源
TRACE 用来进行环回测试的请求报文
CONNECT 用于代理服务器

下面是HTTP的请求报文的开始行(即请求行)的格式。请注意,在GET后面有一个空格,接着是某个完整的URL,其后面又有一个空格,最后是HTTP/1.1。

GET  http://www.xyz.edu.cn/dir/index.htm  HTTP/1.1

下面是一个完整的HTTP请求报文的例子:

GET  /dir/index.htm  HTTP/1.1                //请求行使用了相对URL
Host: www.xyz.edu.cn                        //此行是首部行的开始。这行给出主机的域名
Connection: close                           //告诉服务器发送完请求的文档后就可释放连接
User-Agent: Mozilla/5.0                     //表明用户代理是使用火狐浏览器Firefox
Accept-Language: cn                         //表示用户希望优先得到中文版本的文档
//请求报文的最后还有一个空行

在请求行使用了相对URL(即省略了主机的域名)是因为下面的首部行(第2行)给出了主机的域名。第3行是告诉服务器不使用持续连接,表示浏览器希望服务器在传送完所请求的对象后即关闭TCP连接。这个请求报文没有实体主体。

响应报文的第一行“状态行”只有三个内容,即HTTP的版本状态码,以及解释状态码的简单短语

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。想具体了解状态码可以前往HTTP状态码。

下面三种状态行在响应报文中是经常见到的。

HTTP/1.1  202  Accepted          //接受
HTTP/1.1  400  Bad Request      //错误的请求
HTTP/1.1  404  Not Found        //找不到

若请求的网页从http://www.ee.xyz.edu/index.html 转移到了 一个新的地址,则响应报文的状态行和一个首部行就是下面的形式:

HTTP/1.1  301  Moved Permanently             //永久性地转移了
Location: http://www.xyz.edu/ee/index.html      //新的URL

HTTP(超文本传输协议)相关推荐

  1. Servlet - HTTP超文本传输协议

    HTTP (超文本传输协议) 超文本传输协议(HTTP)是用于协作.分布式.超媒体信息系统的应用级协议.它是用于建立客户端和服务器之间通信的数据通信协议.   HTTP协议是基于TCP/IP的通信协议 ...

  2. HTTP协议(HyperText Transfer Protocol,超文本传输协议)

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准. HTTP是一个基于TCP/IP通信 ...

  3. 吾解——HTTP(超文本传输协议)

    今天拜读了一本<图解HTTP>,将HTTP总结一下. HTTP(超文本传输协议):一种规则 1.定义:一个简单的请求-响应协议,它通常运行在TCP之上.它指定了客户端可能发送给服务器什么样 ...

  4. 计算机网络技术超文本,网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于()A、超文本传输协议B、传输控制协...

    网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于()A.超文本传输协议B.传输控制协 更多相关问题 尿血证常见的病因病机有______.脾不统血.______.脾肾两虚.______. ...

  5. http超文本传输协议

    http简介 超文本传输协议(HyperText Transfer Protocol),详细规定浏览器和万维网之间互相通信的规则,是万维网交换信息的基础,允许将HTML文档从Web服务器传送到Web服 ...

  6. 超文本传输协议及HTTP包

    HTTP协议用于在Internet上发送和接收消息.HTTP协议是一种请求-应答式的协议 --客户端发送一个请求,服务器返回该请求的应答,所有的请求与应答都是HTTP包.HTTP协议使用可靠的TCP连 ...

  7. 王道考研 计算机网络20 应用层 客户端/服务器C/S模型 P2P模型 DHCP协议 域名解析系统DNS 文件传送协议FTP 万维网 超文本传输协议HTTP

    应用层概述 FTP:文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议. SMTP:是一种提供可靠且有效的电子邮件传输的协议. POP3 ,全名为&q ...

  8. 网络(7)-HTTP(HyperText Transfer Protocol,超文本传输协议)

    http是一个简单的请求-响应协议,它通常运行在TCP之上.它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应.请求和响应消息的头以ASCII码形式给出:而消息内容则具有一个类似MIME的 ...

  9. Hyper Text Transfer Protocol(超文本传输协议)

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

最新文章

  1. Hashing散列注意事项
  2. 挑战权威还是偏离主流?颠覆性研究或将证明神经信号是机械波
  3. thinkphp去掉index.php
  4. 1—YOLO2:环境搭建
  5. SQL语句大全(转)
  6. UVA - 11520 Fill the Square
  7. 为web站点提供https服务的步骤
  8. JAVASCRIPT 高级程序设计 第二版pdf
  9. 在IDEA中使用Linux命令
  10. Android控件 TextView属性大全
  11. echarts写地图,调用本地地图json数据,实现秒下钻功能
  12. HTML网页设计制作大作业 html+css+js萌宠之家 网页设计与实现
  13. 单相功率因数校正PFC电路的simulink仿真(从电路图搭建到C语言实现PID控制)
  14. 阿里乾坤qiankun
  15. 一个屌丝程序员的青春(二零二)
  16. 一个牛逼的程序员是什么样的?
  17. 软件设计模式--软件设计演变过程
  18. 基于视觉的车道线识别技术在智能车导航中的应用研究
  19. 自定义UDF函数:随机生成N位随机数,包含字母,数字
  20. 神马竞价账户基本结构?

热门文章

  1. 如何转换并压缩png格式图片
  2. shrio 权限管理filterChainDefinitions过滤器配置(转)
  3. zabbix 之 配置iptables允许10050端口
  4. BZOJ 3053 The Closest M Points
  5. Linux之使用网络
  6. 第三部分 03 使用HTTP GET进行调用
  7. ideahtml调用jquery函数失败_[WEB篇]-JQuery-06-Jquery实现异步调用
  8. java write阻塞_java socket/output stream writes:他们阻塞?
  9. Java-LockSupport
  10. Bootstrap-datetimepicker控件使用