广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >HTTP协议详细解读
  • 796
分享到

HTTP协议详细解读

httpjava网络 2023-08-16 15:08:06 796人浏览 安东尼
摘要

文章目录 1. HTTP概念2. HTTP 特点3. HTTP 协议的工作过程4. 认识URL5. HTTP 请求数据格式6. HTTP 响应数据格式7. 总结📂橙子精品文章学习推荐 1. Http概念 HTTP

1. Http概念

HTTP:HyperText Transfer Protocol,超文本传输协议。HTTP 协议规定了浏览器和服务器之间数据传输的规则。为了使得数据从源头到达目的地,网络通信的参与方必须遵循相同的规则,这个规则称为协议,协议保证了双方能够读懂对方发送的数据。

此时,浏览器和服务器有什么关系呢?要明白这个问题,我们先来看看什么是 B/S 架构

image-20230201155203084

B/S 架构,即浏览器 / 服务器架构模式,其特点是,客户端只需要浏览器,应用程序的逻辑和数据存储都在服务器端。使用时浏览器向服务器请求并获取资源,服务器把资源发送到浏览器。

资源数据在浏览器和服务器之间传递需要遵循一个规则,这个规则就是 HTTP 协议。浏览器按照 HTTP 协议发送请求和数据,WEB 服务器端根据 HTTP 协议解析请求和数据,然后将处理结果按照 HTTP 协议发送给浏览器。

现在大多数网页都是通过 https 来通信,HTTPS 在 HTTP 基础上做了加密工作。学习 HTTP 协议主要学习请求数据和响应数据的格式。

2. HTTP 特点

HTTP 协议具有以下的几个特点:

  • 基于 tcp 协议
  • 基于请求响应模型:一次请求一次响应
  • HTTP协议是无状态协议:对于事务处理没有记忆能力

说明

TCP 协议是一种面向连接的,可靠的,基于字节流的传输层通信协议,在数据传输方面更加的安全

HTTP 协议每次请求和响应都是独立的,客户端发送 HTTP 请求到服务器端后,服务器端根据请求响应数据,响应完成后不会记录任何信息,这样的方式具有速度快的优点,但是其导致的问题就是多次请求之间不能共享数据,而 Java 使用会话技术解决这个问题,后续都会讲解到。

3. HTTP 协议的工作过程

我们在浏览器中输入一个网址后,浏览器就会向服务器发送一个 HTTP 请求,对应的服务器接收到这个请求以后,经过解析处理,就会返回一个 HTTP 响应。我们在访问一个网站时,可能会涉及多次的 HTTP 请求和响应的交互过程。

其中有几个以后经常使用的专业术语需要了解:

  • 客户端:发起网络请求的一端
  • 服务器:接收网络请求的一端
  • 请求:客户端给服务器发送的数据
  • 响应:服务器给客户端发送的数据

image-20230201211947021

当我们访问一个网站时,可能有不止一次的 HTTP 请求和响应的交互,为了更加清楚的了解访问网站时的浏览器和服务器的交互情况,我们可以使用开发工具来查看。

通过 [Fn] f12 打开浏览器的开发者工具,点击 Network 标签页,然后刷新即可看到其请求和响应的数据,这里显示的每一条数据都是一次 HTTP请求响应的交互,如下图:

image-20230201210540433

4. 认识URL

其实,在平时我们说的网址就是一个 URL,URL 又叫统一资源定位符,互联网上每一个文件都有唯一的 URL,它包含指出文件的位置以及浏览器该如何处理它。

URL有其标准的格式,如下:

