内容目录

http协议介绍

什么是URL

通常我们在访问一个网站页面时,请求到的内容通称为资源。而资源这一概念非常宽泛,它可以是一份文档,一张图片,或所有其他你能够想到的格式。每个资源都由一个URI来进行标识
比如:https//baidu.com/public/tt.jpg这样的资源,我们会将其称为URL地址
URL简称统一资源定位符,用来唯一地标识万维网中的某一个资源。URL由协议、主机名称、端口以及文件名几部分构成。

什么是html

html简称web page,一个完整的html页面可能会包含很多个URL的资源。
反之我们也可以理解一个html文件是由多个不同的URL资源拼接而成的。

什么是HTTP

HTTP(Hyper Text Transfer Protocol中文名为超文本传输协议
是一种能够获取如HTML这样网络资源的通讯协议。它是在Web上进行数据交换的基础
简单理解:HTTP协议就是将用户请求的HTML页面从一台Web服务器传输到客户端浏览器的一种协议。

url、html、http之间关系

一个完整的html页面是由多个不同的url资源组成的;而http协议主要用来传输这种html页面的

http工作原理

图解http工作原理

我们到底是如何获取到服务器上的页面。
file

抓包分析http原理

  1. 浏览器分析超链接中的URL,

  2. dns请求:pc向DNS服务器202.103.224.68发出dns query请求,请求yulin.gov.cn的A记录
    file

  3. dns回复:dns服务器202.103.224.68回复dns response,解析出yulin.gov.cn域名对应的一条A记录
    file

  4. 建立TCP连接
    pc向dns解析yulin.gov.cn出的202.103.252.132地址发起tcp三次握手
    file

  5. http请求
    pc向yulin.gov.cn服务器发出get请求,请求主页
    file

  6. http响应
    yulin.gov.cn服务器回应http/1.1 200 OK,返回主页数据包

    GET /material/css/jy.css HTTP/1.1
    Host: www.yulin.gov.cn
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
    Accept: text/css,*/*;q=0.1
    Referer: http://www.yulin.gov.cn/
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
    Cookie: _trs_uv=kspf3bq5_3790_6y4u; _gscu_1512594966=69082889kev6dv37; _gscbrs_1512594966=1
    HTTP/1.1 200 OK
    Server: nginx
    Date: Thu, 21 Mar 2024 07:05:00 GMT
    Content-Type: text/css
    Content-Length: 341
    Last-Modified: Thu, 09 Nov 2023 08:28:21 GMT
    Connection: keep-alive
    ETag: "654c9825-155"
    Referrer-Policy: strict-origin-when-cross-origin
    Accept-Ranges: bytes
  7. 连接断开
    完成数据交互过程,四次挥手断开连接

  • 整个用户访问网站过程就是DNS-TCP-HTTP

http请求request

  • http请求的一个例子
    file

请求Method

  • 客户端向服务端发送请求时,会根据不同的资源发送不同的请求方法Method

    • GET:用于获取URI对应的资源;(比如看朋友圈)
    • POST:用于提交请求,可以更新或者创建资源,是非幂等的;(发朋友圈)
    • PUT:用于向指定的URI传送更新资源,是幂等的;(更新朋友圈)
    • DELETE用于向指定的URI删除资源;(比如删朋友圈)
    • HEAD:用于检查(仅获取Header部分的内容)
  • 一般创建对象时用post,更新对象时用put

    • put是幂等的,post是非幂等的
    • 幂等:对应相同的输入,每次得到的结果都是相等的

请求Header

Accept: text/html,
# 请求的类型
Accept-Encoding: gzip, deflate, br
# 释放进行压缩
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
# 请求的语言
Cache-Control: max-age=0
# 缓存
Connection: keep-alive
# TCP长连接
Host: www.baidu.com
# 请求的域名
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
# 请求浏览器的工具

请求Connection

  • Http请求中的长连接与短连接是什么
    • http1.0协议使用的是短连接:建立一次tcp的连接,发起一次http的请求,结束,tcp断开
    • http1.1协议使用的是长连接:建立一次tcp的连接,发起多次http的请求,结束,tcp断开

Http响应Response

file

响应Header

HTTP/1.1 200 OK
# 返回服务器的http协议,状态码
Server: nginx
# 返回服务器使用的软件nginx
Date: Thu, 21 Mar 2024 08:20:03 GMT
# 返回服务器的时间
Content-Type: text/html
Connection: keep-alive
# TCP长连接

响应Status

http响应状态码Status-Code以3位数字组成,用来标识该请求是否成功,比如是正常还是错误等
http/1.1中状态码可以分为五大类

状态码 说明
1XX 信息,服务器收到请求,需要请求者继续执行操作
2XX 成功,操作被成功接收并处理
3XX 重定向,需要进一步的操作以完成请求
4XX 客户端错误,请求包含语法错误或无法完成请求
5XX 服务器错误,服务器在处理请求的过程中发生了错误

响应Code

  • 以下是常见状态码
状态码 说明
200 表示成功,客户端成功接收到了服务端返回的数据,这是最常见的状态码
206 客户端发完请求后,服务端只是返回了部分数据,就会出现该状态码,例如当下载一个很大的文件时,在没有下载完成前就会出现该状态码
301 永久重定向(redirect)http-->https
302 临时重定向(redirect)
400 客户端请求语法错误,服务端无法理解
401 服务端开启了用户认证,而客户端没有提供正确的验证信息
403 服务端不允许客户端访问,或者没有找到默认返回页面(默认所有的web服务器返回的页面都是index.html,也可以调整默认返回页面app.html)
404 客户端请求的资源不存在了(路径写错了;服务端真的没有)
413 客户端向服务端上传一个比较大的文件,并且文件大小超过了服务端的限制1MB
500 服务出现了内部错误,需要进行人为排查故障(连接数据库类服务异常,会出现500错误)
502 服务器充当代理角色时,后端被代理的服务器不可用或没有正常回应
503 服务当前不可用,由于超载或系统维护,服务器暂时的无法处理客户端请求
504 服务器充当代理角色时,后端的服务端没有按时返回数据,超时了
最后修改日期: 2024年6月1日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。