Http协议简介

一、何为HTTP:
    HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
    上述是对HTTP协议的工作流程做了概述,但是在了解HTTP工作原理之前需要对两个点有所了解:TCP/IP工作原理、DNS协议原理。笔者转载一篇有关这两点的基础知识文章
在阅读完这篇文章后,接着学习有关HTTP工作原理:
 
二、HTTP——URL
"hXXp://www.baidu.com:8080/docs/index.asp?PID=927&page=6#name"
这是一段完整的URL连接,从上面可以看出一个完整URL包括以下几部分组成:
1.协议部分:"http:" 这表示网页使用Http协议,当使用FTP协议传输时候则使用"ftp:" 后面的//为分隔符
2.域名部分:www.baidu.com为域名 也可以使用对应IP的作为域名
3.端口部分:域名后面则为端口 其中的冒号为分隔符,如果不带端口则采用默认端口
4.虚拟目录部分:从第一个/ 到最后一个/ 为虚拟目录部分,上述URL中 /docs/为虚拟目录
5.文件名部分:从域名最后一个/到?为止,是文件名部分,如果没有?则是从/到#为止,如果都没有?#那就是最后一个/到最后部分为文件名部分.这里的文件名部分为index.asp
6.锚部分:从#开始到最后是锚部分,其中锚部分为name
7.参数部分:从?到#之间的的部分为参数部分这里的参数为PID=927&page=6
 
三、HTTP——请求消息Request
客户端向服务器发送一个HTTP请求时候,如下
1.GET方式
 
GET /562f25980001b1b106000338.jpg HTTP/1.1
Host img.mukewang.com
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept image/webp,image/*,*/*;q=0.8
Referer http://www.imooc.com/
Accept-Encoding gzip, deflate, sdch
Accept-Language zh-CN,zh;q=0.8
 
其中包括四部分:
第一部分为请求行,说明请求的类型以及要访问的资源、http版本:
GET /562f25980001b1b106000338.jpg HTTP/1.1
 
第二部分为请求头部,第一行请求行之后的部分,用来说明服务器所使用的附加信息
 
 
第三部分为空行 有空行意味着需要将第三部分和第四部分作为分割
 
第四部分 请求数据:可以添加任意其他数据  上例中没有此数据
 
2.POST方式
 
POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive
(空行,必须)
name=Professional%20Ajax&publisher=Wiley
 
与GET方式一致POST也是分为4部分:
第一部分:请求行:说明POST请求,以及HTTP1.1版本
第二部分:请求头:Host到Connection之间的部分。
第三部分:空行
第四部分:请求数据
 
四、HTTP——响应消息Response
 
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
(空行,必须)
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
 
HTTP的响应也分为四部分:
1.状态行:HTTP为版本1.1 状态码200 状态消息为OK
2.消息:Date与Content-Ytpe(说明MIME类型为HTML,编码格式utf-8)
3.空行:必须
4.响应正文:空行后面部分为响应正文
 
五,总结工作流程
HTTP 请求/响应的工作流程:
1.客户端发送HTTP请求
    客户端通过TCP套接字,向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
2.服务器接收请求并返回HTTP响应
    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
3.释放连接TCP连接
    若connection模式为close、则服务器主动关闭TCP连接。客户端被动关闭连接、释放TCP连接。若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
4.客户端浏览器解析HTML内容
    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
 
 
原文地址:https://www.cnblogs.com/Tempt/p/11824976.html