【网络基础】HTTP

【背景】:

        最近看面试题,发觉http这块面试点还是很多的,以前对这块没有重点关注和梳理过。现在归纳整理下。

【目录】:
1.什么是HTTP

超文本传输协议(HTTP)是一个请求-响应协议,它通常运行在TCP之上,在应用层。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而 消息内容则具有一个类似MIME的格式

2.HTTP的结构

报文

组成

子组成

请求报文

请求首部字段

User-Agent

产生请求的浏览器类型

Accept

客户端希望接受的数据类型

Accept-Charset

客户端希望接受的字符集

Accept-Encoding

客户端可接受响应内容的编码方式

Accept-Language

客户端可接受响应内容的语言

Content-Type

客户端发送的实体数据的数据类型

Application/json

Application/x-www-form-urlencoded

Text/xml

Multipart/form-data

Text/html

Content-Length

请求体的长度

Connection

客户端想要使用的连接方法

Keep-alive
Upgrade

Host

请求的主机名,允许多个域名同处一个IP地址即虚拟主机

Cookie

服务器在set-cookie里面设置的

Origin

针对跨域资源共享的请求,服务器端需要额外设置可跨域的网址

Referer

客户端访问的前一个页面

请求行

请求方法

get,post,delete,put等等

请求url(不包括域名)

HTTP协议版本

1.01.1

空行

//

通知服务器以下不再有请求头

请求数据

get无,post

响应报文

状态行

协议版本

状态码

状态原因

响应首部字段

Access-Control-Allow-Origin

指定哪些网站可以跨域,而支持跨域资源访问

CORS访问控制

Access-Control-Allow-Headers

指定哪些请求头可以被浏览器访问。比如content-type

Access-Control-Allow-Methods

指定客户端可以使用的方法

Access-Control-Allow-Credentials

是否可以讲请求内容暴露给前端

Age

缓存存在的时间,单位:秒

Cache-Control

通知从服务器到客户端内的所有缓存机制,是否可以缓存

Content-Encoding

响应资源的编码类型

Content-Length

响应消息体的长度

Content-Type

当前内容的MIME类型

Expires

过期时间

Last-Modified

请求的对象的最后修改时间

Server

服务器的名称

Set-cookie

设置httpcookie

Status

当前连接http的响应状态

空行

响应正文

3.HTTP的版本: 1.0与1.1​​​​​​​

区别

HTTP 1.0

HTTP1.1

连接方式

短连接

长连接,使用同一个TCP发送多次请求

请求头

无host,服务器绑定一个IP

增加host绑定多个域名共享IP

//

增加connection: keep-alive保持长连接
        connection:close 断开连接

响应全部,不支持断点续传

带宽优化:请求头增加range,允许只请求资源某个部分

响应状态码

仅16种

新增举例:
    100,请求体较大时,先发送header请求,服务器是否响应
    206, 范围请求的标识码

增加request方法

仅有get.post,delete

新增加5种:options, put,delete,trace,connect

缓存

请求头里面的属性:If-Modified-Since,Expires来作为标准

除1.0外的,引入了If-Match,If-None-Match,If-Unmodified-Since

4.HTTP与HTTPS

http

https

区别

传输安全性

明文传输

SSL加密传输

连接方式

无状态

ssl在TCP与HTTP之间可加密传输,身份认证

端口

80

443

证书申请方式

不需要

CA证书

服务器资源服务器资源支持少对数据加解密,需要更多服务器资源支持
页面响应速度快,TCP3次握手,仅需3个包慢,TCP+SSL需要12个包

流程图

//

数据链路层->IP->TCP->HTTP

数据链路层->IP->TCP->SSL->HTTP

​​​​​​​5.一次HTTP请求过程

整体流程步骤

具体

涉及哪些网络协议

DNS域名解析

解析IP
解析顺序:浏览器自身的DNS缓存->操作系用自身的DNS缓存->/etc/hosts文件里面->域名服务器

DNS域名解析协议

通过IP使用ARP找到对应的服务器

建立连接

TCP三次握手先建立网络与服务器的连接

TCP协议

浏览器发起HTTP请求

发送数据使用IP协议

期间IP数据包在路由器间路由选择使用OSPF路由协议(传输层协议)

路由器与服务器通信,需要将IP转换为MAC地址,使用ARP地址解析协议

服务器响应HTTP请求

协议版本号,状态码,响应头,响应体

解析response

Html,cssjs代码进行页面渲染

浏览器渲染展示页面

断开连接

TCP四次挥手

6. HTTP状态码(常见)

状态码

作用

具体状态码

作用

1XX

请求已被接收,服务器继续处理

100

服务器接收请求,正在处理

针对post请求体较大时,先发送header,服务器响应100后才发送data,服务器再响应

2XX

接口请求已成功被服务器接收

200

请求成功且有响应数据返回

3XX

客户端重定向

301

客户端请求地址已被永久移动到新位置

302

客户端执行临时重定向

304

客户端有缓存,服务器的响应

第一次get请求缓存Last_Modified
第二次请求根据请求中的If Modified Since和被请求内容的时间比对

4XX

客户端错误

400

Bad Request(请求参数错误,无效的请求信息,欺骗性路由请求)

403

Fobidden(服务器理解请求,但拒绝执行。比如数据权限不够)

404

Not Found(请求的资源未在服务器上发现)

405

客户端请求方法不对

5XX

服务器内部错误

500

通用错误信息

502Bad Gateway(上游服务器接受无效响应)

504

Gateway Timeout(上游服务器响应超时)

7.HTTP劫持
定义原理预防方法
是一种网络攻击技术,攻击者通过各种手段截取用户的HTTP请求或响应,篡改其内容或重定向到恶意服务器,从而实施恶意活动TCP连接之后,服务器返回数据前,被运营商篡改了返回

使用HTTPS

使用web防火墙WAF

定期监控网站流量和日志

8. cookie

TCP三次握手,四次挥手:【网络基础】TCP三次握手与四次挥手-CSDN博客

参考学习链接:

        HTTP | MDN

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值