Loading

HTTP

一、HTTP 历史

HTTP的全称是 HyperText Transfer Protocol ,读作为超文本传输协议,是万维网(World Wide Web)的基础。

蒂姆·伯纳斯·李(Tim BernersLee)博士和其团队在欧洲核子研究组织(CERN)研发出了超文本传输协议。蒂姆·伯纳斯·李提出的设计理念是:借助多文档之间相互关联形成的超文本(HyperText),连接可相互参阅的万维网。

HTTP最开始主要应用于高校之间进行学术交流,但由于发展迅速,成为了全球信息通讯的一个标准协议。

HTTP经历了HTTP /0.9、HTTP /1.0、HTTP /1.1、HTTP /2.0、HTTP /3.0。HTTP /1.1版本正式成为了标准,也是目前使用最主流的版本。

二、HTTP 通信模型

HTTP协议属于OSI七层模型中的应用层,基于传输层TCP,使用的端口是80(HTTP)和443(HTTPS)。

  • 客户端和服务器进行三次握手,建立TCP连接
  • 客户端向服务器发送请求报文,服务器解析请求报文,查找目标数据,向客户端发送响应报文
  • 服务器和客户端进行四次挥手,断开TCP连接

三、HTTP 报文

HTTP报文包括请求请求报文和响应报文

3.1 请求(request)

请求报文的通用格式:请求报文包括:请求行、请求头部、空行、请求数据

GET http://jsuacm.cn/ HTTP/1.1
Host: jsuacm.cn
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)
Accept: text/html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

//”请求数据”(GET方式的请求一般不包含)
  • 请求行

    由请求方法、URL、HTTP版本组成。请求方法主要包括:GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT。GET和POST是最常用的请求方法。

    GET方法一般用来向服务器获取数据,请求参数和对应的值放在URL后面,用一个问号(?)连接URL和请求参数,多个请求参数之间用&符号连接。例如:

    GET http://abc.com/login?user=admin&password=123456,通过这种方法传递参数是明文显示,不安全。请求行一般限制最大字符是1024,传递参数过多时,使用GET方法就不适合了。GET方法一般不包括请求数据。

    POST方法可以向服务器提交数据,可以将请求参数放在请求数据中,可以传输大量数据。

  • 请求头部

    请求头部为请求报文添加了一些附加信息,由键值对组成,每行一个键值对,键和值之间使用冒号隔开。

    比较常见的字段有:Host、User-Agent、Accept、Accept-Charset、Accept-Encoding、Authorization、Cookie、Content-Type、Content-Length。

  • 空行

    请求头部后有一个空行,标识请求头部结束,接下来的是请求数据,目的是用于数据解析。

  • 请求数据

    请求数据不在GET方法中使用,而在POST方法中使用。POST方法使用于需要客户填写表单的场合。

3.2 响应(respond)

响应报文的通用格式:状态行、响应头部、空行、响应数据

HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Wed, 20 Oct 2021 06:46:15 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Length: 737265

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<meta name="description" content="">
	<meta name="author" content="">
	<link rel="icon" href="../../favicon.ico">

	<title>
		吉首大学	
	</title>
	。。。(省略)
  • 状态行

    由协议版本、状态码、状态描述。

    状态码有:1xx、200、3xx、4xx、5xx。状态码200表示请求成功。

  • 响应头部

    常见的响应头部字段有:Server、Date、Expires、Set-Cookie、Last-Modified、Content-Type、Content-Length、Connection、Location。

  • 空行

    用于分隔开响应头部和响应数据,于请求报文中的功能一致。

  • 响应数据

    用于存放返回给客户端的数据信息。

posted @ 2024-05-18 11:17  eiSouthBoy  阅读(23)  评论(0)    收藏  举报