关于HTTP协议的那些东西!

简介: 关于HTTP协议的那些东西!

1

web服务器和URL


       我们首先来讲讲web服务器,Web服务器是指能够为发出请求的浏览器提供文档的程序。服务器是一种被动的程序,只有当我们从浏览器发出请求时才会响应。我们所说的写网站,到最后我们是需要把我们所写的代码部署到web服务器上,这样就可以让全世界的人都能够去访问你的网站,你那里面放置的所有的数据、资源,大家都可以下载。目前最主流的三个Web服务器是Apache,Nginx,IIS。


     然后一个就是我们的URL,例如:“http://www.baidu.com” 这就是一个url,它包含些什么呢?


  • 协议:包括http,https等
  • 域名或者ip地址:www.baidu.com这个就是域名,116.211.94.1这个就是ip地址。
  • 端口号:这里可能没有体现出来,80是我们常用的端口号,程序必须使用端口号才能够让另一台计算机访问。


2

什么是HTTP?为什么要学它?


  HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。


    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。


   其实就是我们服务器和客户端浏览器传输数据时的一种协议,你可以把它理解为计算机世界里面的一种规则,我们必须去遵守它。


   我们为什么要去学习它呢?这就有点废话了,我们遵守规则的前提是我们得了解这个规则,并且HTTP是Javaweb开发的基础,每一个请求和响应都是web开发最基本的操作,当我们学习web开发的时候,不去学http协议,我们会“打拳不练功,到老一场空”,当我们在web开发懵B的时候还不如好好的去学习http协议,不然花费在懵逼路上的时间比学http协议多得多。


3


HTTP的原理、作用、特点


原理:


  • HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
  • Web服务器根据接收到的请求后,向客户端发送响应信息。
  • HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

   

作用:


      它能够使浏览器和客户端浏览器之间更加高效的传输数据,它不仅保证计算机正确快速的传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先展示(如文本先于图像)等。


特点:

      基于请求-响应模型,先有请求后有响应,如图:


image.png



4

HTTP的请求

   

   HTTP请求协议包括:请求行,请求头,请求体


   HTTP响应协议包括:响应行,响应头,响应体


那么什么是HTTP请求呢?


      当客户端连接上服务器后,向服务器请求某个web资源时,称之为客户端向服务器发送了一个http请求。


      请求包括一个请求行、若干个请求头、以及请求体内容,请求头和请求体内容之间要用空行隔开。


格式如下图(图来自网络,侵权必删):、


image.png


例如下面就是一个get请求:


GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi



5

HTTP请求方式有哪几种?


在开发中常见的请求方式有POST,GET,DELETE,PUT,我们主要讲一讲GET和POST。


  1.GET请求:向服务器特定的资源发出查询请求,一般是用于查询数据或者资源的请求中。


  GET请求有几个特点


  1. get请求查询的参数是可以在浏览器的地址栏中查看到的
  2. 请求的数据会附带在url之后,以?分割URL和传输数据,多个参数之间用&连接
  3. 例如:GET /get.html?name=jap&password=123 HTTP/1.1


  2.POST请求:向指定资源提交数据进行处理请求(例如注册登录或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改


  POST的特点:


  1.   post请求的数据会放置在HTTP请求体中
  2.   例如:POST /post.html HTTP/1.1
               数据 name=jap&password=123放在请求中了


   3.两者的区别:在HTTP规范中,没有对URL的长度和传输的数据大小进行大小的限制,但是在实际的开发中,对于GET请求,特定的浏览器和服务器对URL的长度有限制。因此在使用GET请求时,会受到长度的限制


6

什么是请求头,请求体?


请求头用于描述客户端请求哪台主机,以及客户端的一些基本环境信息等,请求头是以键值对的方式来传递数据


如下面:


Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9
Cache-Control:max-age=0
Connection:keep-alive
Cookie:BIDUPSID=9D9C53E416CD7FF75D06ECDD54E96CBB; PSTM=1543042511; BD_UPN=12314753; __cfduid=d7051da25724d1e9caf4c4f142767136e1547043423; MCITY=-43%3A; ispeed_lsm=0;
Host:www.baidu.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36


请求体代表着浏览器在post请求方式中传递给服务器的参数,请求体中的每一个数据都是采用键值对的形式,多个参数用&连接,另外服务器在接收到请求体后会单独对其解析。


7

HTTP的响应


一个HTTP响应代表服务器向客户端回送的数据,它包括一个响应行,若干个响应头,以及响应体,其中的一些响应头和响应体都是可选的,响应头和响应体内容之间需要用空行隔开。


响应头用于描述服务器的基本信息,以及数据的描述,通过这些数据的描述,可以通知客户端怎么处理它待会回送的数据


例如下面就是一个响应头:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2019 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain


响应行中包含了HTTP协议的版本,以及用于描述服务器对请求的处理结果


例如    HTTP/1.1  200  OK


          协议/版本  状态码   状态码描述


这里来补充一下状态码:它是服务器和浏览器之间确定状态的固定数字(200:请求成功,302:请求重定向,404:请求资源不存在,500:服务器内部发生错误)


响应体代表着服务器向客户端浏览器回送的正文


例如:

<!DOCTYPE html>
<!--STATUS OK-->
<html>
 <head>  
   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
   <meta http-equiv="content-type" content="text/html;charset=utf-8">
   <meta content="always" name="referrer">
       <meta name="theme-color" content="#2932e1">
       <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
       <link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu_85beaf5496f291521eb75ba38eacbd87.svg">
       <link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="百度搜索" />
<title>HTTP_百度搜索</title>
省略...

相关文章
|
28天前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
68 7
|
21天前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
146 10
|
21天前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
47 11
|
21天前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
34 8
|
22天前
|
安全 应用服务中间件 Linux
判断一个网站是否使用HTTPS协议
判断一个网站是否使用HTTPS协议
31 4
|
29天前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
|
1月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
72 3
|
1月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
49 13
|
1月前
|
传感器 缓存 网络协议
CoAP 协议与 HTTP 协议的区别
CoAP(Constrained Application Protocol)协议是为资源受限的设备设计的轻量级协议,适用于物联网场景。相比HTTP,CoAP具有低功耗、低带宽占用和简单易实现的特点,支持多播通信和无连接的交互模式。
|
1月前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】