什么是HTTP
HTTP就是超文本传输协议Hypertext Transfer Protocol的简称, 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
什么是超文本
包含有超链接和多媒体元素标记(图片、视频、音频)的文本即为超文本Hypertext。
什么是协议
网络协议就是网络中传输、管理信息的一些规范。计算机之间相互通信,需要遵守一定的规范,我们称之为网络协议。
HTTP有关的组件
网络模型
网络以分层的方式组织协议,每个协议属于层次模型之一。每一层都向它的上一层提供服务(Service),即所谓的服务模型。每个分层中所有的协议称为协议栈(protocol stack)。因特网的协议栈用五层组成,自下而上分别是物理层、数据链路层、网络层、传输层、应用层。
应用层
应用层是网络应用程序和网络协议存放的分层,应用层包括许多协议,如浏览网页时有HTTP协议,电子邮件传输用到的SMTP协议,端于端之间文件传输用到的FTP协议,进行域名解析时用到的DNS协议。应用层协议分布在多个端系统上,一个端系统的应用程序与另外一个端系统应用程序交换信息分组,我们把位于应用层的信息分组称为报文(message)。
传输层
传输层主要用来传送报文,运行在这一层的协议主要是TCP和UDP,特点如下:
- TCP:传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- UDP:用户数据包协议,是一种无连接、不可靠的传输协议。
网络层
网络层主要负责将数据从源端传输到目的端,向传输层提供最基本的端到端的数据传送服务。运行在这一层的主要是IP协议,IP协议是一种网际协议,网络层还包括一些其他的网际协议和路由选择协议。
数据链路层
介于物理层和网络层之间,在物理层提供服务的基础上想网络层提供服务,将源自物理层的数据可靠的传输到相邻接点的目标机网络层。
物理层
为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的、电子的功能的和规范的特性。确保原始的数据可在各种物理媒体上传输。
HTTP相关的协议
在网络中,任何协议都不能单独完成信息交互,需要与其他协议一起配合才能完成工作。下面列举一写主要的协议以及作用:
TCP/IP
TCP/IP我们一般称之为协议簇,不仅包含TCP协议和IP协议,是一系列网络通信协议的统称。核心的两个协议是TCP和IP协议,其他的协议还有UDP、ICMP、ARP等。
- 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包括URL和URN(统一资源名称),关系如下:
HTTPS
HTTP一般是明文传输,很容易被攻击者窃取重要信息,鉴于此,HTTPS应运而生。HTTPS的全称为(Hyper Text Transfer Protocol over SecureSocket Layer),HTTPS和HTTP有很大的不同在于HTTPS是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础上增加了 SSL 层,也就是说 HTTPS = HTTP + SSL。
HTTP请求与响应过程
当我们在浏览器中访问某个网站时,大致会经过如下几步(假定访问的url是http:www.juejin.cn):
- 我们在浏览器地址栏输入地址时,浏览器会自动匹配之前访问过的地址,并给出提示
- 确定url并按回车时,通过
DNS查找访问域名http:www.juejin.cn对应的IP地址,然后在客户端和服务器之间建立TCP连接 - 客户端和服务器进行三次握手
- 服务端接收到请求报文,准备相关的资源内容,返回响应结果
- HTTP 客户端接受完响应报文后,四次挥手后
TCP连接会关闭 - 拿到对应的
HTML数据进行渲染
HTTP请求的特征
HTTP请求具备以下特征:
- 支持客户端-服务器模式
- 简单快速:客户端向服务器发送请求时,只需要传送请求方法和路径。常用的请求方法有
GET、POST、HEAD。由于HTTP协议简单,使得HTTP服务器的程序小,通讯速度快。 - 传输灵活:允许传输任意类型的数据,
- 无连接:每次请求都会建立连接,请求结束后断开。
- 无状态:HTTP协议是无状态的协议。