您当前的位置:首页 > 知乎文章

网盾极风云BGP:什么是HTTP协议

时间:2022-02-28 10:48:04  知乎原文链接  作者:网盾科技

一般人们都能说出“HTTP是一种超文本传输协议(Hypertext Transfer Protocol)”,但是这样还远远不够:假如你面试大公司的interview,往往面试官们会希望听到更深沉的涵义。

那么,怎样详细地描述超文本传输协议?

可以把它的名字分割成三部分:超文本(Hypertext)、传输(Transfer)、协议(Protocol)

它们的关系就像图片上显示的那样超文本<传输<协议。

小科普:

超文本

早期的信息只能保存在本地,无法与其他电脑进行交互。人们保存的信息通常以文本(一种能够被计算机解析的二进制数据包)形式存在。随着互联网技术的发展,在两台电脑之间能够进行数据传输后,人们不再满足于只能在两台电脑之间传输字符,还希望能够传输视频、音频、图片甚至点击某段文字就可以进行跳转。这时候文本传输的定义就被扩大到了超文本(Hypertext)。

传输

上面提到两台计算机之间能够形成互联关系进行通信,存储的超文本会被解析为二进制数据包,由传输载体(例如电话线、光缆、同轴电缆)负责把二进制数据包由计算机终端传输到另一个终端的过程,这个过程就被称为传输(transfer)。通常我们把传输数据包的计算机终端称为请求方,把接收二进制数据包的计算机终端称为应答方。

请求方和应答方的身份可以互换。

协议

在日常生活中常常能听到各种对话里包含了这个名词,比如“这份协议签订好了没有”、“你和她之间的协议谈得怎样”等等。可以说,协议在我们的概念里等同于一纸合同、一份约定。

一句话:

网络协议就是网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议。

没有网络协议的互联网是混乱的,就和人类社会一样。人不能想怎么样就怎么样,你的行为约束是受到法律的约束的;那么互联网中的端系统也不能自己想发什么发什么,也是需要受到通信协议约束的。

那么到底什么是 HTTP?

百度百科的名词解释如下:HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议。

一句话概括,就是一个在计算机里专门在两点之间传输各种文字、图片、视频、音频等超文本数据的规范。

class="ztext-empty-paragraph">

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

TCP/IP

TCP/IP 协议你一定听过,TCP/IP 我们一般称之为协议簇,什么意思呢?就是 TCP/IP 协议簇中不仅仅只有 TCP 协议和 IP 协议,它是一系列网络通信协议的统称。而其中最核心的两个协议就是 TCP / IP 协议,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。

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

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

URI / URL

你可以通过输入wangdun.cn来访问网盾的官网,那么这个地址有什么规定吗?我怎么输都可以?qqq.wangdun.com 是不是也行?

答案是:当然不行,你输入的地址格式必须要满足URI的规范。

URI(Uniform Resource Identifier)全称为统一资源标识符,使用它就能够把网站绑定的IP标记成互联网上能够通过这个域名访问的唯一页面。

URL(Uniform Resource Locator)翻译过来是统一资源定位符,也就是我们俗称的网址,它实际上是URI的一个子集。

URI 不仅包括URL,还包括URN(统一资源名称)。

DNS

你有没有想过为什么你可以通过键入wangdun.cn就能够获取网盾官网界面?我们上面说到,计算机网络中的每个端系统都有一个IP地址存在,而把IP地址转换为便于人类记忆的协议就是DNS协议。

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

网络模型

网络由各种各样的协议组成,这些协议以分层的方式组织协议,每个协议属于一层模型,每一层中的协议称为协议栈(protocol stack)。因特网的协议栈由五个部分组成:应用层、网络层、链路层、物理层和传输层。

应用层

应用层是网络应用程序和网络协议存放的分层,因特网的应用层包括许多协议,例如电子邮件传送协议SMTP、域名解析DNS协议、端系统文件上传协议FTP以及本文关键词HTTP。应用层协议分布在多个端系统上,一个端系统应用程序与另一个端系统应用程序交换信息分组,我们把位于应用层的信息分组称为报文。

因特网的运输层在应用程序断点之间传送应用程序报文,在这一层主要有两种传输协议UDP与TCP,利用二者中的任何一个都能够传输报文,但这两种协议有着显而易见的不同。

UDP协议一般发送数据包之后,不会像一位可靠的客服那样耐心等待并确认报文是否到达。它不具有可靠性,也缺乏流量控制,当然也不会有拥塞控制。

TCP协议在发送数据包之后,能够控制并确认报文是否到达,会提供拥塞机制来控制网络传输。因此,当网络拥塞时,TCP会放缓其传输速度。

网络层

网络层主要负责将数据报从一台主机转移至另一台主机。网络层一个非常重要的协议叫作IP协议,所有具备网络层的因特网组件都必须执行IP协议。IP协议是一种网际协议,除了IP协议之外,网络层还包括一些其他路由选择协议跟网际协议,一般把网络层就喊作IP层。

数据链路层

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

物理层

物理层是将帧中的一个个bite从一个节点运输到另一个节点,物理层的协议仍然使用链路层协议,实际的物理传输介质和这些协议有关,例如以太网有很多物理层协议:同轴电缆、双绞铜线与光纤等等。

传输层

传输层在应用程序断点之间传送应用程序报文,在这一层主要有两种传输协议UDP与TCP,利用二者中的任何一个都能够传输报文,但这两种协议有着显而易见的不同。

UDP协议一般发送数据包之后,不会像一位可靠的客服那样耐心等待并确认报文是否到达。它不具有可靠性,也缺乏流量控制,当然也不会有拥塞控制。

TCP协议在发送数据包之后,能够控制并确认报文是否到达,会提供拥塞机制来控制网络传输。因此,当网络拥塞时,TCP会放缓其传输速度。

OSI模型

上述协议模型并不是唯一的协议栈。

ISO提出,应该在模型基础上增加会话层和表示层,按照七层建立模型。会话层提供数据交换的定界跟同步功能,包括恢复方案跟建立检查点;表示层是压缩数据与加密数据,数据描述似的应用程序不用担心计算机内部存储格式的问题。

HTTP请求响应过程

假设我们访问的URL地址为wangdun.cn/gfserver/wuh,输入网址回车后,浏览器会进行如下操作:

  1. wangdun.cn所在的地址,然后HTTP客户端进程在80端口发起一个到服务器wangdun.cn的TCP连接(80端口是HTTP的默认端口)。在服务器进程中有一个套接字与其相连。
  2. wangdun.cn/gfserver/wuh,然后把检索出来的对象进行封装,封装到HTTP响应报文,并通过套接字向客户进行发送。

上述过程描述的是一种简单的请求-响应全过程,真实的请求-响应情况可能要比上面描述的过程复杂很多。

上一篇      下一篇    删除文章    编辑文章
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门