计算机网络学习笔记

互联网

互联网也不是生下来就是互联网的,它也曾经历了两台电脑一台网线的婴幼儿时期。但是电脑与电脑之间网线的连接实在是太费网线了,于是就产生了路由器。将电脑连接到路由器上,然后再将路由器连接在一起,这张网络就可以延伸到更远的地方了。

现在的互联网差不多就是这样的概念,在这张网上,存在着大大小小的端点,大的端点可能来自ISP(Internet service provider),小的端点可能来自于个人,总之,这张网络上的每个端点都通过实体或虚体的联系连接在一起。

那么随之产生的一个问题是,当我的电脑想和王嘉尔的电脑进行通信的时候,我应该怎么在这张网络上找到它呢?

跟现实生活中的行政区划类似,互联网上的端点也划分了不同的区域,并且每一台主机都被配备了一个地址,这个地址就是IP地址。IP地址是一个32位或128位(IPv6)的二进制地址,作为一个正常人,我不可能记住王嘉尔的电脑的IP地址,所以我需要一个能让我记住的对人类友好的名字。

域名系统

域名应运而生。假设我知道王嘉尔的电脑的名字叫Jackson,那我可以告诉我的电脑去找Jackson,让我的电脑去把这个名字翻译成计算机可以听懂的名字。但是这个时候我的电脑可能会陷入混乱,因为这个网络上有无数个脑叫做Jackson。所以我不但要告诉我的电脑,我要寻找的对象的名字,还要告诉它,这个对象位于哪个区域。

域名通常分为三到四级,以`www.google.com`为例,从后到前分别为顶级域名、二级域名和三级域名。顶级域名(Top level domain)是不能乱取的,常见的顶级域名通常有com(公司企业),cn(中国),us(美国)等等。二级域名的取名规则遵循其顶级域名的通用规定,比如在中国,常见的二级域名有gov(政府),ah(安徽)等等。像二级域名听顶级域名的一样,三级域名听二级的,四级域名听三级的。

那说回`www.google.com`,这个域名告诉我们的信息有:hello,我是来自com国google市的www,不要去隔壁的baidu市找我哦~你可能还是能找到一个叫www的脑,但是它傻呆呆的。

那么在这个寻找的过程中,我们势必需要一个像索引一样的东西,能够帮助我们将计算机可以看懂的域名与人类可以看懂的域名对应起来。这个索引一样的存在就是域名系统(Domain name system),它是一个分布式的数据库系统。现在让我们想象一下,如果我们有一本电话簿,把世界上所有的人和他们的电话号码都存下来了。那么,这本电话簿一定是非常厚重的,每当我们需要在里面找到一个人的时候,可想而知会占用我们很长的时间。

那么,如果我们把这本电话簿按照国家分开呢?当我们需要寻找王嘉尔的时候,我们只需要先找到香港的那本电话簿,然后再在里面找到王嘉尔就可以了。这节省了我们检索其他200多个国家和地区的人的时间和精力。那如果继续往下细分呢?我们可以分到沙田区,或者更小,这就是分布式数据库系统的概念。

域名系统用的也是这套思路。记录域名与IP地址对应关系的计算机我们叫它域名服务器,域名服务器一共有四层:根域名服务器(root name server)顶级域名服务器(TLD server)权限域名服务器(authoritative name server)本地域名服务器(Local name server)。根域名服务器记录了所有顶级域名服务器的域名和IP地址,顶级域名服务器记录了在该顶级域名下的所有权限域名服务器的域名和IP地址,以此类推。

然后我们来具像化一下这个寻找的过程。我在我的浏览器里输入`www.google.com`,假设我的主机不认识这个域名,那么它会问一个认识的本地域名服务器小L,小L会从这里开始接过查询的任务。假设小L并没有见过这个域名,那么它会去问根域名服务器小A。假设小A也不认识这个域名,那么小A会根据这个域名的顶级域名去找到对应的顶级域名服务器小B,并且告诉小L下一步应该去问小B。假设小B还是不认识这个域名,那么小B又会指向下一层的小C,直到小L找到认识这个域名的服务器为止。当某个服务器找到了这个域名对应的IP地址,它会把这条信息返回给本地服务器,然后由本地服务器返回给我的主机。也就是说,当我的主机发送了找寻某个IP地址的请求之后,本地域名服务器要么会返回一个IP地址,要么会报错,表示无法查询到所需的IP地址。

