HTTP响应的过程

  • 1. 认识HTTP
    • 1.1 超文本
    • 1.2 什么是传输
    • 1.3 什么是协议
  • 2. 与HTTP有关的组件
    • 2.1 网络模型
    • 2.2 应用层
    • 2.3 运输层
    • 2.4 网络层
    • 2.5 链路层
    • 2.6 物理层
  • 3. 与HTTP有关的协议
    • 3.1 TCP/IP
    • 3.2 DNS
    • 3.3 URI/URL
    • 3.4 HTTPS
  • 4. HTTP响应过程
  • 5. HTTP请求的特征

1. 认识HTTP

首先你听的最多的应该就是HTTP是一种超文本传输协议Hypertext Transfer Protocoal)。

超文本传输协议可以进行分割:超文本(Hypertext)、传输(Transfer)、协议(Protocol)。

他们之间的关系如下:

按照范围大小:协议 > 传输 > 超文本 。

1.1 超文本

在互联网早期的时候,我们输入的信息只能存在本地,无法和其他电脑进行交互。我们保存的信息通常都以文本。即简单字符形式存在,文本是一种能够被计算机解析的有意义的二进制数据包。而随着互联网的高速发展,两台电脑之间能够进行数据的传输后,人们不满足只能在两台电脑之间传输文字,还想要传输图片、音频,甚至点击文字或图片能够进行超链接的跳转,那么文本的语义就被扩大了,这种语义扩大之后的文本就改称为超文本。

1.2 什么是传输

那么我们在上面说到,两台计算机之间会形成互联关系进行通信,我们存储的超文本会被解析成二进制数据包,由传输载体(例如同轴电缆、电话线、光缆)负责把二进制数据包由计算机传输到另一个终端的过程称为传输。

通常我们把传输数据包的一方称为**请求方,把接受到二进制的数据包的一方称为应答方。**请求方和应答方可以进行互换,请求方也可以作为应答方接受数据,应答方也可以作为请求方请求数据。

1.3 什么是协议

网络协议就是网络中传递、管理信息的一种规范。HTTP就是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

2. 与HTTP有关的组件

随着网络世界演进,HTTP协议已经成为不可替代的一种协议,在了解了HTTP的基本组成后,下面来进一步认识HTTP协议。

2.1 网络模型

网络是一个复杂的系统,不仅包括大量的应用程序、端系统、通信链路、分组交换机等,还有各种各样的协议组成,那么现在就聊一下网络中的协议和层次。

为了给网络协议的设计提供一个结构,网络设计着以分层的方式组织协议,每个协议属于层次模型之一。每一层都是向它的上一层提供服务,即所谓的服务模型。

每分层中所有的协议称为协议栈。因特网的协议栈由5个部分组成:物理层、链路层、网络层、运输层和应用层。

2.2 应用层

应用层网络应用程序和网络协议存放的分层,因特网的应用层包括许多协议,例如我们学习web离不开HTTP协议、电子邮件传送协议SMTP、端系统文件上传协议FTP,还有为我们进行域名解析的DNS协议。应用层协议分布在多个端系统上,一个端系统应用程序与另外一个端系统应用程序交换信息分组,我们把位于应用层的信息分组称为报文(**message**

2.3 运输层

因特网的运输层在应用程序断点之间传送应用程序报文,在这一层主要有两种传输协议TCPUDP,利用两者中的任何一个都能够传输报文,不过这两种协议有巨大的不同。

TCP向它的应用程序提供了面向连接的服务,它能够控制并确认报文是否到达,并提供了拥塞控制来控制网络传输,因此当网络拥塞时,会抑制其传输速率。

UDP协议向它的应用程序提供了无连接服务。它不具备可靠性的特征,没有流量控制,也没有拥塞控制。我们把运输层的分组称为报文段segment)。

2.4 网络层

因特网的网络层负责将成为数据报dataGram)的网络分层从一台主机移动到另一台主机。网络层一个非常重要的协议是IP协议,所有具有网络层的因特网组件都必须运行IP协议,IP协议是一种网际协议,除了IP协议外,网络层还包括一些其他网际协议和路由选择,一般网络层就成为IP层,由此可知IP协议的重要性。

2.5 链路层

现在我们有应用程序通信的协议,有了给应用程序提供运输的协议,还有了用于约定发送位置的IP协议,那么如何才能真正的发送数据呢?为了将分组从一个节点(主机或路由器)运输到另一个节点,网络层必须依靠链路层提供服务。链路层的例子包括以太网、WiFi 和电缆接入的 DOCSIS 协议,因为数据从源目的地传送通常需要经过几条链路,一个数据包可能被沿途不同的链路层协议处理,我们把链路层的分组称为 (frame)。

