网络编程(HTTP协议)

发布于:2025-06-16 ⋅ 阅读:(19) ⋅ 点赞:(0)

思维导图

http简介

定义:

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网应用层通信的核心协议,定义了客户端(如浏览器)与服务器之间的数据交互规则。

简介:

1.HTTP是应用层协议

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

3.HTTP协议工作于B/S架构上,浏览器作为HTTP客户端通过URL主动向HTTP服务端即WEB服务器发送所有请求,Web服务器根据接收到的请求后,向客户端发送响应信息。

4.HTTP默认端口号为80,但是你也可以改为其他端口

http特点

特点

1.无状态性
协议不保存会话上下文,每个请求独立处理。需通过Cookie、Session或Token实现状态管理(如用户登录状态)。

2.无连接(短连接)
默认每次请求独立建立TCP连接,完成即断开(HTTP/1.1通过Connection: keep-alive支持持久连接,减少握手开销)

注意:HTTP协议本身是无连接的,即每个请求和响应都是独立的。但是http是基于TCP协议的连接管理方式,想要与长连接和短连接用于优化HTTP请求和响应的传输效率。长连接是指在一个TCP连接上可以发送多个HTTP请求和响应,而不需要每次请求都建立和关闭一个新的TCP连接。短连接是指每个HTTP请求和响应都使用一个新的TCP连接

3.明文传输(HTTP)与加密传输(HTTPS)

        HTTP:数据以明文传输,存在窃听风险。

        HTTPS:基于TLS/SSL加密,保障数据隐私和完整性,默认端口443。

4.HTTP是媒体独立:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

解析:

由此可见HTTP 协议是以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此 HTTP 协议不适合传输一些敏感信息,比如信用开号、密码等。

为了解决 HTTP 协议的这一缺陷,需要使用另一种协议:HTTPS 协议。

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单来说就是 HTTP 的安全版。即在 HTTP 下加入 SSL 协议,SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS 和 HTTP 的区别主要为以下三点:

        1.http 是超文本传输协议,信息是明文传输;https 协议是由 http + ssl 协议构建的可进行加密传输、身份认证的网络协议,信息是密文传输,比 http 协议安全。

        2.https 协议需要到 ca 申请证书,一般免费证书很少,需要缴费

        3.http 和 https 使用的默认端口也不一样,前者是 80,后者是 443

http协议格式

地址栏区分:

  https      ://www.example.com:    443      /path/page.html     ?query=param   #section
└─┬─┘ └──────┬──────┘ └┬┘ └─────┬─────┘ └───┬───┘ └──┬──┘
    协议                  主机                 端口              路径                   查询参数           锚点

1.请求数据格式

(这里最好结合着思维导图看)

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

(1).请求行

请求行是由请求方法字段、url字段、http协议版本字段3个部分组成。

  1. 请求方法
    • GET:获取资源(幂等,可缓存)。
    • POST:提交数据(非幂等,如表单提交)。
    • PUT/DELETE:更新/删除资源(RESTful API常用)。
    • OPTIONS:查询支持的方法(如CORS预检请求)。
  2. 状态码分类
    • 1xx:信息响应(如101 Switching Protocols)。
    • 2xx:成功(如200 OK、201 Created)。
    • 3xx:重定向(如301永久重定向、304缓存未修改)。
    • 4xx:客户端错误(如404未找到、403禁止访问)。
    • 5xx:服务器错误(如500内部错误、503服务不可用)。
  3. 缓存机制
    • 强缓存:通过Cache-Control: max-age=3600Expires控制本地缓存有效期。
    • 协商缓存:利用Last-ModifiedETag校验资源是否更新,服务器返回304状态码避免重复传输。

(2).请求头部

也被称作消息报头,请求头是由一些键值对组成,每行一对,关键字和值用英文冒号“:”分隔。允许客户端向服务器发送一些附加信息或者客户端自身的信息

(3).空行

最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。也就是请求头结束的标志。

(4).请求体(请求数据)

请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

2.响应数据格式

请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

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

(1).状态行

位置:响应首行
格式HTTP版本 状态码 状态短语

由三部分组成,HTTP协议的版本号、状态码、以及对状态码的文本描述。

例如:HTTP/1.1    200    OK 。(200表示请求已经成功)

        (协议版本)(状态码)(CRLF)

状态码:

  • 200 OK:请求成功

  • 301 Moved Permanently:资源永久重定向

  • 304 Not Modified:资源未修改(缓存有效)

  • 400 Bad Request:客户端请求错误

  • 401 Unauthorized:需要身份验证

  • 403 Forbidden:禁止访问

  • 404 Not Found:资源不存在

  • 500 Internal Server Error:服务器内部错误

(2).消息报头

位置:状态行之后,空行之前

(3).空行

位置:报头结束后
格式\r\n(回车换行)
作用:分隔报头和正文的边界

(4).响应正文

位置:空行之后
内容:服务器返回的实际数据

示例: 

看完之后我们就能看出,HTTP协议就是客户端发送请求消息,服务器识别后对数据处理,返回给客户端,所以格式都是很相似的,都是分为四个部分。

客户端发送的请求数据,第一行就是请求行,空行前都是请求头部,空行后就是请求数据:

 服务端返回的响应:

 


网站公告

今日签到

点亮在社区的每一天
去签到