协议类型:[//服务器地址[:端口号][/资源层级 UNIX 文件路径]文件名[?查询字符串][#片段标识符]]

其中,协议类型有 http 和 https,可以省略,省略后默认为 http。服务器地址可以是一个IP 地址或者域名,IP 地址用来描述一个网络上的地址,能够用来定位一个具体的主机,在 html 中可以省略服务器地址,表示服务器的 IP 或域名就是当前 HTML 文件所述的 IP 或者域名,例如 HTML中 a 标签的 src 属性。

端口号的主要作用是表示一台计算机中特定的进程所提供的服务,即用来区分一个主机上的不同程序,每个程序在访问网络时,都会关联一个或者多个端口号,通过端口号区分当前的请求给谁,端口号也可以省略,此时浏览器根据协议的类型自动决定使用哪个端口号。例如 http 协议默认使用 80 端口。资源层级 UNIX 文件路径表示访问该服务器程序上某个资源的路径,可以省略,省略后相当于 / 。通俗的说,端口号用于区分同一服务器地址的不同网站。

文件名表示访问该服务器上的哪个资源,如 html,不能省略。

查询字符串,由键值对组成,不同键值对中间使用 & 连接,表示客户端给服务器传递的参数,该参数是 Web 开发中一个重要的参数,给前后端交互提供更多可能性,可以通过这种方式将自定义的数据发送给服务器。查询字符串可以省略。

片段标识符主要用于页面的跳转,例如跳转到当前页面的某个部分,可以省略。

例如之前在使用 JDBC 连接数据库时使用的 URL:

jdbc:Mysql://localhost:3306/blog?useSSL=false

如图:

image-20230201215951040

5. HTTP 请求数据格式

HTTP 请求数据总共分为 3 个部分,分别是:

  • 请求行
  • 请求头
  • 请求体

image-20230201182055836
image-20230201182555136

请求行:HTTP 请求中的第一行数据,请求行包含了 3 部分内容,分别是请求方式 / 请求的URL路径 / HTTP协议及版本。

请求方式一共有 7 种,其中最主要的是 GET 和 POST,另外还包括了:GET,POST,PUT,HEAD,DELETE 等。

请求头:从 HTTP 请求的第二行开始是请求头,其为 key:value 的格式。

请求头中包含了很多的属性,例如:

请求头属性作用
Host请求的主机名
User-Agent浏览器的版本
Accept浏览器能接受的资源类型,例如:text/*
Accept-Language浏览器偏好的语言,服务器根据此返回不同语言的网页
Accept-Encoding浏览器可以支持的压缩类型,例如:gzip

如图:

在这里插入图片描述

服务器根据请求头中的内容获取客户端的相关信息,有了这些信息服务端就可以处理不同的业务需求。

例如,服务器根据客户端请求头中的数据获取客户端的浏览器类型,根据不同的浏览器设置不同的代码用来达到相同的效果。这样就解决了相同的 HTML,CSS 文件可能由于浏览器兼容性的问题导致其显示的效果不同的问题。

请求体:POST 请求的最后一部分,存放请求参数。

image-20230201183539805

请求头和请求体之间使用一个空行隔开,主要用于 POST 请求,而对于常用的 GET 请求是没有请求体的,其请求参数放在请求行中。GET 请求的参数大小是有限制的,而 POST 请求没有。

6. HTTP 响应数据格式

响应数据也是分为 3 部分,分别是:

  • 响应行
  • 响应头
  • 响应体

image-20230201182819921

image-20230201183308499

响应行:响应数据的第一行,这里也有 3 块内容,分别是 HTTP 协议及版本,响应状态码,状态码描述。

响应状态码由服务端返回给客户端,表示其响应数据的状态,例如:

  • 200 :表示客户端请求成功
  • 404 :请求资源不存在,一般是浏览器中输入的URL的问题
  • 500 :服务端发生错误,一般是Java代码的问题

响应状态码从 1xx5xx,每个状态码对应了一个状态码描述,状态码由服务器端返回给客户端,用户根据服务端返回给浏览器的状态码做出相关的反应。

响应头:响应数据的第二行开始为响应头。响应头的数据格式和请求头中数据格式相同,为 key:value 。

同样地,响应头中也包含了若干属性,例如:

响应行属性作用
Content-Type表示响应内容的类型,例如:text/html
Content_Length表示响应内容的长度(字节数)
Content-Encoding表示响应压缩算法,例如:gzip
Cache-Control表示客户端应如何缓存,例如:max-age最多可以缓存300秒

如图:

在这里插入图片描述

响应体:HTTP 响应的最后一部分,存放响应数据。

响应头和响应体之间使用空行隔开。

7. 总结

本节对我们在上网时经常接触的HTTP超文本传输协议做了详细的描述,是学习javaweb课程的基础类容。

HTTP是超文本传输协议,是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

📂橙子精品文章学习推荐

❓很多朋友问我:怎样系统的学习一门编程语言?怎样学好 Java?强烈推荐大家学习:Java编程基础教程系列专栏(零基础小白搬砖逆袭),博主正处于学习成长阶段,更明白初学者的状态和需求,文章结合自身经验和经历,风趣幽默。本专栏主要更新 Java 基础,mysql 数据库,JavaWeb,SSM 框架SpringBoot 框架等,零基础小白搬砖逆袭,请相信自己。如图,专栏文章持续更新,快来和小伙伴们一起学习!!

在这里插入图片描述

Java编程基础教程系列 👈快速订阅

来源地址:https://blog.csdn.net/zhangxia_/article/details/128841528

--结束END--

本文标题: HTTP协议详细解读

本文链接: https://www.lsjlt.com/news/371543.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • HTTP协议详细解读
    文章目录 1. HTTP概念2. HTTP 特点3. HTTP 协议的工作过程4. 认识URL5. HTTP 请求数据格式6. HTTP 响应数据格式7. 总结📂橙子精品文章学习推荐 1. HTTP概念 HTTP...
    99+
    2023-08-16
    http java 网络
  • http协议详解(超详细)
    http1. 基础概念篇1.1 介绍  HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Intern...
    99+
    2023-06-04
  • HTTP协议详细介绍
    我们日常生活中经常会使用浏览器访问Web站点这个过程中到底发生了什么吗?为什么我们在浏览器地址栏上面输入要访问的URL后就可以访问到Web页面呢?这几乎是面试过程中的高频问题。 简单...
    99+
    2022-11-13
  • 详细讲解HTTP协议工作方式
    目录HTTP协议简介HTTP协议概述HTTP工作原理基于 请求-响应 的模式无状态保存无连接HTTP请求方法GETHEADPOSTPUTDELETETRACEOPTIONSCONN...
    99+
    2022-11-12
  • HTTP协议详解(一)
    目录 1.什么是HTTP协议 2.HTTP的协议格式 使用fiddler抓包工具 理解代理 查看请求内容 3.HTTP请求(Request) 认识URL URL encode 认识method GET方法 POST方法 经典面试题:POST...
    99+
    2023-08-31
    http 网络协议 网络 java 服务器
  • 详细HTTP协议的前世今生
    目录一、前言二、HTTP 的诞生三、什么是 HTTP四、驻足不前的 HTTP五、区分 URL 和 URI六、HTTP 请求和响应七、HTTP 连接管理八、无状态的 HTTP九、HTT...
    99+
    2022-11-12
  • 【网络】HTTP协议详解
    😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!💪💪...
    99+
    2023-08-23
    网络 http 网络协议 服务器 c++
  • Java中的 HTTP 协议原理详解
    目录前言1.HTTP 特点2.HTTP 组成2.1 请求对象2.1.1 请求行2.1.2 请求报头2.1.3 空行2.1.4 请求正文2.2 响应对象2.2.1 状态行2.2.2 响...
    99+
    2022-11-13
  • AndroidMQTT与WebSocket协议详细讲解
    目录MQTTWebSocket总结MQTT MQTT是一个极其轻量级的发布/订阅消息传输协议,对于需要较小代码占用空间或网络带宽非常宝贵的远程连接非常有用 有如下特点: 开放消息协议...
    99+
    2022-11-13
    Android MQTT与WebSocket Android WebSocket协议 Android MQTT协议
  • 详解HTTP协议版本(HTTP/1.0、1.1、2.0、3.0区别)
    HTTP/1.0、/1.1、/2.0、/3.0区别 HTTP1.0无连接队头阻塞缓存 HTTP/1.1特点优缺点长连接管道传输 HTTP/1.0 比较 HTTP/1.1HTTP协议层次结构图HTTP/2.0头部压缩二...
    99+
    2023-08-21
    http 网络 服务器 网络协议 linux
  • JavaTCP协议通信超详细讲解
    目录什么是tcp服务端客户端服务端与客户端代码实现实例什么是tcp Tcp通信有两个特点分别是面向连接,具有可靠性. 面向连接:指的是客户端与服务端之间的连接,在通信之前会有三次握手...
    99+
    2022-11-13
  • 详解Http协议以及post与get区别
    一、什么是HTTP协议   HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与W...
    99+
    2022-11-12
  • JavaTCP网络通信协议详细讲解
    TCP与UDP都属于TCP/IP协议 TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的...
    99+
    2022-11-13
  • Telnet协议详解
    目录 1、Telnet协议 2、telnet协议的基本概念 1、NVT(Network Virtual Terminal)网络虚拟终端  2、telnet连接 3、telnet的C/S模式 3、telnet的工作原理 1、Telnet协议 ...
    99+
    2023-09-09
    服务器 网络 linux
  • FTP协议详解
    文章目录 1 FTP概述2 实验环境3 FTP详解3.1 文件传输过程3.2 报文格式3.3 数据连接3.4 主动模式3.5 被动模式3.6 匿名服务器 4 总结 链接: C/C...
    99+
    2023-10-06
    服务器 网络 linux
  • DHCP协议详解
    DHCP是什么 1.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap P...
    99+
    2023-10-12
    网络 服务器 网络协议 DHCP DHCP6 Powered by 金山文档
  • https协议详解
    目录HTTPS协议概念HTTPS通信(握手)过程HTTPS的优缺点优点:缺点:HTTPS如何保证安全对称加密:非对称加密:TLS/SSL的工作原理TLS/SSL概述TLS/SSL功能...
    99+
    2022-11-13
    什么是https协议 HTTPS协议详解 HTTPS协议基础知识
  • ARP协议详解
    目录 ARP概述ARP协议的定义物理地址逻辑地址为什么需要2级地址 ARP工作原理如何建立ARP高速缓存使用ARP协议的4种不同情况高速缓存的生存周期 ARP报文格式封装ARP协议抓包分析抓取ARP请求报文抓取ARP响应报文...
    99+
    2023-08-21
    网络 服务器 linux 网络协议
  • HTTP协议中4xx状态码的错误类型及原因的详细解析
    详解HTTP协议中4xx状态码的错误类型及原因HTTP(Hypertext Transfer Protocol)协议是互联网上应用最为广泛的一种协议,它定义了客户端和服务器之间进行通信的规范。HTTP协议的状态码用于表示服务器对请求的处理结...
    99+
    2023-12-26
    访问限制 错误类型:客户端错误 请求错误 原因:参数错误 无权限
  • PHP伪协议详解
    PHP伪协议详解 php支持的伪协议 1 file:// — 访问本地文件系统2 http:// — 访问 HTTP(s) 网址3 ftp:// — 访问 FTP(s) URLs4 php:// — ...
    99+
    2023-09-09
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作