阅读 371

从源头上解决HTTP面试问题 - 重学计算机网络系列(1)

前言

  • 这是关于计算机网络的一系列专题,后续会不断更新
  • 因为是前端开发,所以我的重心是放在应用层,重中之重是应用层下面的HTTP协议
  • 学习资料来源于 《计算机网络》(第七版) 和《图解HTTP》。
  • 本篇主要分享互联网概述,计算机网络体系结构等知识。

互连网与互联网的区别

互连网

  • 与网络相连的计算机称为主机。智能手机也可以称为主机。
  • 结点可以是计算机,集成器,交换机,路由器等
  • 计算机网络(简称网络)由若干结点和连接这些结点的链路组成。
  • 互连网:网络之间可以通过路由器互连起来,这就构成一个覆盖范围更大的计算机网络。
  • 互连网是“网络的网络”,泛指由多个计算机网络互连而成的计算机网络。网络把许多计算机连接在一起。而互连网把许多网络通过路由器连接在一起。

互联网

  • 也叫做因特网,不过现在不用了。
  • 互联网(专有名词):指当前全球最大的,开放的,由众多网络相互连接而成的特定互连网
  • 这也是为什么1994年中国接入互联网叫做接入,而不是其他动词。
  • 采用TCP/IP协议族作为通信的规则,前身是ARPANET

总结

  • 计算机,交换机,路由器等 = 结点
  • 结点 + 链路 = 网络
  • 网络 + 网络 = 互连网
  • 互联网 = 全球最大的互连网

互联网发展的几个阶段

  • 第一阶段:1969美国国防部创建的第一个分组交换网ARPANET。(并不是一个互连的网络)所有要连接在ARPANET上的主机都直接与最近的结点交换机相连。
  • 第二阶段:20世纪70年代中期,开始研究多种网络互连的技术,导致互连网络的出现。互联网的雏形。
  • 第三阶段:1983年,TCP/IP协议成为ARPANET上的标准协议,使所有使用TCP/IP协议的计算机都能利用互联网相互通信。互联网诞生。
  • 第四阶段:1985年。建成了三级结构的互联网NSFNET。分为主干网,地区网,校园网。基本覆盖了全美国主要的大学和研究所。
  • 第五阶段:世界上许多公司纷纷接入到互联网,网络通信急剧增大,满足不了需求。美国政府决定交给私人公司来经营,开始收费。于是,逐渐形成多层次ISP结构的互联网。1993年开始,三级结构的互联网NSFNET逐渐被若干个商用的互联网主干网替代。

ISP(互联网服务提供商)

  • 中国电信,中国联通,中国移动等公司是中国最有名的ISP。
  • ISP可以从互联网管理机构申请到很多IP地址。主机必须有IP地址才能上网,同时还有通信线路,路由器等联网设备。缴纳费用就能能获取所需IP地址的使用权。
  • 所谓上网就是通过ISP获得的IP地址接入互联网。
  • ISP分为主干ISP,地区ISP,本地ISP。
    • 主干ISP由专门的公司创建和维持,服务面积最大(一般能覆盖国家范围)
    • 地区ISP是一些较小的ISP。
    • 本地ISP给用户提供直接的服务。本地ISP可以是一个仅仅提供互联网服务的公司,也可以是一个拥有网络并向自己雇员提供服务的企业,或者是大学。
  • 主机A和主机B通信的过程。主机A --> 本地ISP --> 地区ISP --> 主干ISP --> 地区ISP --> 本地ISP --> 主机B
  • 上面这种通信要经过层层阻拦,是否能绕过主干ISP,地区ISP直接和地区ISP直接通信呢?可以的。互联网交换点IXP的主要作用是允许两个网络直接相连并交换分组,而不需要再通过第三个网络来转发分组。 主机A --> 本地ISP --> 地区ISP --> 地区ISP --> 本地ISP --> 主机B

互联网的组成

  • 从工作方式可以分为两大块:边缘部分 + 核心部分。
    • 边缘部分:由所有连接在互联网上的主机组成,用户直接使用。
    • 核心部分:由大量网络和连接这些网络的路由器组成。
  • 边缘部分的通信方式
    • 客户-服务器方式(C/S)。客户是服务请求方,服务器是服务提供方。
    • 对等连接方式(P2P)。两台主机通信并不区分哪一个是服务请求方哪一个是提供方。只要两台主机都运行了对等连接软件就可以通信,相互下载对方硬盘里面的文档。
  • 核心部分
    • 路由器。它是一种专用计算机。路由器是实现分组交换的关键构件,其任务是转发收到的分组。

何为分组交换

  • 电路交换: 建立连接(占用通信资源) -> 通话(一直占用通信资源) -> 释放连接(归还通信资源)。在通话的全部时间里,通话的两个用户始终占用端到端的通信资源。
  • 分组交换:采用存储转发技术。要发送整块数据,这块数据被称为一个报文。在发送之前,把报文分成一个个更小的等长数据段,并在头部加上包头。
  • (首部 + 数据 = 分组)X (很多个) = 报文
  • 路由器的作用就是用来转发这些分组的。路由器收到一个分组,先暂存一下,检查头部,查找转发表,交给下一个路由器,一步一步以存储转发的方式给目的主机。分组交换在传输数据之前不必占用一条端到端的通信资源,并且省去了建立连接和释放连接的开销,传输数据效率更高

