面试常考HTTP协议知识点

Posted yocichen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试常考HTTP协议知识点相关的知识,希望对你有一定的参考价值。

协议简介

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图一张??)

技术图片

状态码(橙色是常见的,最常见的恐怕是200,404,和500了)

技术图片

最常见面试题GET和POST的区别?

技术图片

 HTTPS做了什么?

 超文本安全传输协议,就是HTTP的安全版本,如何实现安全呢?①HTTP又为什么不安全呢?②

② HTTP协议完全使用明文来传输数据,包括一些敏感数据,这......极不安全,==露天洗澡。

① HTTPS,在HTTP协议的TCP与应用层之间再加上一层SSL(继任者是TLS)子层,全称:安全套接字子层。

SSL干了什么?

 信任加密通信。(其中CA证书由第三方信任机构颁发,需要RMB)

技术图片

 PS: 证书怎么查看?URL左边的锁->证书,即可查看

技术图片

技术图片

HTTP与HTTPS比较

技术图片


你get到了吗?

以上是关于面试常考HTTP协议知识点的主要内容,如果未能解决你的问题,请参考以下文章

面试官一上来就问我Chrome底层原理和HTTP协议(万字长文)

计算机网络面试常考总结

python | CHROME底层原理和HTTP协议

记大厂Android开发的一些面试经验

面试视频知识点整理1-7(http协议)

前端面试知识点梳理之四——http协议