HTTP协议

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

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件,图片文件,查询结果等)。

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

 

URL:

     

带层次的文件路径:浏览器请求的资源路径,  “ / ”是HTTP服务器定义的逻辑上的根目录

查询字符串: 浏览器给HTTP服务器提交的数据

              提交的单个数据是按照key=value的形式,多个数据之间用  &  进行分隔。

             URL编码(urlencode):防止在提交数据的时候不加区分,造成歧义

                                                  比如数据C++中的+表示一个字符而非表达式中的加。

       在传输特殊字符的时候,需要进行URL编码,编码的方式就是将特殊字符按照16进制进行传输,为了区别编码           之   后的字符,需要在编码之后的内容上加上% ,进行区分

       对于服务器而言,在接收URL编码之后的查询字符串后,需要进行URL解码

片段标识符:表示当前页面被浏览器加载之后,定位到了什么位置。 

 

 

 

HTTP请求/相应的步骤如下:

  1. 客户端连接到服务器(一个HTTP客户端,通常是 浏览器,与Web服务器的HTTP端口建立一个TCP套接字链接)
  2. 发送HTTP请求(通过TCP套接字,客户端向Web服务器发送一个文本的请求报文)
  3. 服务器接收请求并返回HTTP响应(Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,有客户端读取。)。
  4. 释放TCP连接(若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection模式为keepalive,则连接会保持一段时间,在该时间内可以继续接受请求)
  5. 客户端浏览器解析HTML内容

            客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

 


一个请求报文有请求首行、请求头部、空行和请求数据  4部分组成

请求首行:请求方法    URL    协议版本    \r\n

请求头部:具有多行数据,每行数据都是一个key:value的形式,每行数据都是用\r\n进行分隔。

一个响应由状态行、响应头部、空行、响应数据4部分组成

响应首行:协议版本   状态码  状态码解释   \r\n

响应头部:具有多行数据,每行数据都是一个key:value的形式,每行数据都是用\r\n进行分隔。

请求方法:

GET: 从服务器上面获取一个资源的方法

GET并不是只能向服务器获取资源,其实也可以在查询字符串当中提交数据到浏览器当中

GET请求提交的数据都是在URL当中

POST 向服务器提交数据的方法

POST提交的数据是在正文当中

总之:POST方法比GET方法更加私密,但使用加密操作(ssl tsl)才更加安全

 

请求头部:

Content-Length :正文长度,防止粘包

Content-Type:正文的编码格式

text/html:HTML格式 application/json:json数据格式

text/plain:纯文本格式 application/msword :word文档格式

text/png :png图片格式

referer:当前的页面是从哪一个页面跳转过来的

Cookie:向服务器日较浏览器本地保存的认证信息,认证信息是之前登陆服务器的时候,服务器返回回来的。

Tranfer-Encoding:针对正文,支持分块传输;

Location:和重定向搭配使用,http服务器会告诉浏览器,你刚刚请求的页面应该去哪一个地址上面重新申请下

User-Agent:声明操作系统和浏览器版本信息

Connection:keep-alive 保持长连接

 

状态码:

1xx 接收到的请求正在处理

2xx 请求正常处理完毕 eg:200 OK

3xx 重定向状态,表示浏览器需要进行附加操作,才能完成刚才的请求操作 eg 302 临时重定向

4xx 服务器无法处理这个请求 eg:404 Page Not Found

5xx 服务器处理出错了 eg:502 Bad Gateway

 

在浏览器地址栏键入URL,按下回车之后会经历哪些流程呢?

  1. 浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址

  2. 解析出IP地址后, 根据该IP地址和默认端口80,和服务器建立TCP连接

  3. 浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求作为TCP三次握手的第三个报文的数据发送给服务器

  4. 服务器对浏览器请求作出相应,并把对应的html文本发送给浏览器

  5. 释放TCP连接

  6. 浏览器显示html文本的内容

 

http协议是应用层的协议,在传输层使用tcp协议,在网络层使用ip协议

http本身是为了处理大量的请求,设计在传输层使用tcp连接为短连接,目前http已经支持了长链接

http是没有加密版本的http协议,加密版本可以使用https, s代表ssl:非对称加密

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值