Computer Networking A Top-Down Approach 总结

引言

在这篇文章中,我主要对 Computer Networking: A Top-Down Approach (6th Edition) 一书进行总结。

Computer Networks and the Internet

对于第一次接触网络的人来说,会感觉到第一章的内容又杂又多,而且对于某些概念来说,很不容易理解,幸亏作者将文章写得通俗易懂,并搭配很多有助于理解的插图,以及例举出生动的现实生活中的例子去理解一些复杂的概念,相信我你一定会爱上这本书的!

这章中以一个 overview 的形式去讲述网络,这就会导致涉及很多的概念,比如构成网络所需要的软件与硬件,网络的发展历史等,但是概念并不会很深入,因此这章我并不准备去用文字做总结,而是用 Xmind 画了一张图,把这章的重要概念穿插起来,具体的细节我会标明页数参考书即可。

Computer Networking A Top-Down Approach 总结

由于上面只是我导出的图片,大家会看不到要相应的备注,为了方便大家阅读并根据自己的意愿去修改总结的内容,我已经把源文件上传到 github,以供大家参考。

思维导图源文件

Application Layer

Overview

这章是关于整体的概述,大致内容如下图:

Application Layer

思维导图源文件

网络中的电子邮件

在这个小节中,作者主要介绍了 Email 中应用广泛的几个协议。下图中是 Internet 邮件系统的大致结构。

网络中的电子邮件

下图是 Alice 和 Bob 之间是如何发送邮件的,它主要分为以下6个步骤:

  1. Alice 运行起它的 user agent,比如 Foxmail,然后用它写一封邮件给 Bob,完成以后命令 Foxmail 把这封邮件发送出去
  2. Alice 的 Foxmail 把邮件发送到她的 Mail server,放到消息队列中
  3. Alice 的 mail server 中运行的 SMTP 客户端看到消息队列中的消息后,它打开了一个 TCP connection 到 Bob 的 mail server 中运行的 SMTP 服务端
  4. 在一些 initial SMTP handshaking 后,SMTP 客户端发送 Alice 的信息到 TCP connection 中
  5. 当 Bob 的 mail server 中运行的 SMTP 服务端收到消息后,把消息放入到 Bob 的 mailbox 中
  6. 等 Bob 方便的时候,他用自己 PC 上的 user agent 从 server 中读取邮件

网络中的电子邮件

我们可以看到上面的过程中涉及到几个重要的协议,它们分别是 SMTP,POP3,IMAP,和HTTP. 我觉得协议本身并没有什么可说的,大家可以去官方看看这些协议都是怎么定义的,都实现什么样的命令,如何交互的。下面我主要来说一下几个协议之间的区别,这样大家在选择的时候就不会感到困惑。

对于 SMTP 来说,有一点大家应该知道:在用 SMTP 发送邮件的时候,正常情况它不会用中间的 mail server,即使发送者和接收者2人的 mail server 分别在世界的2端。如果 Bob 的 mail server 挂掉了,信息依然会保存在 Alice 的 server 中,隔一段时间过后,它会继续尝试发送给 Bob 的 server,消息始终不会放到一些中间的 mail server 上。

下面我介绍一下 POP3 和 IMAP 协议之间的区别。当一个基于 POP3 协议的 TCP connection 建立之后,POP3 会进行以下个阶段:

  1. authorization : user agent 发送用户名和密码到 server 进行授权
  2. transaction : user agent 获取邮件信息
  3. update: 这个阶段发生在客户端发布 quit 命令之后

在第2个阶段中,POP3 有2个模式可以配置,它们分别是 download and keep 和 download and delete. 如果你只用一个客户端去读取邮件,那么你可以选择 download and delete 模式,它在 update 阶段的时候会把你的邮件从 mail server 中删除,这样你可以节省 mail server 的空间。但是,如果你有1多个客户端想读取邮件,你就应该用 download and keep 模式,它在 update 阶段过后并不会从 mail server 上删除掉你的邮件。