为了理解分组,我还是更愿意称之为小报文,更方便记忆。因为称之为分组我感觉太拗口了。

  • 总结
    • 电路交换。整个报文连续从源点到终点,好像在一个管道中传送。适合大量数据传输。
    • 报文交换。整个报文先到达相邻结点,全部储存下来查找转发表,转发到下一个结点。
    • 分组交换。单个分组(整个报文的一小部分)传送给相邻结点,存储下来后查找转发表,转发到下一个结点。(原理采用报文交换)灵活。

七层协议和四层协议的由来

先看一个很简单的例子:连接在网络上的两台计算机要互相传送文件。 要实现这种功能需要做什么呢?

  • 两者之间要有传输数据的通路。
  • 要保证通道的正确发送和接收。
  • 要告诉网络如何识别接收数据的计算机。
  • 必须检查对方是否开机,并且联网了。
  • 发起通信的计算机的软件必须搞清楚在对方的软件是否做好接收文件和存储文件的准备。
  • 若计算机文件格式不兼容,则至少其中一台计算机应完成格式转换功能。
  • 对于出现的各种差错意外,如数据传输错误,重复,丢失,是否有可靠的措施保障对方能接受到正确的文件。

以上在种种,表明相互通信的两个计算机系统必须高度协调工作才行,为了协调,提出了分层的方法。用分层把问题分而治之。

协议与划分层次

在计算机网络要做到有条不紊的交换数据,就必须遵守实现约好的规则。这些为进行网络中的数据交换而建立的规则,标准,约定称之为网络协议,也可简称为协议。协议有三要素。

  • 语法。数据与控制信息的结构或格式。
  • 语义。即需要发出何种控制信息,完成何种动作以及做出何种响应。
  • 同步。事件实现顺序的详细说明。

我们想连接在网络上的另外一台计算机做点什么事,都需要有协议。

立贤不立长

  • 1974年,美国IBM公司宣布了系统网络体系结构SNA。这个网络标准是按照分层的方法制定的。不久其他一些公司也相继推出自己公司的体系结构。
  • 不同的网络体系结构出现后,使得同一个公司生产的各种设备都能很容易地互连成网。但由于网络体系结构的不同,不同公司的设备很难互相连通
  • 为了使得不同网络体系结构的用户迫切要求能够互相交换信息,国际化标准组织ISO在1977成立专门机构研究该问题。他们提出一个试图使各种计算机在世界范围内互连成网的标准框架,即OSI/RM,简称OSI。只要遵循OSI标准,一个系统就可以和世界上任何地方的,也遵守这一标准的其他任何系统进行通信。
  • 1983年,OSI提出了七层协议。
  • 但是,到了90年代初期,尽管整套的OSI国际标准已经制定出来,但基于TCP/IP的四层协议的互联网已抢先在全球相当大的范围成功运行。OSI失败了。
  • 得到最广泛应用的不是法律上的标准OSI,而是非国际标准TCP/IP。TCP/IP被当做事实的国际标准
  • 现在人们提到的TCP/IP并不一定单指TCP和IP两个具体的协议,而是往往表示互联网所使用的整个TCP/IP协议族
  • 网络协议的一个重要的特定是必须把所有不利的条件事先估计到,不能假设一切都是正常的和非常理想的。

四层协议

  • 应用层。 是体系结构的最高层。任务是通过应用进程间的交互来完成特定网络应用。应用层定义的是应用进程间通信和交互的规则。在互联网的应用层协议很多,如 域名系统NDS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议。我们把应用层交互的数据单元称为报文。
  • 运输层。 负责两台主机中进程之间的通信提供通用的数据传输服务。主要使用两种协议。
    • 传输控制协议TCP。数据传输的单位是报文段。
    • 用户数据报协议UDP。提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性),数据传输的单位是用户数据报。
  • 网络层。 负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据封装成分组(小报文)或包进行传送。 网络层的另外一个任务就是要选择合适的路由,使源主机运输层所传下来的分组(小报文)能够通过路由器找到目的的主机。IP协议
  • 数据链路层(链路层)。 两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要专门的链路层协议。 在两个相邻结点之间传送数据时,数据链路层把网络层交下来的IP数据报组装成帧,在两个相邻结点的链路上传送帧,每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制) 在接收数据时,接收到一个帧,抽出数据部分,提交给网络层。

捋一捋两个主机之间通信的全过程

主机A向主机B传输数据。

  1. 主机A把数据给应用层,应用层加上必要的控制信息。
  2. 应用层的数据再给运输层,运输层再加上控制信息。
  3. 运输层的数据给网络层,网络层再加上控制信息。
  4. 网络层的数据给链路层,链路层给数据加上首部和尾部。
  5. 链路层再把数据给物理层,物理层传输单位是比特,不加控制信息。
  6. 接着数据到达路由器,路由器分析控制信息。
  7. 路由器的分组(小报文)传给物理层。
  8. 物理层再传给链路层,链路层分析控制信息并剥去,找到上层的网络层。
  9. 网络层接收到数据,分析控制信息并剥去,找到上层的运输层。
  10. 运输层接收到信息,分析并剥去控制信息,找到应用层。
  11. 应用层剥去控制信息,把数据给主机B。

用一个简单的例子描述:
一封信从最高层向下传,每经过一层就包上一个新的信封,写上必要的地址信息。到达最底层时,向上传,每经过一层就剥去一层信封,到达最高层的时候,去取出发信人的信交给收信人就可以了。

下一篇文章讲应用层的各种协议,HTTP除外,HTTP是重点应该单拎起来讲。 如果对你有帮助,麻烦点赞加关注哦!

关注下面的标签,发现更多相似文章
评论