HTML语言是HyperText Markup Language(超本文标记语言)的缩写是一种用于创建网页的标准标记语言。HTML 运行在浏览器上,由浏览器来解析。

  URI(统一资源标识符)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何的资源通过特定的协议进行交互操作。

  URL(统一资源定位符)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。

1、http协议简介

  HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。http协议是一个基于TCP/IP通信协议来传输数据(html文件、图片、查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简洁、快速的方式,适用于分布式超媒体信息系统。

  http协议的主要特点:

    1、简单快速:客户端向服务器发送请求时,只需要传送请求方法和路径。请求方法常用的有get、post、head。每种请求方法规定了客户端与服务端的类型不同。由于http协议简单,使得http服务器程序规模小,因而通信速度快

    2、灵活:http协议允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记

    3、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,并收到客户端的应答后,即断开连接。采用这种方式可以节省传输时间。

    4、无状态:http协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另外,在服务器不需要先前信息时,它的的应答较快。

    5、支持基于Browser的B/S模式以及基于Client的C/S模式

2、http报文

  http请求报文的基本格式(以请求百度首页为例)

GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8
Cookie: BDUSS=kdlLXJTM1lvZHhySmg0VG15UHllWlZxVHNxbThsd2c5cTZkUTQ1SldHY3ZiMFJiQVFBQUFBJCQAAAAAAAAAAAEAAAC49gN4ycbBvLXEuvrH5cvJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC~iHFsv4hxbM; BAIDUID=7EF37BC96AEB8AEA40F6AFA6E6B602DA:FG=1; PSTM=1531743065; BIDUPSID=818EF714BAEDD8113B8C2C61732AE078; pgv_pvi=5331836928; BD_HOME=1; BDRCVFR[uZj3G_6bTl0]=mk3SLVN4HKm; delPer=0; BD_CK_SAM=1; PSINO=1; H_PS_PSSID=; BD_UPN=12314753; H_PS_645EC=0891iOFwfey%2B50CqKPcSBINOBD5iZ7WuDqSbrW2FLur%2BCe4Hg%2B9SrRsGxVhw6m2u6zE9iV%2Ft; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BDSVRTM=0
Accept-Encoding: gzip, deflate

  请求报文:

    请求报文数据格式由三部分组成:

    通用首部:

      请求方法、URL、HTTP协议版本

      该部分位于数据首行,基本格式为:

     1 <method><request-url><version> 
      示例如下:    
     1 GET https://www.baidu.com/ HTTP/1.1 

      这部分给出了请求类型和请求的资源位置,其中http中的请求类型包括:get、post、head、put、delete。一般常用的有post、get、head方式。

    请求头部:

      请求头部紧跟着请求首部,该部分主要是用于描述请求正文,其基本格式以Key-value的形式,如下示例:

1 Host: www.baidu.com
2 Connection: keep-alive
3 Cache-Control: max-age=0
4 Upgrade-Insecure-Requests: 1
5 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36
6 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
7 Accept-Language: zh-CN,zh;q=0.8
8 Cookie: BDUSS=kdlLXJTM1lvZHhySmg0VG15UHllWlZxVHNxbThsd2c5cTZkUTQ1SldHY3ZiMFJiQVFBQUFBJCQAAAAAAAAAAAEAAAC49gN4ycbBvLXEuvrH5cvJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC~iHFsv4hxbM; BAIDUID=7EF37BC96AEB8AEA40F6AFA6E6B602DA:FG=1; PSTM=1531743065; BIDUPSID=818EF714BAEDD8113B8C2C61732AE078; pgv_pvi=5331836928; BD_HOME=1; BDRCVFR[uZj3G_6bTl0]=mk3SLVN4HKm; delPer=0; BD_CK_SAM=1; PSINO=1; H_PS_PSSID=; BD_UPN=12314753; H_PS_645EC=0891iOFwfey%2B50CqKPcSBINOBD5iZ7WuDqSbrW2FLur%2BCe4Hg%2B9SrRsGxVhw6m2u6zE9iV%2Ft; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BDSVRTM=0
9 Accept-Encoding: gzip, deflate

      该部分主要用于说明请求源、连接类型、以及一些cookie信息。

    请求正文:

      请求正文和请求头部通过一个空行进行隔开,一般用于存放Post请求的请求正文。一般有json、xml等格式。

  响应报文:

    响应报文和请求报文格式类型,同样也是分为三个部分,响应首部、响应头部,响应主体,其中响应头部和响应主题同样是通过一个空行进行分割,以百度首页为例: 

HTTP/1.1 200 OK
Bdpagetype: 1
Bdqid: 0xb9342ee400061aef
Cache-Control: private
Connection: Keep-Alive
Content-Type: text/html
Cxy_all: baidu+482bb20e90c582ae26a00e193c7f9f8b
Date: Sun, 29 Jul 2018 06:19:33 GMT
Expires: Sun, 29 Jul 2018 06:19:33 GMT
Server: BWS/1.1
Set-Cookie: delPer=0; expires=Tue, 21-Jul-2048 06:19:33 GMT
Set-Cookie: BDSVRTM=14; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=26940_1455_26458_21110_26350_22157; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Content-Length: 120358

 <html>
 <head>
 <title>百度一下,你就知道</title>
 </head>
 <boby>
 <h1>XXXX</h1>
 <p><img src="">XXXX</p>
 <h2></h2>
 <p> <a href="a.html" >XXXXX</a> </p>
 </body>
 </html>

     响应首部:

      这部分主要给出响应http协议版本号、响应状态码、响应描述,同样是单行显示。格式如下   

       1 <version><status><reason-phrase> 

      实例如下:  

       1 HTTP/1.1 200 OK 

    响应头部: 

      响应头部主要是返回一些服务器的基本信息,以及一些Cookie信息等。 

Bdpagetype: 1
Bdqid: 0xb9342ee400061aef
Cache-Control: private
Connection: Keep-Alive
Content-Type: text/html
Cxy_all: baidu+482bb20e90c582ae26a00e193c7f9f8b
Date: Sun, 29 Jul 2018 06:19:33 GMT
Expires: Sun, 29 Jul 2018 06:19:33 GMT
Server: BWS/1.1
Set-Cookie: delPer=0; expires=Tue, 21-Jul-2048 06:19:33 GMT
Set-Cookie: BDSVRTM=14; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=26940_1455_26458_21110_26350_22157; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Content-Length: 120358

    响应主体:

      该部分为请求需要得到的具体数据,可以为任意类型数据,一般网页浏览返回的为html文件内容。一般通常返回的数据格式有html、xml、json、js、cs、图片等文件。

3、http请求方法

  HTTP请求方法:

    GET:向特定的资源发出请求。其本质就是发送一个请求来获取服务器上的某一资源。资源通过一组HTTP头和呈现数据返回给客户端。

    HEAD:与GET相似,只不过响应体不会被返回。HEAD方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的信息。

    POST:向指定资源提交数据进行处理请求。数据被包含在请求体中。POST请求可能会导致新的资源的建立/已有的资源的修改。

    PUT:与GET相反,向服务写入文档。

    DELETE:请求删除URL指向的资源

    OPTIONS:探索服务器端对某资源所支持的请求方法

    TRACE:追踪请求资源要经过的防火墙、代理或网关等。

  响应报文代码

    1XX:信息性状态码

4、http请求首部

5、实体首部

6、http与https的区别

7、缓存机制