详解HTTP协议

举报
i进击的攻城狮 发表于 2022/10/30 11:57:23 2022/10/30
【摘要】 目录文章目录​​前言一、HTTP是什么?1.1 超文本1.2 请求-响应       1.3 运行在TCP之上二、计算机网络五层模型应用层运输层网络层链路层物理层三、HTTP请求和响应结构客户端请求消息服务器响应消息四、HTTP 请求方法五、HTTP 状态码六、HTTP 响应头信息​总结前言在学习网络的过程中,大家坑爹对一些网络的概念很苦恼,各种各样的协议,HTTP协议,DNS协议,TCP协...


目录


文章目录​​

前言

一、HTTP是什么?

1.1 超文本

1.2 请求-响应       

1.3 运行在TCP之上

二、计算机网络五层模型

应用层

运输层

网络层

链路层

物理层

三、HTTP请求和响应结构

客户端请求消息

服务器响应消息

四、HTTP 请求方法

五、HTTP 状态码

六、HTTP 响应头信息

总结







前言


在学习网络的过程中,大家坑爹对一些网络的概念很苦恼,各种各样的协议,HTTP协议,DNS协议,TCP协议,UDP协议,IP协议等傻傻分不清,不清楚他们具体有什么作用,这篇文章会从HTTP协议,去向读者解释这些概念,希望看了这篇文章,可以让你对计算机网络中一些概念有基础的了解







一、HTTP是什么?


 超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。


1.1 超文本

        什么叫超文本?要理解这个概念,我们可以先知道什么是文本,文本是一种能够被计算机解析的有意义的二进制数据包。而随着互联网的高速发展,人们不满足只能在两台电脑之间传输文字,还想要传输图片、音频、视频,甚至点击文字或图片能够进行超链接的跳转,那么文本的语义就被扩大了,这种语义扩大后的文本就被称为超文本(Hypertext)。


1.2 请求-响应
       

你可以理解为,http协议数据的传输,就是客户端向服务器发起请求,服务器收到请求,响应数据给客户端,这就是请求响应,而HTTP就是对这个过程中的一种规则。 

1.3 运行在TCP之上

        什么叫做运行在TCP之上,对计算机网络有点理解的朋友可以知道,计算机网络是分层的结构,什么五层模型,什么七层模型,一直觉得这个特别难背,但是如果想理解计算机网络,那么对这几个模型必须清楚,在TCP之上的意思是,HTTP协议是应用层协议,而TCP协议是传输层的协议,接下来就来讲一讲计算机网络五层模型,让你对计算机网络各个协议有清楚的认知。






二、计算机网络五层模型

编辑

                                                                借用网上的图 

计算机五层层模型有什么用,你可以理解数据想要通过网络从一台机器,发送到另一台机器,需要对数据进行很多处理,需要为数据封装很多其他的信息,在五层模型中,每一层,都是为它的上一层提供服务,对上一层提供的数据进行再加工

应用层

       应用层是网络应用程序和网络协议存放的分层,因特网的应用层包括许多协议,例如我们学 web 离不开的 HTTP,电子邮件传送协议 SMTP、端系统文件上传协议 FTP、还有为我们进行域名解析的 DNS 协议。应用层协议分布在多个端系统上,一个端系统应用程序与另外一个端系统应用程序交换信息分组,我们把位于应用层的信息分组称为 报文(message)

运输层

运输层主要为我们提供了两个传输协议,一个是TCP协议,一个是UDP协议。

TCP协议是面向连接的,是一种可靠的协议,HTTP就是依赖的TCP协议;

UDP 协议向它的应用程序提供了无连接服务。它不具备可靠性的特征,没有流量控制,也没有拥塞控制。我们把运输层的分组称为 报文段(segment),

网络层

网络层主要的协议是IP协议,所有具有网络层的因特网组件都必须运行 IP 协议,IP 协议是一种网际协议,有了IP协议,才能根据对方的IP地址,寻找最佳路径传输信息,在这一层的数据被称之为数据报(datagram)


链路层

为了将分组从一个节点(主机或路由器)运输到另一个节点,网络层必须依靠链路层提供服务。链路层的例子包括以太网、WiFi 和电缆接入的 DOCSIS 协议,因为数据从源目的地传送通常需要经过几条链路,一个数据包可能被沿途不同的链路层协议处理,我们把链路层的数据分组称为 帧(frame)

物理层


而物理层的作用是将帧中的一个个 比特 从一个节点运输到另一个节点,物理层的协议仍然使用链路层协议,这些协议与实际的物理传输介质有关,例如,以太网有很多物理层协议:关于双绞铜线、关于同轴电缆、关于光纤等等。
 

网络模型 主要协议 数据名称
应用层 HTTP,DNS协议 报文
运输层 TCP,UDP 报文段
网络层 IP协议 数据报
链路层 DOCSIS协议(了解)
物理层 比特








三、HTTP请求和响应结构

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

编辑


服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

编辑

四、HTTP 请求方法

        大家在用SpringMVC写controller接口时候,对定义接口的地址时,可以用好几个注解,如果是用的@RequestMapping,那么什么请求(GET,POST,PUT)等都能请求进来,当然,我们对自己的接口,同时可以使用@GetMapping,@PostMapping来限定只有固定的请求格式能请求就来,而GET,POST 等请求方法,其实就是基于HTTP协议定义的请求,接下来让我介绍一下HTTP都有哪些请求,看看你是否听说过。

@GetMapping("/list-recommends")
    @ApiOperation("新品推荐接口")
    public ResultVO listRecommendProducts() {
        return productService.listRecommendProducts();
    }


根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD
类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT TTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

PS:平时在项目中,一般查询接口用get请求,修改接口用post请求,这也是用的最多的两个请求方式


五、HTTP 状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。

HTTP 状态码的英文为 HTTP Status Code。。

下面是常见的 HTTP 状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

 HTTP请求状态码含义(HTTP状态码非常多,一个一个去记是很恼火的,但对于常见的状态码和状态码开头数字代表的含义是我们需要去知道的)


编辑


六、HTTP 响应头信息

打开你的浏览器F12,在网络那一栏,我们可以看见圈起的那一部分,这是收到服务器的信息后,可以得到的关于响应数据的基础信息,就像你打开一个文件的属性,会给你暂时比如文件类型,文件大小等信息一样,对于响应的数据,会把这些信息封装的响应头里边。





编辑


常用的头设置:Content-Type:表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。

总结

以上就是对HTTP协议的大概总结,希望大家能重点去通过网络模型去理解,每一层模型有哪些协议,每一层它的数据封装之后叫做什么,记住常用协议所在的层级,就能很轻松去理解他的功能作用,就不会像我以前一样,HTTP协议,TCP/IP协议傻傻分不清了

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。