HTTP协议介绍与TCP协议的区别

1、HTTP介绍

         HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 是基于TCP/IP 进行数据的通信,通常使用端口 80/8080。HTTP可以传输多种数据类型,如html文件、图片、视频等数据。传输的数据类型是多种类型的,如:text/html; charset=UTF-8application/json等。

(HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,它在 HTTP 下增加了 SSL/TLS 协议,提供了数据加密、完整性校验和身份验证。HTTPS 通常使用端口 443。)

2、HTTP消息结构

HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。HTTP消息分为两种类型:请求消息和响应消息。

一个 HTTP 客户端是一个应用程序(Web 浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个 HTTP 的请求的目的。

客户端请求的报文格式如下

1.请求行 

        (1)请求方法:

上述的 GET, POST 和 HEAD 方法属于HTTP 1.0的版本,其他的方法数据HTTP1.1新增的方法。

        (2) 请求 URI(统一资源标识符):请求的资源路径,通常包括主机名、端口号(如果非默认)、路径和查询字符串。

        (3)HTTP 版本:如 HTTP/1.1 或 HTTP/2。

        请求行的格式示例:

GET /index.html HTTP/1.1

2.请求头

        包含了客户端环境信息、请求体的大小(如果有)、客户端支持的压缩类型等。常见的请求头如下:

3.空行

        请求头和请求体之间的分隔符,表示请求头的结束。

4.请求体(可选)

        在某些类型的HTTP请求(如 POST 和 PUT)中,请求体包含要发送给服务器的数据。

        

服务端的响应消息格式

1.状态行 

       (1) HTTP 版本:与请求消息中的版本相匹配。

       (2)状态码:三位数,表示请求的处理结果,如 200 表示成功,404 表示未找到资源。

        常用的状态码如下:

1xx信息,服务器收到请求,需要请求者继续执行操作
2xx成功,操作被成功接收并处理
3xx重定向,需要进一步的操作以完成请求
4xx客户端错误,请求包含语法错误或无法完成请求
5xx服务器错误,服务器在处理请求的过程中发生了错误

        (3)状态信息:状态码的简短描述。

        状态行的格式示例:

HTTP/1.1 200 OK

2.响应头

        包含了服务器环境信息、响应体的大小、服务器支持的压缩类型等。常见的响应头信息如下:

Date响应生成的日期和时间。例如:Wed, 18 Apr 2024 12:00:00 GMT
Server服务器软件的名称和版本。例如:Apache/2.4.1 (Unix)
Content-Type响应体的媒体类型(MIME类型),如text/html; charset=UTF-8application/json等。
Content-Length响应体的大小,单位是字节。例如:3145
Content-Encoding响应体的压缩编码,如 gzipdeflate等。
Content-Language响应体的语言。例如:zh-CN
Cache-Control控制响应的缓存行为, 如 no-cache 表示必须重新请求。
Connection管理连接的选项,如keep-aliveclose,keep-alive 表示连接不会在传输后关闭。。
Set-Cookie设置客户端的 cookie。例如:sessionId=abc123; Path=/; Secure
Expires响应体的过期日期和时间。例如:Thu, 18 Apr 2024 12:00:00 GMT

HTTP1.0中默认使用的是短链接,HTTP1.1中默认使用的是长链接。短链接的Connection值设置为close;长链接的Connection值设置为keep-alive。短链接是指每次的HTTP请求都需要重新链接,长链接是指HTTP的请求可以复用上次请求已连接的socket套接字进行通信。

 3.空行

        响应头和响应体之间的分隔符,表示响应头的结束。

4.响应体(可选)

        包含服务器返回的数据,如请求的网页内容、图片、JSON数据等。

消息响应举例如下:

3、HTTP和TCP的区别

HTTP(Hypertext Transfer Protocol)和TCP(Transmission Control Protocol)在网络协议栈中处于不同的层次,它们各自有不同的职责和特性。以下是HTTP和TCP之间的主要区别:

  1. 协议层次
    • TCP是传输层协议,它负责在源端和目的端之间建立、管理和终止连接,确保数据的可靠传输。
    • HTTP是应用层协议,它使用TCP作为传输层协议来发送和接收数据。HTTP定义了如何格式化请求和响应消息,以及如何在Web上实现超文本链接、缓存等功能。
  2. 职责和特性
    • TCP:
      • 提供面向连接的、可靠的、基于字节流的服务。
      • 使用序列号、确认和重传机制确保数据的顺序和完整。
      • 支持全双工通信,允许在建立连接后,双方同时发送和接收数据。
      • 提供了流量控制、拥塞控制等机制,以优化网络性能。
    • HTTP:
      • 定义了客户端和服务器之间交换消息的格式和规则。
      • 提供了请求/响应模型,客户端发送请求,服务器返回响应。
      • 支持多种请求方法(如GET、POST、PUT、DELETE等)和状态码(如200 OK、404 Not Found等)。
      • 支持持久连接(HTTP/1.1),允许在一个TCP连接上发送多个请求和响应,减少建立和关闭连接的开销。
  3. 通信过程
    • 当使用HTTP进行通信时,首先需要在客户端和服务器之间建立一个TCP连接(HTTP/1.0或更早版本中通常是每次请求建立一次连接,HTTP/1.1和更高版本支持持久连接)。
    • 建立连接后,客户端发送HTTP请求消息给服务器,服务器收到请求后处理并返回HTTP响应消息给客户端。
    • 通信完成后,TCP连接可以被关闭或保持打开状态以支持后续的请求。
  4. 安全性和加密
    • TCP本身不提供加密或身份验证功能,它只负责数据的可靠传输。
    • HTTP可以通过使用HTTPS(HTTP Secure)来提供加密和身份验证功能。HTTPS在HTTP的基础上增加了TLS/SSL协议,用于加密传输的数据,保护通信的机密性和完整性。
  5. 用途和场景
    • TCP可以用于各种需要可靠传输的场景,如文件传输、邮件发送、数据库连接等。
    • HTTP主要用于Web通信,是互联网上的主要协议之一,用于浏览网页、传输文件、执行Web服务等。

HTTP和TCP在网络协议栈中处于不同的层次,各自负责不同的任务。HTTP使用TCP作为传输层协议来确保数据的可靠传输,并在其上定义了如何格式化请求和响应消息以及如何在Web上实现各种功能。

上述文章部分内容参考于:

 HTTP/HTTPS 简介 | 菜鸟教程 (runoob.com)

 HTTP请求、响应报文格式_http 响应包的格式-CSDN博客

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值