想像一下这样一种场景,你从 mail server 上获取到相应的邮件信息之后,你会归纳整理一下,比如创建几个文件夹,把不同的要邮件放到不同的文件夹中,如果你用 POP3 协议,你的做法会只保留在你当前的机器上,如你换个机器从 mail server 上下载邮件,你的先前的归类并不会在这个机器上看到,而 IMAP 协议就可以解决这个问题。

IMAP server 不仅可以维护用户的状态信息,同时它也可以允许 user agent 获取信息的部分组件,比如它可以只获取信息的信息头。

DNS — The Internet’s Directory Service

我们可以通过多种方式来识别 Internet 中的某个 host,比如可以通过 hostnameIP addresses,对于人类来说 hostname 要相对容易记住,比如:www.baidu.com,但是相信大家很难记住 IP addresses 吧,比如:111.13.100.91,而对于 routers 来说,它更容易处理 fixed-length, hierarchically structured IP addresses,因此我们需要一个服务可以做到 hostnames 与 IP addresses 之间的转换,DNS(domain name system) 的主要任务就是这个。

DNS 是一个应用层的协议,它用 UDP 作为传输层协议,端口号为 53,一些其它的应用层协议(比如:HTTP,SMTP和FTP)通常利用 DNS 去转换用户指定的 hostnames 到对应的 IP addresses. 下面我举个例子,比如一个用户在浏览器中输入 www.baidu.com 之后,按下 enter ,使用 DNS 的过程如下:

  1. The same user machine runs the client side of the DNS application
  2. The browser extracts the hostname, www.baidu.com, from the URL and passes the hostname to the client side of the DNS application
  3. The DNS client sends a query containing the hostname to a DNS server.
  4. The DNS client eventually receives a reply, which includes the IP address for the hostname
  5. Once the browser receives the IP address from DNS, it can initiate a TCP connection to the HTTP server process located at port 80 at that IP address

下图是互联网上的 DNS servers 的分层结构图:

DNS servers 的分层结构图

除了上图中这3种 DNS server 外,还有一种重要的 DNS server,它就是 local DNS server,严格来讲,它并不属于上图中的任一层级,但是它是整个 DNS 架构中很重要的一部分。一个 host 的 local DNS server 通常都会离它“很近”,比如:For an institutional ISP, the local DNS server may be on the same LAN as the host; for a residential ISP, it is typically separated from the host by no more than a few routers. When a host makes a DNS query, the query is sent to the local DNS server, which acts a proxy, forwarding the query into the DNS server hierarchy.

下图是书中给出的一个例子,cis.poly.edu 这个 host 想要知道 gaia.cs.umass.edu 的 IP 地址,因此它需要寻求 DNS servers 的帮忙,整个过程的步骤如下:

  1. host 首先发送一个 DNS query message 到它的 local DNS server
  2. local DNS server 把这个 query message 转发给 root DNS server
  3. root DNS server 根据 edu 这个后缀,返回一系列负责 edu 的 TLD servers 的 IP 地址给 local DNS server
  4. local DNS server 再次发送 query message 到其中的1个 IP 地址
  5. TLD server 根据 umass.edu 返回一个 authoritative DNS server 的 IP 地址
  6. local DNS server 再次发送 query message 到这个 authoritative DNS server 去获取它想要的 IP 地址
  7. 最后,authoritative DNS server 返回给它 gaia.cs.umass.edu 的 IP 地址

下图中的整个过程既用了 iterative queries,也用了 recursive queries.

DNS servers 之间的交互

如果整个 DNS 系统能根据相应的主机域名查到对应的 IP 地址,那么在它的数据库中一定会有相应的 DNS 记录,即 resource records (RRs),它提供了 hostname-to-IP address 的映射。每个 RRs 是一个包含下面4个 field 的 four-tuple:

