HTTP知识整理

165 阅读5分钟

什么是HTTP

HTTP就是超文本传输协议Hypertext Transfer Protocol的简称, 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

什么是超文本

包含有超链接和多媒体元素标记(图片、视频、音频)的文本即为超文本Hypertext

什么是协议

网络协议就是网络中传输、管理信息的一些规范。计算机之间相互通信,需要遵守一定的规范,我们称之为网络协议。

HTTP有关的组件

网络模型

网络以分层的方式组织协议,每个协议属于层次模型之一。每一层都向它的上一层提供服务(Service),即所谓的服务模型。每个分层中所有的协议称为协议栈(protocol stack)。因特网的协议栈用五层组成,自下而上分别是物理层、数据链路层、网络层、传输层、应用层。

应用层

应用层是网络应用程序和网络协议存放的分层,应用层包括许多协议,如浏览网页时有HTTP协议,电子邮件传输用到的SMTP协议,端于端之间文件传输用到的FTP协议,进行域名解析时用到的DNS协议。应用层协议分布在多个端系统上,一个端系统的应用程序与另外一个端系统应用程序交换信息分组,我们把位于应用层的信息分组称为报文(message)

传输层

传输层主要用来传送报文,运行在这一层的协议主要是TCPUDP,特点如下:

  • TCP:传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
  • UDP:用户数据包协议,是一种无连接、不可靠的传输协议。

网络层

网络层主要负责将数据从源端传输到目的端,向传输层提供最基本的端到端的数据传送服务。运行在这一层的主要是IP协议,IP协议是一种网际协议,网络层还包括一些其他的网际协议和路由选择协议。

数据链路层

介于物理层和网络层之间,在物理层提供服务的基础上想网络层提供服务,将源自物理层的数据可靠的传输到相邻接点的目标机网络层。

物理层

为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的、电子的功能的和规范的特性。确保原始的数据可在各种物理媒体上传输。

HTTP相关的协议

在网络中,任何协议都不能单独完成信息交互,需要与其他协议一起配合才能完成工作。下面列举一写主要的协议以及作用:

TCP/IP

TCP/IP我们一般称之为协议簇,不仅包含TCP协议IP协议,是一系列网络通信协议的统称。核心的两个协议是TCPIP协议,其他的协议还有UDPICMPARP等。

  • TCP:传输控制协议,协议的全称是 Transmission Control Protocol,HTTP使用TCP作为通信协议,提供可靠交付,保证数据不丢失。
  • IP:协议的全称是 Internet Protocol,主要解决的是通信双方的寻址问题。IP 协议使用 IP 地址 来标识互联网上的每一台计算机,要与其他人通信,必须知道他的IP地址才可以。

DNS

DNS即域名解析系统,我们平时记住的网址,并不是服务器对应的真正地址,这个网址是给人记得,比如https://www.juejin.cn。需要把这个网址转换成对应的IP地址,才能实现网络通信,这就是DNS做的工作。DNS的全称是域名系统(Domain Name System,缩写:DNS)。

URI/URL

我们输入的网址是需要符合一定的规范的,不能够随意输入,这个规范就是URI

  • URI:全称是Uniform Resource Identifier,统一资源标识符,可以唯一的标识互联网上的资源
  • URL:全称是Uniform Resource Locator,统一资源定位符,是URI的子集,也就是我们常说的网址 URI包括URLURN(统一资源名称),关系如下:

image.png

HTTPS

HTTP一般是明文传输,很容易被攻击者窃取重要信息,鉴于此,HTTPS应运而生。HTTPS的全称为(Hyper Text Transfer Protocol over SecureSocket Layer),HTTPSHTTP有很大的不同在于HTTPS是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPSHTTP的基础上增加了 SSL 层,也就是说 HTTPS = HTTP + SSL

HTTP请求与响应过程

当我们在浏览器中访问某个网站时,大致会经过如下几步(假定访问的url是http:www.juejin.cn):

  • 我们在浏览器地址栏输入地址时,浏览器会自动匹配之前访问过的地址,并给出提示
  • 确定url并按回车时,通过DNS查找访问域名http:www.juejin.cn对应的IP地址,然后在客户端和服务器之间建立TCP连接
  • 客户端和服务器进行三次握手
  • 服务端接收到请求报文,准备相关的资源内容,返回响应结果
  • HTTP 客户端接受完响应报文后,四次挥手后TCP连接会关闭
  • 拿到对应的HTML数据进行渲染

HTTP请求的特征

HTTP请求具备以下特征:

  • 支持客户端-服务器模式
  • 简单快速:客户端向服务器发送请求时,只需要传送请求方法和路径。常用的请求方法有GETPOSTHEAD。由于HTTP协议简单,使得HTTP服务器的程序小,通讯速度快。
  • 传输灵活:允许传输任意类型的数据,
  • 无连接:每次请求都会建立连接,请求结束后断开。
  • 无状态:HTTP协议是无状态的协议。