协议简介

1. 应用层协议, 一般以TCP为基础,数据收发通过TCP实现;

2. 一次性连接。服务器与客户端的每次连接只处理一个请求,下次请求重新建立连接;

3. 无状态协议。服务器不保留与客户交易时的状态,减轻记忆负担,较快响应速度;

4. 默认端口号80,常用请求方法GET/POST;

工作过程

1. 客户与服务端建立连接;(基于TCP的连接)

2. 客户发起请求;(各种方法)

3. 服务器接受请求,返回相应资源;

4. 客户与服务器断开连接。

协议格式

GET/POST 请求的URL HTTP版本号

字段名:值\r\n

字段名:值\r\n

······

字段名:值\r\n

\r\n

请求体(包体)内容

······

请求报文的格式

请求行:请求方法(8种) URL 协议版本\r\n

请求头:字段:值\r\n

    字段:值\r\n

    字段:置\r\n

\r\n

请求体:一般涉及要提交的表单数据,Content-Type,Content-Lengthd。

例1:get请求index.html

GET /index.html HTTP/1.1【请求行,使用get方法请求该服务器index.html资源,使用HTTP1.1版本】
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134【用户代理】
Accept-Language: zh-CN【语言】
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8【接受的mime】
Upgrade-Insecure-Requests: 1【让浏览器自动升级为https】
Accept-Encoding: gzip, deflate【编码格式】
Host: 127.0.0.1【主机地址】
Connection: Keep-Alive【连接状态】
\r\n

【请求体】get不在此处传送数据

get如果要携带参数,放在包头连接在url后 ?param1=value1&param2=value&....

例2:post请求(12306的一个post例子)

POST /index/otn/zwdch/queryCC HTTP/1.1
Host: www.12306.cn
Connection: keep-alive
Content-Length: 19【请求体的大小/长度】
Accept: application/json, text/javascript, */*; q=0.01
Origin: https://www.12306.cn
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://www.12306.cn/index/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=8B52BF52E668C40CB474E63171C2F452; BIGipServerpool_index=753926666.43286.0000; route=c5c62a339e7744272a54643b3be5bf64; BIGipServerotn=787481098.38945.0000; RAIL_EXPIRATION=1564946264495; RAIL_DEVICEID=UTdVcVUGN4tMvHx6m8-YknFSQKca7KE8awWBrCNs164VK6metil_a-6IZ1d2BXrQ_tvKSOtCb_n_mZq_JmF8V7OX_jS4v7j-0vStxa4zexnmPYQ4pveshG9MNmIwz2H336DZPC1WGGlfBjzZsK0E2XupC1dmuK4i【cookie数据】

请求方法

常见方法:

GET:最常见用于获取资源,可以发送数据,但不安全;

POST:最常见于提交表单,可用于发送大量数据;

HEAD:用于获取获取报文首部,测试URL是否有效;

PUT:传送资源;

DELETE:删除资源;

OPTIONS:查询服务器支持的HTTP方法;

其他方法:

CONNECT:用于使用代理服务器去访问资源,然后返回给本机的方法;

TRACE:可用于跟踪请求的处理过程。

响应报文的格式

状态行:协议版本 状态码 状态描述 \r\n

响应头:字段:值\r\n

    字段:值\r\n

    字段:值\r\n

\r\n

响应体:......

例:(盗CSDN图一张

面试常考HTTP协议知识点的更多相关文章

  1. 前端面试常考知识点---CSS

    前端面试常考知识点---js 1.CSS3的新特性有哪些 点我查看 CSS3选择器 . CSS3边框与圆角 CSS3圆角border-radius:属性值由两个参数值构成: value1 / valu ...

  2. PHP面试常考内容之Memcache和Redis(1)

    你好,是我琉忆.继上周(2019.2-11至2-15)发布的"PHP面试常考内容之面向对象"专题后,发布的第二个专题,感谢你的阅读.本周(2019.2-18至2-22)的文章内容点 ...

  3. PHP面试常考之会话控制

    你好,是我琉忆,欢迎您来到PHP面试专栏.本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和网络 ...

  4. PHP面试常考内容之面向对象(1)

    PHP中面向对象常考的知识点有以下几点,我将会从以下几点进行详细介绍说明,帮助你更好的应对PHP面试常考的面向对象相关的知识点和考题. 整个面向对象文章的结构涉及的内容模块有: 一.面向对象与面向过程 ...

  5. PHP面试常考内容之Memcache和Redis(2)

    你好,是我琉忆.继周一(2019.2-18)发布的"PHP面试常考内容之Memcache和Redis(1)"后,这是第二篇,感谢你的支持和阅读.本周(2019.2-18至2-22) ...

  6. PHP面试常考内容之面向对象(3)

    PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容.继上一篇"PHP面试常考内容之面向对象(2)"发表后,今天更新面向对象的最后一篇(3).需要(1),(2 ...

  7. PHP面试常考内容之面向对象(2)

    PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容.继上一篇"PHP面试常考内容之面向对象(1)"发表后,今天更新(2),需要(1)的可以直接点击文字进行跳 ...

  8. 面试常考的常用数据结构与算法(zz)

    数据结构与算法,这个部分的内容其实是十分的庞大,要想都覆盖到不太容易.在校学习阶段我们可能需要对每种结构,每种算法都学习,但是找工作笔试或者面试的时候,要在很短的时间内考察一个人这方面的能力,把每种结 ...

  9. Java面试常考知识点

    1.  什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Jav ...

随机推荐

  1. datax实例——全量、增量同步

    一.全量同步 本文以mysql -> mysql为示例: 本次测试的表为mysql的系统库-sakila中的actor表,由于不支持目的端自动建表,此处预先建立目的表: CREATE TABLE ...

  2. 在EXE和DLL中,FindResource的区别

    转载:https://blog.csdn.net/ithzhang/article/details/7995102 在EXE和DLL中,FindResource的区别 以下的代码在EXE中,执行无误. ...

  3. Windows下安装RabbitMQ3.6.5

    1.安装erlang 网址:http://www.erlang.org/ 下载exe文件安装即可 2.安装RabbitmQ 下载地址:http://www.rabbitmq.com/download. ...

  4. iOS popToViewController具体用法

    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIn ...

  5. ABAP语法篇2 内表操作语法

    VALUE MOVE-CORRESPONDING CORRESPOING FOR REDUCE GROUP BY FILTER VALUE语法: 结构赋值 ... VALUE dtype | #(  ...

  6. 在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素找不到与此协定匹配的终结点元素(转)

    按语: 在项目中实现自动升级过程,在类库中调用webservice取升级update.xml文件,添加服务调用,但在类库中调用时就出现异常,但在简单的测试工程中没有问题.解决方法采用下面介绍的方法 在 ...

  7. 使用SampleRateConverter对音频采样率进行转换

    java sound resource SampleRateconverter.java(接近于官方源码) 输入目标采样率,输入文件,输出文件.食用方便;p 比如 SampleRateConverte ...

  8. Python - Django - ORM 多对多表结构的三种方式

    多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToM ...

  9. CentOS "libc.so.6: version 'GLIBC_2.14' not found"解决方法,同理'GLIBC_2.15' not found"

    出现"libc.so.6: version 'GLIBC_2.14' not found"问题,是由于glibc版本过低,升级glibc即可. 由于CentOS系统RPM源目前gl ...

  10. HR数据分析常用的50个公式

    HR数据分析常用的50个公式 HR经常需要和数据打交道,如入职率.离职率.加班费计算等.虽然日常工作中,单个数据的计算并不麻烦,但几十上百个累计在一起,确实很容易混淆,甚至计算失误.今天小编急HR之所 ...