最近在复习关于HTTP的相关知识,后面会连续写一写相关的基础知识点,也当做是重新学习和巩固,万丈高楼平地起,加油!

什么是HTTP?
首先你听的最多的应该就是HTTP是一种超文本传输协议****(Hypertext Transfer Protocol), 这你
一定能说出来,但是这样还不够,假如你是大厂面试官,这不可能是他想要的最终结果,我们在面试的时候往往把自己知道的尽可能多的说出来,才有和面试官谈价钱的资本。那么什么是超文本传输协议?
超文本传输协议可以进行文字分割:超文本(Hypertext)传输(Transfer)、 协议 (Protocol)
它们之间的关系如下
认识HTTP

什么是超文本

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

什么是传输

那么我们.上面说到,两台计算机之间会形成互联关系进行通信,我们存储的超文本会被解析成为二进制
数据包,由传输载体(例如同轴电缆,电话线,光缆)负责把二进制数据包由计算机终端传输到另一个
终端的过程(对终端的详细解释可以参考你说你懂互联网,那这些你知道么?这篇文章)称为传输(transfer)。
通常我们把传输数据包的一方称为请求方,把接到二进制数据包的一方称为应答方。请求方和应答方可以进行互换,请求方也可以作为应答方接受数据,应答方也可以作为请求方请们之间的关
系如下

认识HTTP
如图所示,A和B是两个不同的端系统,它们之间可以作为信息交换的载体存在,刚开始的时候是A作为请求方请求与B交换信息,B作为响应的一方提供信息;随着时间的推移,B也可以作为请求请
求A交换信息,那么A也可以作为响应方响应B请求的信息。

什么是协议?

协议这个名词不仅局限于互联网范畴,也体现在日常生活中,比如情侣双方约定好在哪个地点吃饭,这个约定也是一种协议,比如你应聘成功了,企业会和你签订劳动合同,这种双方的雇也是- -种
协议。注意自己一个人对自己的约定不能成为协议,协议的前提条件必须是多人约定。

那么网络协议是什么呢?

网络协议就是网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守- -定 的规则,这些规则就称为网络议。
没有网络协议的互联网是混乱的,就和人类社会一样,人不能想怎么样就怎么样,你的行为约束是受到法律的约束的;那么互联网中的端系统也不能自己想发什么发什么,也是需要受到通信协议约束的。

那么我们就可以总结一下,什么是HTTP?可以用下面这个经典的总结回答一下: HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范

应用层

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

运输层.

因特网的运输层在应用程序断点之间传送应用程序报文,在这一层主要有两种传输协议TCP 和UDP,利用这两者中的任何一个都能够传输报文,不过这两种协议有巨大的不同。
TCP向它的应用程序提供了面向连接的服务,它能够控制并确报文是否到达,并提供了拥塞机制来控制网络传输,因此当网络拥塞时,会抑制其传输速率。UDP协议向它的应用程序提供了无连接服务。它不具备可靠性的特征,没有流量控制,也没有拥塞控
制。我们把运输层的分组称为报文段( segment)

网络层

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

链路层

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

五层网络协议的示意图如下|

认识HTTP

OSI模型

我们上面讨论的计算网络协议模型不是唯一的 协议栈,ISO (国际标准化组织)提出来计算机网络应该按照7层来组织,那么7层网络协议栈与5层的区别在哪里?

认识HTTP
从图中可以一眼看出,OSI 要比,上面的网络模型多了表示层和会话层,其他层基本-致。表示层主
要包括数据压缩和数据加密以及数据描述,数据描述使得应用程序不必担心计算机内部存储格式的问
题,而会话层提供了数据交换的定界和同步功能,包括建立检查点和恢复方案。

与HTTP有关的协议

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

TCP/IP

TCP/IP 协议你一定听过,TCP/IP我们一般称之为协议簇,什么意思呢?就是TCP/IP协议簇中不仅仅只有TCP协议和IP协议,它是- -系列网络通信协议的统称。而其中最核心的两个协议就是TCP
IP协议,其他的还有UDP、ICMP、ARP等等,共同构成了一-个复杂但有层次的协议栈。TCP协议的全称TransmissionControl Protocol的缩写, 意思是传输控制协议,HTTP 使用TCP作为通信协议,这是因为TCP是一种可靠的协议,而可靠能保证数据不丢失。

IP协议的全称是Internet Protocol的缩写,它主要解决的是通信双方寻址的问题。IP协议使用IP地址来标识互联网, 上的每一台计算机,可以把IP地址想象成为你手机的电话号码,你要与他人通话必须先要知道他人的手机号码,计算机网络中信息交换必须先要知道对方的IP地址。(关于 TCP和IP更多的讨论我们会在后面详解)

DNS

你有没有想过为什么你可以通过键入www. google. com就能够取你想要的网站?我们上面说到,计算机网络中的每个端系统都有-个IP地址存在,而把IP地址转换为便于人类记忆的协议DNS协议。
DNS的全称是域名系统(Domain Name System, 缩写: DNS), 它作为将域名和 IP地址相互映射的
一个分布式数据库,能够使人更方便地访问互联网。

URI / URL

我们上面提到,你可以通过输入www. google . com地址来访问谷歌的官网,那么这个地址有什么规定
吗?我怎么输都可以? AAA.BBB.CCC是不是也行?当然不是的,你输入的地址格式必须要满足URI的规范。
URI的全称是(Uniform Resource ldentifier) ,中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源。
URL的全称是(Uniform Resource Locator),中文名称是统-资源定位符,也就是我们俗称的网址,它实际上是URI的一个子集。
URI不仅包括URL,还包括URN (统一资源名称) ,它们之间的关系如下
认识HTTP

重点

HTTP请求响应过程
你是不是很好奇,当你在浏览器中输入网址后,到底发生了什么事情?你想要的内容是如何展现出来
的?让我们通过一个例子来探讨一-下,我们假设访问的URL地址为
http://www. someSchool . edu/ someDepartment/home . index,当我们输入网址并点击回车时,浏
览器内部会进行如下操作
●DNS服务器会首先进行域名的映射,找到访问www . someSchool. edu所在的地址,然后HTTP客
户端进程在80端口发起一个到服务器
www. someSchool.edu的TCP连接(80 端口是HTTP
的默认端口)。在客户和服务器进程中都会有一个套接字与其相连。
●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客户端会把对应的资源通过显示器呈现给用户。

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

来源参考:《计算机网络》
《图解HTTP》

相关文章:

  • 2021-09-14
  • 2021-06-29
  • 2021-07-26
  • 2022-12-23
  • 2022-12-23
  • 2021-10-08
  • 2021-07-01
  • 2022-12-23
猜你喜欢
  • 2021-11-16
  • 2021-11-07
  • 2021-06-23
  • 2021-05-20
  • 2021-10-09
  • 2022-02-17
  • 2021-10-23
相关资源
相似解决方案