2.6 物理层

虽然链路层的作用是将帧从一个端系统运输到另一个端系统,而物理层的作用是将帧中一个个比特从另一个节点运输到另一个节点,物理层的协议任然适用链路层协议,这些协议与实际的物理传输介质有关,例如,以太网,以太网有很多物理层协议:关于双绞铜线、同轴电缆、光纤。

3. 与HTTP有关的协议

在互联网中,任何协议都不会单独的完成信息交换,HTTP也一样。虽然HTTP属于应用层的协议,但是它任然需要其他层协议的配合完成信息的交换,那么在完成一次HTTP请求和响应的过程中,需要那些协议的配合?

3.1 TCP/IP

TCP/IP协议你一定听过,TCP/IP我们一般称为协议簇。TCP/IP协议簇中不仅仅只有TCP协议和IP协议,它是一些列网络通信协议的统称。而其中最核心的两个协议就是TCP/IP协议,其他的还有UDPICMPARP等等,共同构成了一个复杂但有层次的协议栈。

TCP的协议的全称Transmission Control Protocol的缩写,意思是传输控制协议HTTP使用TCP作为通信协议,这是因为TCP是一种可靠的协议,而可靠能保证数据不丢失。

IP协议的全称是Internet Protocol的缩写,他主要解决的是通信双方寻址的问题。IP协议使用**IP**地址来标识互联网上的每一台计算机,可以把IP地址想成为你手机的电话号码,你要与他人沟通必须要知道他人的手机号码,计算机网络中信息交换必须先要知道对方的IP地址。

3.2 DNS

你有没有想过为什么你可以通过键盘输入www.google.com就能获取你想要的网站,我们上面说到计算机网络中的每一个端系统都有一个IP地址存在,而把IP地址转换为便于人类记忆的协议就是DNS协议.

DNS的全称是域名系统(Domain Name System),它作为将域名和IP地址相互映射的,一个分布式的数据库,能够使人更方便的访问互联网。

3.3 URI/URL

我们上面启动你可以通过输入www.google.com地址来访问谷歌的官网,那么这个地址有什么规定吗?我怎么说都可以AAA.BBB.CCC是不是也行?当然不是的,你输入的地址格式必须要满足URI的规范。

URI的全称是Uniform Resource Identifier中文名称是统一资源标识符。使用它就能够唯一的标记互联网上的资源。

URL的全称是Unfiorm Resource Locator,中文名称统一资源定位符,也就是俗称的网址,它实际上是一个URI的子集。

URI不仅包括URL,还包括URN(统一资源名称),他们之间的关系如下:


有个经典的比喻是URI现实身份证,可以唯一表示一个人,而URL更像是一个住址,可以通过URL找到这个人。

3.4 HTTPS

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

4. HTTP响应过程

你是不是很好奇,当你在浏览器中输入网址后,到底发生了什么事情?你想要的内容是如何展现出来的?让我们通过一个例子来探讨一下,我们假设访问的URL 地址为http://www.someSchool.edu/ someDepartment/home .index,当我们输入网址井点击回车时,浏览器内部会进行如下操作:

  • DNS服务器会首先进行域名的映射,找到访问 www.someSchool.edu所在的地址,然后HTTP客户端进程在 80 端口发起一个到服务器www.someSchool.eduTCP 连接(80端口是 HTTP的默认端口)。在客户和服务器进程中都会有一个套接字(Socket**)**与其相连。(浏览器查询 DNS,获取域名对应的IP地址:具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等

    • 对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析 (此解析具有权威性);
    • 如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网 址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。
    • 如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询; )
  • HTTP 客户端通过它的套接字向服务器发送一个 HTTP请求报文。该报文中包含了路径someDepartment/home.index 的资源,我们后面会详细讨论 HTTP 请求报文。

  • HTTP 服务器通过它的套接字接受该报文,进行请求的解析工作,并从其存储器(RAM 或磁盘)中检索出对象 www.someSchool.edu/someDepartment/home.index,然后把检索出来的对象进行封装,封装到 HTTP 响应报文中,并通过套接宇向容户进行发送

  • HTTP 服务器随即通知TCP 断开 TCP 连接,实际上是需要等到容户接受完响应报文后才会断开TCP 连接。

  • HTTP 客户端接受完响应报文后,TCP 连接会关闭。HTTP 客户端从响应中提取出报文中是一个HTML 响应文件,并检查该 HTML 文件,然后循环检查报文中其他内部对象。

  • 检查完成后,HTTP客户端会把对应的资源通过显示器呈现给用户。

至此,键盘输入网址再按下回车的全过程就结束了。上述过程描述的是一种简单的请求-响应全过程,真实的请求-响应情况可能要比上面描述的过程复杂很多。

