• 【后端】HTTP 初识


    1.HTTP协议是 前后端交互的桥梁~

    2.Tomcat 是java世界中,最主流的HTTP服务器之一,写后端代码,很多都是基于Tomcat二次开发

    3.Servlet  Tomcat后端程序员提供的开发服务器程序的API合集

    4.Linux   使用云服务器来部署写好的程序

    以上是即将学习的后端知识,下面先来学习HTTP协议~


    网络技术中,最核心的概念就是 “协议”

    HTTP是应用层典型的协议

    应用层,很多时候是需要程序员自定义应用层协议,当然也有一些现成的协议供我们使用

    HTTP就是其中最好的一种之一~

    HTTP主要涉及以下方面

    (1)浏览器和服务器的交互(打开网页)大概率都是使用HTTP协议

    (2)手机APP和服务器之间的交互,也大概率是用HTTP协议

    (3)(可用HTTP协议,也可不用)服务器之间的相互调用,也可以使用HTTP协议


    比如我们在浏览器中输入一个网址,点击搜索就会看到相应的页面

    这个过程,就是通过HTTP和服务器进行了通信~

     

     那么HTTP是如何与服务器交互的呢?大致如下图所示~

     客户端首先会发送一个http请求给服务器,服务器根据请求,找到客户端想要的资源(一般就是一个html)把这个html通过http响应,返回给客户端~

    然后客户端接收到服务器返回的html之后,对页面进行渲染,就能看到屏幕上出现了一个网页~

    HTTP这个协议属于典型的“一问一答”模型的协议

    就是说发送一个请求,返回一个对应的响应,有的协议是多响应模型,就是返回多个响应

    我们学习HTTP,主要是学习:HTTP的报文格式

    报文格式就描述了HTTP请求是啥样的,响应是啥样的~~


    抓包

    要想理解HTTP的报文格式,就要通过抓包工具来学习

    抓包工具是一个特殊的软件,相当于一个代理工具,浏览器给服务器发的请求就会经过这个代理程序,进一步的就能解析出请求和响应的结果如何~

    形象化一点来说,抓包工具就相当于你的舍友~

    你到饭点了,会自己去食堂吃饭,到了食堂,你对食堂大叔说,来一份培根蛋炒饭~(此时你作为客户端,对食堂大叔发出了一个“来一份培根蛋炒饭”的请求),过来一会,作为服务器的食堂大叔就给你返回了一份培根蛋炒饭的响应~

    但是你使用抓包工具的话,就相当于你的舍友去帮你打饭,你把你的请求(一份培根蛋炒饭)交代给你舍友,你舍友去食堂,把你的请求交代给食堂大叔,接着食堂大叔把培根蛋炒饭给你的舍友,你的舍友再带回来给你

     通过舍友,我跟老板的间接交易,舍友的知道得一清二楚的

    因此,我们程序员可以通过这个代理程序,就可以知道浏览器和服务器之间的具体内容了~

    谈到代理,还分为两种类型

    【正向代理】:(给客户端提供服务的,和客户端关系密切)站在服务器的角度,正向代理把真正的客户端给隐藏起来了,服务器不知道真实的客户端是啥;食堂大叔不知道要买培根蛋炒饭的人是你,但这不耽误你获取到食堂大叔的培根蛋炒饭

    【反向代理】:(给服务器提供服务的,和服务器关系密切)站在客户端的角度,反向代理把真正的服务器给隐藏起来了,客户端不知道真实的服务器是啥


    接下来我们使用抓包工具来分析HTTP协议的工作过程

    抓包工具有很多,这里我们使用的是  fiddler抓包工具(去fiddler官网下载即可)

    当我们打开浏览器搜索网页的时候,抓包工具就开始抓包了

     当我们抓包到搜狗官网的页面后

    看右半部分,有上下两个部分,上下两个 Raw就是我们的抓包信息,通过这里我们就可以查看HTTP请求和响应的报文格式~

    点击左下角的View,就会以文本格式显示出请求和响应的报文格式(上面是请求,下面部分是响应)

    先看请求

     

     上图是请求的报文格式,里面有4部分信息

    (1)首行

    上图划分了三部分,第一部分是方法,也就是HTTP方法,表示对服务器做的啥请求;第二部分是网址,也就是URL,描述了网络上的唯一资源;第三部分是版本号

    (2)请求头  header

     

     这里的每一行都是一个键值对,键和值之间用 :空格来分割,这里的键都是有固定含义的,之后再说

    (3)空行

     一个HTTP请求的header可以有若干个,header完后,会预留出一行空白,用来表示header结束~

    (4)正文body

    正文有的请求没有,有的请求有,就是在空行的下面,搜狗这里是没有正文的


    响应

    这时搜狗官网完整的响应 格式

    同样是4个部分,首行,响应报头,空行,正文

    (1)首行

    首行有两部分:分别是第一部分 版本号,第二部分的200是状态码,通常表示成功,OK是状态码的描述,有的响应有,有的响应没有,这对状态码进行了解释说明

    (2)响应报头header

     同样也是键值对结构

    (3)空行

    作为header的结束标志

    (4)正文

    这不单单是响应才有,请求也是可能会有的

    综上所述,上面就是HTTP的请求响应的基本报文格式,分别有4部分,内容都大同小异~

    ok,结束~~~ 

  • 相关阅读:
    HashMap
    C++笔记 13 (STL初识)
    VUE3 <component>“元组件” 渲染$slots传的插槽
    RK3588+FPGA高速图像处理通信处理机解决方案
    RIKIBOT ROS源码文件说明
    CTF-PWN-堆- 【off-by-one】
    AI绘画Stable Diffusion【艺术写真】:蒙版法图生图,局部重绘实现AI艺术写真
    两日总结十六
    CSDN客诉周报第9期|本周解决11个用户问题
    UE5蓝图联机 客户端修改值后,服务器未得知值已修改
  • 原文地址:https://blog.csdn.net/qq_61862008/article/details/127741517