HTTP报文

Web Server

  • 客户端:通常是浏览器,发送HTTP请求
  • 服务端:自己编写的程序,也叫服务器软件或服务器程序,相应客户端请求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7ZV8BRU-1680185051742)(/home/guojiawei/.config/Typora/typora-user-images/image-20230330204226709.png)]

总结:

一个web Server就是一个服务器程序,主要功能就是通过HTTP协议与客户端浏览器进行通信;web server用来接收,存储,处理来自浏览器的HTTP请求,并对这个请求做出HTTP相应,返回给客户端浏览器所请求的内容,比如:文件,图片,视频,网页以及没有请求成功的错误信息

在浏览器中键入“域名”或“IP地址:端口号”,浏览器则先将你的域名解析成相应的IP地址或者直接根据你的IP地址向对应的Web服务器发送一个HTTP请求。
--这一过程首先要通过TCP协议的三次握手建立与目标Web服务器的连接
--然后HTTP协议生成针对目标Web服务器的HTTP请求报文
--通过TCP、IP等协议发送到目标 Web 服务器上

首先需要浏览器通过TCP三次握手与目标web服务器建立连接

其次HTTP协议生成目标服务器的HTTP请求报文

最后该报文需要借助TCP,IP等协议发送到服务器上

建立浏览器和写的服务器程序的连接,解析出请求报文,发送到目标服务器,目标服务器进行响应,发送数据。

HTTP协议

HTTP是一个简单的请求 - 响应协议

  • HTTP通常运行在TCP 之上
  • 指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

请求和响应消息的头以 ASCII 形式给出

HTTP协议:

  • HTTP 协议采用了请求/响应模型

  • 定义:Web客户端如何从Web服务器请求Web页面以及服务器如何把Web页面传送给客户端

--请求报文包含请求的方法,URL、协议版本、请求头部和请求数据
--响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据
            (服务器以一个状态行作为响应)
在浏览器地址栏键入URL,按下回车之后会经历的流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vuIXa8wl-1680185051743)(/home/guojiawei/.config/Typora/typora-user-images/image-20230330210651634.png)]

HTTP协议规定:请求从客户端发出,最后服务器端响应这个请求并返回

换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

  1. 浏览器向DNS服务器发送请求,解析出该URL中:域名对应的IP地址

  2. 浏览器根据解析出来的IP地址和端口号,与Web服务器的HTTP端口建立TCP连接

  3. 浏览器通过TCP套接字向服务器发送一个HTTP请求报文

  4. 服务端接收请求并且解析请求后,返回HTTP相应,这里是HTML文本

  5. 释放两者的TCP连接

    • 若connection模式为close:

    ​ 则服务器主动关闭 TCP连接,客户端被动关闭连接,释放 TCP 连接;

    • 若connection模式为keepalive:

      则该连接会保持一段时间,在该时间内可以继续接收请求;

  6. 浏览器解析HTML文本并显示内容

HTTP请求报文格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WGmFc3nO-1680185051744)(/home/guojiawei/.config/Typora/typora-user-images/image-20230330214219459.png)]

请求报文有四部分:请求行请求头部请求换行(隔开请求数据与请求头部);请求数据

GET / HTTP/1.1(请求行)

HTTP响应报文格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p3S7hLuo-1680185051745)(/home/guojiawei/.config/Typora/typora-user-images/image-20230330214440931.png)]

响应报文也是四部分:响应行,响应头部,响应换行,响应正文

HTTP/1.1 200 OK(响应行、状态行)

HTTP请求方法

位于:HTTP请求报文的请求行的第一个字段

  1. get:使用GET方法只用在读取数据

  2. head

与 GET 方法一样,都是向服务器发出指定资源的请求。

  • 只不过服务器将不传回资源的本文部分。

    它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

  1. post

向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)

  • 数据被包含在请求本文中
  • 这个请求可能会创建新的资源或修改现有资源,或二者皆有。
  1. put:向指定资源位置上传其最新内容

  2. delete:请求服务器删除 Request-URI 所标识的资源

  3. trace:回显服务器收到的请求,主要用于测试或诊断

  4. options

这个方法可使服务器传回该资源所支持的所有 HTTP 请求方法。

用’*'来代替资源名称,向 Web 服务器发送 OPTIONS 请求,可以测试服务器功能是否正常运作。

  1. connect
  • HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器

  • 通常用于SSL加密服务器的链接(经由非加密的 HTTP 代理服务器)

HTTP状态码

位于:HTTP响应报文的第二个字段

状态码由3个数字组成,而且第一个数字代表当前响应的类型:

  • 1xx消息——请求已被服务器接收,继续处理
  • 2xx成功——请求已成功被服务器接收、理解、并接受
  • 3xx重定向——需要后续操作才能完成这一请求
  • 4xx请求错误——请求含有词法错误或者无法被执行
  • 5xx服务器错误——服务器在处理某个正确请求时发生错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TUqi7Zpy-1680185051746)(/home/guojiawei/.config/Typora/typora-user-images/image-20230330215622226.png)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值