5. HTTP请求的特征

从上面整个过程中我们可以总结出 HTTP 进行分组传输是具有以下特征

  • 支持客户-服务器模式
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GETHEADPOST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP 服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type加以标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力,缺少状态意味著如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP(一)HTTP响应的过程相关推荐

  1. 个人对于《信号与系统》中利用“奇异函数平衡原理”求解系统响应的过程梳理及结果的理解

    写在前头:本人只是一名普通的大二学生,这个学期刚学习<信号与系统>(郑君里第三版),对于书本中突然出现的"奇异函数平衡原理/奇异函数系数平衡"这个知识点,一直搞不清楚( ...

  2. servlet请求和响应的过程

    1.加载 Servlet类被加载到Java虚拟机中,并且实例化.在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一个Servlet类的实例对象.默认情况下Se ...

  3. 浏览器和服务器交互原理?(请求--响应的过程)

    浏览器通过socket打开连接请求 到服务器,服务器有一个监听 socket 然后生成负责通信的socket 与浏览器通信, 浏览器在通过这个通信socket 将请求报文发送给 服务器 服务器负责解析 ...

  4. 完整的一次 HTTP 请求响应过程(二)

    上篇文章 我们完整的描述了计算机五层模型中的『应用层』和『运输层』,阐述了较为复杂的 TCP 协议的相关原理,相信大家一定也有所收获,那么本篇将继续五层模型的学习. 网络层 『网络层』其实解决的就是一 ...

  5. 通过HTTP请求响应过程了解HTTP协议

    首先了解一次完整的HTTP请求到响应的过程需要的步骤 1. 域名解析 2. 发起TCP的3次握手 3. 建立TCP连接后发起http请求 4. 服务器端响应http请求,浏览器得到html代码 5. ...

  6. 一次完整的HTTP请求响应过程(很详细)

    一. HTTP请求和响应步骤 图片来自:理解Http请求与响应 以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的. 二.TCP/IP协议 ...

  7. 深入操作系统底层分析nginx网络请求及响应过程

    0. 网络传输阶段 比如说主机A是家里windows的一台笔记本电脑,主机B是linux服务器上的一个nginx,其监听80或443等web端口. 在笔记本的浏览器发送了一个http get请求,其数 ...

  8. php可以实现响应式吗,怎么实现Vue数据响应式

    这次给大家带来怎么实现Vue数据响应式,实现Vue数据响应式的注意事项有哪些,下面就是实战案例,一起来看一下. 前言 Vue的数据响应主要是依赖了Object.defineProperty(),那么整 ...

  9. 制定和实施网络安全事件响应计划(1)

    一.制定事件响应计划的前期准备工作<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office&qu ...

最新文章

  1. Waymo自动驾驶详解
  2. 土木工程计算机仿真学科未来前景,土木工程的发展现状与未来发展趋势
  3. 老司机 iOS 周报 #24 | 2018-06-25
  4. 异常处理:SEVERE: Unable to process Jar entry [......]for annotations java.io.EOFException
  5. python--html to pdf
  6. Android 返回桌面
  7. ListView条目中有CheckBox点击事件失效问题
  8. My安卓知识5--百度地图api的使用,周边信息检索
  9. C++Primer第5版学习笔记(三)
  10. python复制文件夹不阻塞_11.python并发入门(part14阻塞I/O与非阻塞I/O,以及引入I/O多路复用)...
  11. 2021牛客暑期多校训练营3,签到题BEFJ
  12. iOS开发-- 使用TestFlight进行Beta测试
  13. slickedit使用
  14. Access的BOM开发(2)基础信息
  15. Arduino 交通灯实验
  16. java取当前北京时间_用Java取指定时区的时间 北京时间,纽约时间,班加罗尔时间...
  17. 变形金刚11280超清迅雷下载
  18. 如何评价光伏电站的运维能力
  19. 容器CICD实践:基于Helm实现应用交付自动回滚
  20. MATLAB算法实战应用案例精讲-【人工智能】枝晶生长模型(附matlab代码实现)

热门文章

  1. 茅台酒养成记:质量是对消费者最长久而衷心的承诺
  2. 微信圈子|微卡技术栈
  3. 最出色的员工往往最先离职,却不是因为钱,到底为什么?
  4. 青岛方言发音对照表(内附英文释义)
  5. Typescript 2+迷你书 :从入门到不放弃
  6. python培训广告语
  7. 视频断点续传+java视频
  8. STM32,点亮RGB灯,指南者,新手
  9. 第3章(3.11~3.16节)模型细节/Kaggle实战【深度学习基础】--动手学深度学习【Tensorflow2.0版本】
  10. 第二讲:线性表示及坐标