为了减少这种查询的发生,我们的主机和域名服务器都有缓存的存在。主机会在一定时间内存储常用的域名和IP地址的对应关系,域名服务器则是会保存最近查询的条目,以减少对根域名服务器的访问。

互联网 vs 因特网 vs 万维网

计算机网络把数台计算机连在一起,而互联网把数个计算机网络连在一起。那么互联网(internet),因特网(Internet)和万维网(Web)有什么区别呢?互联网可以理解为任意的连在一起的计算机网络,而因特网特指世界上最大的、以TCP/IP协议连在一起的互联网。而万维网是因特网提供的一项服务,是 文件、图片、多媒体和其他资源的集合,资源通过超链接互相连接形成网络,并使用统一资源标志符(URL)标识。因此,我们可以知道互联网到因特网到万维网是一个从上到下的包含关系。

统一资源定位符

万维网包含了难以计数的资源,当我们应该怎么管理这些资源呢?类似于IP地址,每一个万维网资源在万维网上都有一个唯一的标识,这个标识就是统一资源定位符Url(Uniform resource locator)。Url通常由协议、主机、端口和路径组成。


Url的结构

- 协议:常见的协议有http、https和ftp等

- 主机:资源所在的主机在互联网上的域名

- 端口:默认端口是80

- 路径:在主机下的路径

Url不区分大小写。

超文本传送协议

超文本传送协议(HyperText Transfer Protocol)是万维网在应用层的协议,两个不同系统上的终端通过交换HTTP信息进行通话。HTTP协议是应用在应用层的协议,运输层的协议是TCP协议。我们可以把万维网上需要通信的两台电脑想象成两个房间,房间A需要从房间B里拿到一幅画,那么房间A就是我们的客户端,房间B就是我们的服务端,而画就是我们需要的资源

现在想象我们的两个房间有一扇门,经过这扇门的信息都需要符合特定的模式,这样才能保证另一扇门接收到这个信息的时候可以理解这条信息,这种特定的模式就是HTTP,而这两扇门就是API(Application Programming Interface)。API是应用层和运输层的临界点,就像出了房间A的门之后,在到达房间B的门之前,我们可以认为这条信息在路上。

那么我们从房间B拿一副画到房间A里需要经历什么呢?首先,我们需要先去确定一下往房间B的路是通畅的,所以我们会先发送一个小的TCP片段去房间B,当房间B收到这个片段的时候,它同样会发送一个小的TCP片段回房间A。这是著名的三次握手(three-way handshake)中的前两次。在这两次握手之后,传输层的TCP连接就建立起来了,此时,房间A会把真正需要的请求发给房间B,房间B收到之后,也会将真正的资源回传给房间A,这时候就完成了一次完整的HTTP请求。

在HTTP/1.1之前,TCP连接通常在完成了请求之后就被关闭了,1.1之后,TCP连接会被保存一段时间,在这段时间内,所有从该客户端发出,去往该服务器的请求都会用到这条TCP连接,因此省去了前两次的握手。不止如此,当使用流水线(with pipelining)的时候,我们从房间A发送请求时可以连续发送,而房间B则可以连续接收,并且依次处理。

HTTP报文

如上文所说的,我们一共有两种HTTP报文,从房间A发出的请求报文,和从房间B发出的响应报文。

HTTP报文

通过报文的第一行我们可以判断这个报文是请求报文还是响应报文:请求报文会以方法开头,常见的方法有GET,POST,PUT,DELETE等;而响应报文的第一行会包含一个状态码,代表了该请求的状态。

请求报文示例
响应报文示例

与请求报文不同的是,响应报文的实体主体通常不会为空,而是会将请求的资源作为主题返回。

万维网高速缓存

万维网高速缓存(Web cache),或者叫代理服务器(proxy server)是一种网络实体。代理服务器把最近的一些请求和响应赞存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再去访问该资源。代理服务器可在客户端或服务端工作,也可以在中间系统上工作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第6章 应用层 6.1 域名系统DNS 6.1.1 域名系统概述 许多应用层软件经常直接使用域名系统DNS ,但计...
    辘轳鹿鹿阅读 776评论 0 0
  • 摘要 网络应用概述 域名系统(DNS) 文件传输协议(FTP) 电子邮件 万维网(WWW) 一、网络应用概述 网络...
    badlogic阅读 775评论 0 1
  • 1、域名系统 DNS(Domai Name System)是因特网使用的命名系统,用于把便于人们使用的机器名字转换...
    冰河winner阅读 762评论 0 1
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,286评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,122评论 0 4