(Name, Value, Type, TTL)

  • 如果 Type=A,那么 Name 是一个 hostname,Value 是一个 IP address for the hostname
  • 如果 Type=NS,那么 Name 是一个 domain(比如:baidu.com),Value 是一个 authoritative DNS server 的 hostname(比如:dns.baidu.com),这个 server 知道如何获取 IP addresses for hosts in the domain
  • 如果 Type=CNAME,那么 Name 是一个 alias hostname,Value 是一个 canonical hostname
  • 如果 Type=MX,那么 Name 是一个 alias hostname,Value 是一个 mail server 的 canonical hostname

TTL is the time to live of the resource record; it determines when a resource should be removed from a cache.

下面我来举个例子,来打通整个上面的知识点。假设我在万网买了个域名,diaosi.me,在某个服务器提供商买了个虚拟主机,这个提供商通常给你一个难记的域名(比如:relay1.west-coast.enter-prise.com),让你去做 CNAME 解析,那么这个比较恶心的要域名叫做 canonical hostname,而 diaosi.me 就叫做 alias hostname,那么大家仔细想一下,为什么是 CNAME 解析呢?如果商家要给你1个 IP 地址,让你去做 A 解析不行吗?假设出于什么原因,你当前的主机必须要换个 IP 地址,如果你整个主机上的所有客户全是 A 解析,那么你必须通知他们要重新进行解析,而如果是 CNAME 的解析,你完全不需要通知你的客户们,你只需要把 relay1.west-coast.enter-prise.com 重新用新的 IP 地址进行 A 解析就可以了。

经过我一番苦心经营,我的网站(diao.me)为我挣了一大笔钱,现在我要做更大的生意,我想建一个 authoritative DNS server(假设 IP 地址为:212.212.212.1,主机名为:dns.tuhao.com),然后让其他人在我这里买域名,干掉万网,哈哈。假设,现在有一个土豪在我这买个域名(tuhao.me),在其它地方买了个独立的服务器(假设 IP 地址为:131.278.234.23)。接下来,我需要让我的 TLD 插入2条记录到他们的 DNS server 中,它们分别是:

(tuhao.me, dns.tuhao.com, NS)
(dns.tuhao.com, 212.212.212.1, A)

而这个土豪要做的就是在我的 authoritative DNS server 上插入下面这条记录:

(tuhao.me, 131.278.234.23, A)

这样,当有人访问 tuhao.me 时,通过上图中的那些 DNS query 过程,就可以顺利地找到相应的服务器了,随着我的客户越来越多,我就变得越来越有名了,哈哈。

DNS query 和 reply messages 它们具有相同的格式,书中140页详细介绍了每1个字节所表达的含义,我们可以用 nslookup 程序很容易地发送 query messages 到 DNS server,大家可以动手尝试一下。

Peer-to-Peer 应用

Web, e-mail, 和 DNS 所有这些应用都是基于 client-server 架构的,在这个章节中作者主要介绍了 P2P 架构在 file distribution 中的应用,不同于 CS 架构,在 P2P file distribution 的过程中,每个 peer 可以把它自己收到的文件的任一部分传递给其它的 peers,从而它在这个文件和分发过程中起到了辅助 server 的作用。下面举个具体的例子看看 P2P 架构相比于 CS 架构在 file distribution 应用中有什么优势。

Peer-to-Peer 应用

从上图中我们可以看到总共有 N 个 peer 想要下载1个 F bits 的文件,第 i 个 peer 的 access link 上载速度为 ui ,下载速度为 di ,server 的 access link 上载速度为 us ,我们同时也假设所有的瓶颈都在 access link,并且 server 和 client 完全不参与任何其它的网络应用中,现在让我们分别计算一下各个架构的 distribution time(the time it takes to get a copy of the file to all N peers).

