HTTP协议与报文

1.HTTP协议是什么

  • HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,它是Web通信的基础。HTTP协议建立在客户端-服务器模型上,客户端发送HTTP请求,服务器响应HTTP请求并返回相应的数据

2.网址的组成

网址:https://lilichao.com/hello/index.html

网址组成组成解释
https://协议名 http ftp …
lilichao.com域名 domain(整个网络中存在着无数个服务器,每一个服务器都有它自己的唯一标识。这个标识被称为 ip地址 192.168.1.17,但是ip地址不方便记忆, 域名就相当于是ip地址的别名)
/hello/index.html网站资源路径

3.当在浏览器中输入地址以后发生了什么?

https://lilichao.com/hello/index.html
① DNS解析,获取网站的ip地址(我们访问服务器最终是通过ip地址访问的,要先用dns解析,获取ip地址。dns通过域名查找真正的ip地址,dns=电话本,域名就是备注的人名,电话号码就是ip地址。SYN代表发送请求,ACK代码同意请求/知道了。FIN代表结束,事情办完了。)
② 浏览器需要和服务器建立连接(tcp/ip)(三次握手)
③ 向服务器发送请求(http协议)
④ 服务器处理请求,并返回响应(http协议)
⑤ 浏览器将响应的页面渲染
⑥ 断开和服务器的连接(四次挥手)

4.客户端如何和服务器建立连接

通过三次握手

  • 三次握手是客户端和服务器建立连接的过程
      1. 客户端向服务器发送连接请求
        SYN
      1. 服务器收到连接请求,向客户端返回消息
        ACK SYN
      1. 客户端向服务器发送同意连接的信息
        ACK

5.客户端如何和服务器断开连接

通关四次挥手

  • 四次挥手是客户端和服务器断开连接的过程
      1. 客户端向服务器发送请求,通知服务器数据发送完毕,请求断开来接
        FIN
      1. 服务器向客户端返回数据,知道了
        ACK
      1. 服务器向客户端返回数据,收完了,可以断开连接
        FIN ACK
      1. 客户端向服务器发数据,可以断开了
        ACK

6.TCP/IP 协议族(了解)

TCP/IP协议族中包含了一组协议, 这组协议规定了互联网中所有的通信的细节。

  • 网络通信的过程由四层组成
    • 应用层
      软件的层面,浏览器 服务器都属于应用层
    • 传输层
      负责对数据进行拆分,把大数据拆分为一个一个小包
    • 网络层
      负责给数据包,添加信息
    • 数据链路层
      传输信息
      客户端发送请求的时候是从应用层到数据链路层
      服务器响应的时候是从数据链路层到应用层的(与发送请求过程是相反的)
      HTTP协议就是应用层的协议

用来规定客户端和服务器间通信的报文格式的

  • 浏览器和服务器之间通信是基于请求和响应的
    浏览器向服务器发送请求(request)
    服务器向浏览器返回响应(response)
    浏览器向服务器发送请求相当于浏览器给服务器写信
    服务器向浏览器返回响应,相当于服务器给浏览器回信
    这个信在HTTP协议中就被称为报文
    HTTP协议就是对这个报文的格式进行规定

7.报文(message)

  • 请求报文(request)
    客户端发送给服务器的报文称为请求报文
    • 请求报文
      • 请求首行
      • 请求头
      • 空行
      • 请求体
    • 响应报文:
      • 响应首行
      • 响应头
      • 空行
      • 响应体

8.服务器

  • 一个服务器的主要功能:
    • 1.可以接收到浏览器发送的请求报文
    • 2.可以向浏览器返回响应报文

9.请求报文组成说明

  • 请求首行

  • 请求头
    请求头也是名值对结构,用来告诉服务器我们浏览器的信息
    每一个请求头都有它的作用:
    Accept 浏览器可以接受的文件类型
    Accept-Encoding 浏览器允许的压缩的编码
    User-Agent 用户代理,它是一段用来描述浏览器信息的字符串

  • 空行
    用来分隔请求头和请求体

  • 请求体

post请求通过请求体来发送数据
post请求通过请求体来发送数据
在chrome中通过 载荷 可以查看
post请求通过请求体发送数据,无法在地址栏直接查看
所以安全性较好
请求体的大小没有限制,可以发送任意大小的数据
如果你需要向服务器发送数据,能用post尽量使用post

10.响应报文组成说明

  • 响应首行
    HTTP/1.1 200 OK
    200 响应状态码
    ok 对响应状态码的描述
    响应状态码的规则
    1xx 请求处理中
    2xx 表示成功
    3xx 表示请求的重定向
    4xx 表示客户端错误
    5xx 表示服务器的错误

  • 响应头
    响应头也是一个一个的名值对结构,用来告诉浏览器响应的信息
    Content-Type 用来描述响应体的类型
    Content-Length 用来描述响应体大小
    Content-Type: text/html; charset=UTF-8
    Content-Length: 2017

  • 空行
    空行用来分隔响应头和响应体

  • 响应体
    响应体就是服务器返回给客户端的内容

响应报文举例

HTTP/1.1 200 OK
Vary: Origin
Access-Control-Allow-Credentials: true
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Thu, 27 Oct 2022 11:31:54 GMT
ETag: W/“20c-18419368696”
Content-Type: text/html; charset=UTF-8
Content-Length: 2017
Date: Thu, 27 Oct 2022 11:52:29 GMT
Connection: keep-alive
Keep-Alive: timeout=5

11. 请求首行组成说明

  • 请求首行
    请求首行就是请求报文的第一行
    GET /index.html?username=sunwukong HTTP/1.1
    • 请求首行分解为三部分
      • 第一部分 get 表示请求的方式,get表示发送的是get请求
        现在常用的方式就是get和post请求
        get请求主要用来向服务器请求资源 post请求主要用来向服务器发送数据

      • 第二部分 /index.html?username=sunwukong
        表示请求资源的路径,
        ? 后边的内容叫做查询字符串
        查询字符串是一个名值对结构,一个名字对应一个值
        使用=连接,多个名值对之间使用&分割
        username=admin&password=123123
        get请求通过查询字符串将数据发送给服务器
        由于查询字符串会在浏览器地址栏中直接显示
        所以,它安全性较差
        同时,由于url地址长度有限制,所以get请求无法发送较大的数据

      • 第三部分
        HTTP/1.1 协议的版本

请求报文举例

GET /07_http%E5%8D%8F%E8%AE%AE/01_http%E5%8D%8F%E8%AE%AE.html?username=sunwukong HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,la;q=0.7
Cache-Control: max-age=0
Connection: keep-alive
Host: 127.0.0.1:5500
If-Modified-Since: Thu, 27 Oct 2022 11:10:28 GMT
If-None-Match: W/“1b8-1841922e832”
Referer: http://127.0.0.1:5500/07_http%E5%8D%8F%E8%AE%AE/01_http%E5%8D%8F%E8%AE%AE.html?username=sunwukong
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36
sec-ch-ua: “Chromium”;v=“106”, “Google Chrome”;v=“106”, “Not;A=Brand”;v=“99”
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: “Windows”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值