对于 client-server 架构来说,由于没有任何的 peers 来辅助 server 分发文件,所以我们有如下2个事实:

  • The server must transmit one copy of the file to each of the N peers. Thus the server must transmit NF bits. Since the server’s upload rate is us , the time to distribute the file must be at least NFus
  • Let dmin
  • 17
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
出版者的话 作译者简介 译者序 前言 第1章 计算机网络和因特网 1.1/什么是因特网/1 1.1.1/具体构成描述/1 1.1.2/服务描述/4 1.1.3/什么是协议/5 1.2/网络边缘/6 1.2.1/客户机和服务器程序/7 1.2.2/接入网/8 1.2.3/物理媒体/13 1.3/网络核心/15 1.3.1/电路交换和分组交换/15 1.3.2/分组是怎样通过分组交换网形成其通路的/20 1.3.3/ISP和因特网主干/21 1.4/分组交换网中的时延、丢包和吞吐量/22 1.4.1/分组交换网中的时延概述/23 1.4.2/排队时延和丢包/25 1.4.3/端到端时延/26 1.4.4/计算机网络中的吞吐量/28 1.5/协议层次和它们的服务模型/30 1.5.1/分层的体系结构/30 1.5.2/报文、报文段、数据报和帧/33 1.6/攻击威胁下的网络/35 1.7/计算机网络和因特网的历史/38 1.7.1/分组交换的发展:1961~1972/38 1.7.2/专用网络和网络互联:1972~1980/39 1.7.3/网络的激增:1980~1990/40 1.7.4/因特网爆炸:20世纪90年代/41 1.7.5/最新发展/42 1.8/小结/42 本书路线图/43 课后习题和问题/44 复习题/44 习题/45 讨论题/49 Ethereal实验/49 人物专访/50 第2章 应用层 2.1/应用层协议原理/52 2.1.1/网络应用程序体系结构/53 2.1.2/进程通信/55 2.1.3/可供应用程序使用的运输服务/56 2.1.4/因特网提供的运输服务/57 2.1.5/应用层协议/60 2.1.6/本书涉及的网络应用/61 2.2/Web应用和HTTP协议/61 2.2.1/HTTP概况/62 2.2.2/非持久连接和持久连接/63 2.2.3/HTTP报文格式/65 2.2.4/用户与服务器的交互:cookie/68 2.2.5/Web缓存/70 2.2.6/条件GET方法/72 2.3/文件传输协议:FTP/73 2.4/因特网中的电子邮件/74 2.4.1/SMTP/76 2.4.2/与HTTP的对比/78 2.4.3/邮件报文格式和MIME/79 2.4.4/邮件访问协议/81 2.5/DNS:因特网的目录服务/84 2.5.1/DNS提供的服务/85 2.5.2/DNS工作机理概述/86 2.5.3/DNS记录和报文/90 2.6/P2P应用/94 2.6.1/P2P文件分发/94 2.6.2/在P2P区域中搜索信息/98 2.6.3/案例学习:Skype的P2P因特网电话/102 2.7/TCP套接字编程/103 2.7.1/TCP套接字编程/104 2.7.2/一个Java客户机/服务器应用程序例子/105 2.8/UDP套接字编程/109 2.9/小结/114 课后习题和问题/115 复习题/115 习题/116 讨论题/120 套接字编程作业/121 Ethereal实验/122 人物专访/122 第3章 运输层 3.1/概述和运输层服务/124 3.1.1/运输层和网络层的关系/125 3.1.2/因特网运输层概述/126 3.2/多路复用与多路分解/127 3.3/无连接运输:UDP/133 3.3.1/UDP报文段结构/135 3.3.2/UDP检验和/135 3.4/可靠数据传输的原理/136 3.4.1/构造可靠数据传输协议/137 3.4.2/流水线可靠数据传输协议/144 3.4.3/回退N步/147 3.4.4/选择重传/149 3.5/面向连接的运输:TCP/154 3.5.1/TCP连接/154 3.5.2/TCP报文段结构/156 3.5.3/往返时延的估计与超时/160 3.5.4/可靠数据传输/162 3.5.5/流量控制/166 3.5.6/TCP连接管理/168 3.6/拥塞控制原理/173 3.6.1/拥塞原因与开销/173 3.6.2/拥塞控制方法/177 3.6.3/网络辅助的拥塞控制例子:ATMABR拥塞控制/178 3.7/TCP拥塞控制/180 3.8/小结/187 课后习题和问题/189 复习题/189 习题/190 讨论题/195 编程作业/196 Ethereal实验:探究TCP/196 Ethereal实验:探究UDP/196 人物专访/196 第4章 网络层 4.1/概述/199 4.1.1/转发和选路/200 4.1.2/网络服务模型/202 4.2/虚电路和数据报网络/203 4.2.1/虚电路网络/204 4.2.2/数据报网络/206 4.2.3/虚电路和数据报网络的由来/208 4.3/路由器工作原理/208 4.3.1/输入端口/210 4.3.2/交换结构/211 4.3.3/输出端口/212 4.3.4/何时出现排队/213 4.4/网际协议:因特网中的转发和编址/215 4.4.1/数据报格式/216 4.4.2/IPv4编址/220 4.4.3/ICMP:互联网控制报文协议/230 4.4.4/IPv6/232 4.4.5/IP安全性概述/236 4.5/选路算法/237 4.5.1/链路状态选路算法/239 4.5.2/距离向量选路算法/242 4.5.3/层次选路/248 4.6/因特网中的选路/250 4.6.1/因特网中自治系统内部选路:RIP/251 4.6.2/因特网中AS内部选路:OSPF/253 4.6.3/自治系统间的选路:BGP/255 4.7/广播和多播选路/260 4.7.1/广播选路算法/260 4.7.2/多播/264 4.8/小结/269 课后习题和问题/270 复习题/270 习题/271 讨论题/277 编程作业/278 Ethereal实验/278 人物专访/279 第5章 链路层和局域网 5.1/链路层:概述和服务/281 5.1.1/链路层提供的服务/281 5.1.2/链路层在何处实现/283 5.2/差错检测和纠错技术/284 5.2.1/奇偶校验/285 5.2.2/检验和方法/287 5.2.3/循环冗余检测/287 5.3/多路访问协议/288 5.3.1/信道划分协议/290 5.3.2/随机接入协议/292 5.3.3/轮流协议/297 5.3.4/局域网/297 5.4/链路层编址/298 5.4.1/MAC地址/298 5.4.2/地址解析协议/300 5.5/以太网/303 5.5.1/以太网帧结构/304 5.5.2/CSMA/CD:以太网的多路访问协议/307 5.5.3/以太网技术/309 5.6/链路层交换机/310 5.6.1/交换机转发和过滤/311 5.6.2/自学习/312 5.6.3/链路层交换机的性质/313 5.6.4/交换机和路由器的比较/314 5.7/PPP:点对点协议/315 5.8/链路虚拟化:网络作为链路层/318 5.8.1/异步传输方式/318 5.8.2/多协议标签交换/322 5.9/小结/324 课后习题和问题/325 复习题/325 习题/325 讨论题/329 Ethereal实验/329 人物专访/329 第6章 无线网络和移动网络 6.1/概述/332 6.2/无线链路和网络特征/334 6.3/WiFi:802.11无线LAN/339 6.3.1/802.11体系结构/339 6.3.2/802.11MAC协议/342 6.3.3/IEEE802.11帧/345 6.3.4/在相同的IP子网中的移动性/348 6.3.5/802.11中的高级特色/348 6.3.6/802.11以外的标准:蓝牙和WiMAX/349 6.4/蜂窝因特网接入/352 6.4.1/蜂窝网体系结构概述/353 6.4.2/蜂窝网标准和技术:简要回顾/354 6.5/移动管理:原理/356 6.5.1/寻址/358 6.5.2/选路到移动节点/359 6.6/移动IP/363 6.7/蜂窝网中的移动性管理/366 6.7.1/对移动用户呼叫的选路/367 6.7.2/GSM中的切换/368 6.8/无线和移动性:对高层协议的影响/370 6.9/小结/372 课后习题和问题/372 复习题/372 习题/373 讨论题/375 Ethereal实验/375 人物专访/376 第7章 多媒体网络 7.1/多媒体网络应用/378 7.1.1/多媒体应用的例子/378 7.1.2/当今因特网上的多媒体障碍/380 7.1.3/因特网应该如何演化才能更好地支持多媒体/381 7.1.4/音频和视频压缩/382 7.2/流式存储音频和视频/384 7.2.1/通过Web服务器访问音频和视频/385 7.2.2/从流式服务器向助手应用程序发送多媒体/386 7.2.3/实时流协议/388 7.3/充分利用尽力而为服务/390 7.3.1/尽力而为服务的限制/390 7.3.2/在接收方消除音频的时延抖动/392 7.3.3/从丢包中恢复/394 7.3.4/在今天的因特网中分发多媒体:内容分发网络/397 7.3.5/规划尽力而为网络以提供服务质量/399 7.4/实时交互应用的协议/400 7.4.1/RTP/400 7.4.2/RTP控制协议/403 7.4.3/SIP/405 7.4.4//H.323/409 7.5/提供多个等级的服务/410 7.5.1/启发研究的场景/411 7.5.2/调度和监管机制/414 7.5.3/区分服务/419 7.6/提供服务质量保证/423 7.6.1/一个有启发的例子/423 7.6.2/资源预约、呼叫准入、呼叫建立/424 7.6.3/在因特网中确保QoS:Intserv和RSVP/425 7.7/小结/427 课后习题和问题/428 复习题/428 习题/429 讨论题/433 编程作业/433 人物专访/434 第8章 计算机网络中的安全 8.1/什么是网络安全/436 8.2/密码学的原则/438 8.2.1/对称密钥密码学/440 8.2.2/公开密钥加密/443 8.3/报文完整性/447 8.3.1/密码散列函数/447 8.3.2/报文鉴别码/449 8.3.3/数字签名/450 8.4/鉴别/455 8.4.1/鉴别协议ap1.0/455 8.4.2/鉴别协议ap2.0/456 8.4.3/鉴别协议ap3.0/456 8.4.4/鉴别协议ap3.1/457 8.4.5/鉴别协议ap4.0/457 8.4.6/鉴别协议ap5.0/458 8.5/电子邮件安全/460 8.5.1/安全的电子邮件/461 8.5.2/PGP/464 8.6/使TCP连接安全:SSL/465 8.6.1/宏观描述/466 8.6.2/更完整的描述/468 8.7/网络层安全性:IPsec/469 8.7.1/鉴别首部协议/469 8.7.2/ESP协议/470 8.7.3/SA和密钥管理/471 8.8/使无线LAN安全/471 8.8.1/有线等效保密/472 8.8.2/IEEE802.11i/473 8.9/运行安全性:防火墙和入侵检测系统/475 8.9.1/防火墙/475 8.9.2/入侵检测系统/479 8.10/小结/482 课后习题和问题/482 复习题/482 习题/483 讨论题/485 Ethereal实验/485 人物专访/485 第9章 网络管理 9.1/什么是网络管理/487 9.2/网络管理的基础设施/490 9.3/因特网标准管理框架/493 9.3.1/管理信息结构:SMI/494 9.3.2/管理信息库:MIB/496 9.3.3/SNMP协议运行和传输映射/498 9.3.4/安全性和管理/500 9.4/ASN.1/502 9.5/小结/506 课后习题和问题/506 复习题/506 习题/507 讨论题/507 人物专访/507 参考文献/509

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值