最近很多小伙伴都在问计算机网络自顶向下方法。第6版和初学笔记这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展2018版网络工程师_第1章计算机网络概论(学习笔记)、《计算机网络·自
最近很多小伙伴都在问计算机网络自顶向下方法。第 6 版和初学笔记这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展2018版 网络工程师_第1章 计算机网络概论(学习笔记)、《计算机网络·自顶向下方法》第七版 第一章 课后习题与问题 答案、《计算机网络·自顶向下方法》第七版 第三章 课后习题与问题 答案、《计算机网络自顶向下方法 - 第七版》第二章总结等相关知识,下面开始了哦!
本文目录一览:- 计算机网络自顶向下方法。第 6 版(初学笔记)(计算机网络自顶向下方法第七版笔记)
- 2018版 网络工程师_第1章 计算机网络概论(学习笔记)
- 《计算机网络·自顶向下方法》第七版 第一章 课后习题与问题 答案
- 《计算机网络·自顶向下方法》第七版 第三章 课后习题与问题 答案
- 《计算机网络自顶向下方法 - 第七版》第二章总结
计算机网络自顶向下方法。第 6 版(初学笔记)(计算机网络自顶向下方法第七版笔记)
简介
网络结构
基本组成
基本结构
处于网络终端的通信设备实体成为主机或端系统,端系统的作用主要是收集、创造或处理数据,故端系统又可以分为客户机(client)和服务器(server),从一个端系统到达另一个端系统需要通过路径,路径将端系统通过通信链路(线缆或电波)或分组交换机(常见的分组交换机有路由器(网络核心)和链路层交换机(接入网))连接在一起。各大小型端系统通过 ISP(Internet Services Provider)维护的路径连接在一起。
在端系统内部存在多个分布式应用程序来处理特定信息,Application Programming Interface 规定了应用程序与另一个端系统的应用程序交换数据的规则。端系统通过接入网与边缘路由器连接,边缘路由器是端系统在路径上的第一台路由器。常见的接入网通信链路有电话线、电缆线、光纤、无线电。
接入网
DSL 接入:终端通过 DSL 调制解调器发送模拟信号并经过家庭的分频器,发送出的各种频率的模拟信号通过电话公司的复用器 DSLAM 转换为数字信号,数字信号通过路由器与局外网络通信。接收信号时路由器将数字信号转发至复用器,复用器将数字信号转为模拟信号,模拟信号通过分频器和 DSL 传输至目的终端。网络信号和电话信号以不同的频率传输,通过分频器和复用器合并或分离。
电缆接入:终端通过电缆调制解调器将发送的数字信号转为模拟信号,模拟信号通过同轴电缆传输至该地区枢纽的光纤结点,进而通过光缆传输至地区的电缆调制解调器端接系统(CMTS,Cable Modem Termination System,CMTS 和路由器组成了电缆头端),CMTS 将模拟信号转为数字信号并通过路由器与局外网络通信。混合的电缆光缆称为混合光纤同轴(HFC,Hybrid Fiber Coax),终端处的电缆调制解调器将 HFC 网络分为上行和下行两个信道,下行信道通常比上行信道的速率更高,电缆接入的特征是共享广播媒体,即人多时速率下降人少时速率较高。
光纤接入:主动光纤网络(AON,Active Optical Network,从本地中心局一根光纤到单户)和被动光纤网络(PON,Passive Optical Network,中心局光纤通过光纤分配器将到多户)。端系统经过路由器并通过光纤网络端接器(ONT,Optical Network Termination)将数字信号转为光模拟信号,光纤分配器将模拟信号传输至中心局的光纤线路端接器(OLT,Optical Line Termination),OLT 再将模拟信号转为数字信号。
以太网接入:终端通过双绞铜线与一台以太网交换机直接相连
局域网接入:通过局域网将用户与边缘路由器相连
WIFI 无线接入:WLAN
广域无线接入:基于基站的无线技术
物理媒体
物理媒体分为导引数据流向的导引型媒体和扩散传播的非导引型媒体。
双绞铜线。同轴电缆。光纤。陆地无线电通道。卫星无线电通道。
ISP
单一全球承载 ISP 接入所有区域 ISP。多个全球承载 ISP 接入各个区域 ISP。区域内划分各个区域 ISP 逐层接入。区域内或区域间依靠存在点、多宿、对等、IXP 组成更为复杂的结构。
存在点 POP 是供应商网络中相同层级位置下的多个路由器组成的群组,通过租用 POP 能进行高速链接。多宿是接入多个供应商或区域 ISP 以增强容灾能力。对等是位于相同层级的 ISP 可以直接互相传输流量而不需要流向上级 ISP,对等的顶层 ISP 不互相结算。IXP 可以接入多个区域 ISP 并让它们共同对等。内容提供商网络是一个大型的局域网络结构,通过全球性的服务器布局和直接接入底层 ISP 并接入多个 IXP 可以减少向顶层供应商支付的网络费用。
数据交换
分组交换
报文的源端系统将报文划分并为每段加上首部字节以组成较小的数据块,称之为分组 packet。分组从路由器一端传入,再由该路由器转发至另一条通信链路,转发的路径在不同的网络间有区别。通常,路由器会根据路由选择协议自动的配置一个转发表,保存可用的相邻路由器。分组交换提供了更好的宽带共享并且简单有效实现成本低,但不适合实时服务。
分组交换机在链路的输入端采用存储转发传输机制,即交换机在向输出链路传输分组的第一个比特前必须接收完整的分组。接收分组完毕后,分组交换机首先需要检查分组头部来决定从哪个输出端口转发,此种时延称为处理时延 nodal processing delay。分组传入交换机后,如果某一输出链路正在传输其他分组,则后到达的分组需要在交换机中排队,这种时延称为排队时延 queue delay。分组交换机对每条相连的链路提供输出缓存 output buffer,如果输出缓存占满则会丢弃将到达的分组或排队中的分组,此种现象称为分组丢失 pocket lost 或丢包。分组的第一个比特传入链路到最后一个比特传入链路需要的时间称为传输时延 transmission delay。分组的第一个比特从传入链路到到达下一个分组交换机需要的时间称为传播时延 propagation delay。
高速路由器的处理时延通常是微秒或更低的数量级,排队时延取决于拥塞程度但实际上通常是毫秒或微妙量级,输出时延取决于分组长度和链路传输速率通常是毫秒微秒量级对于低俗链路时延较大,传播时延取决于物理媒体和链路长度通常是毫秒量级有几微妙到几百毫秒。传输时延是源端开始发送数据到传输媒体,传输媒体接收完毕所需要的时间,通常是分组交换机推出分组所需要的时间,它是分组长度和链路传输速率的函数。传播时延是一台分组交换机传播到另一台分组交换机所需要的时间,它是两台路由器之间距离的函数。以上四种时延总和为结点总时延 total nodal delay。某些特定的服务协议还会设定其他时延。
假定分组长度为 L,分组传入交换机的平均速率为 a,分组交换机的链路传输速率为 R,则比率 La/R 称为流量强度,如果流量强度大于 1 则排队时延将无穷大,因此流量工程需要控制流量强度。对于小于 1 的流量强度,如果 (L/R) n 秒同时到达 n 个分组,则第 n 个分组具有 (n-1) L/R 的排队时延。
对于一个分组数量为 P 的报文,如果分组比特大小为 L 传输速率为 R 链路数量 N,则传输总时延包括最后一个分组前其他分组的总第一次传输时延和最后一个分组端到端的总传输时延(忽略传播时延),即传输时延为:(P-1+N)(L/R)
电路交换
端系统通话前和期间,会建立和维护一个保持连接状态的连接,并为该连接预留缓存或恒定的传输速率,这种稳定的连接称为电路。电路交换实时且速率稳定但是具有静默期占用空闲网络。
一个通信链路可能有多个电路,划分电路的方式称为复用,主要有频分复用(FDM,Frequency Division Multiplexing)和时分复用(TDM,Time Division Multiplexing)。电话网络中的频段通常为 4kHz,这种频段称为带宽。时分复用中,链路首先分段为不同的帧,帧再分为不同时隙,每个帧中的特定时隙组成一个电路,该电路的传输速率等于帧速率乘以时隙内比特数。
对于电路交换,首先需要电路创建时间,其次需要传输时间,最后考虑传播时间,通常,传输速率等于文件大小除以该电路的传输速率。
吞吐量
端到端传输一定比特大小的文件花去一定时间,其平均传输速率为平均吞吐量 average throughput,瞬时速率是瞬时吞吐量。路径的吞吐量取决于瓶颈链路,对于具有多个连接的共享链路,单个连接的吞吐量平均计算,因此共享链路中的干扰流量会影响吞吐量。
分层模型
由于报文不能直接在物理媒体中传输,因此需要划分多种功能的传输媒介,再根据相同的功能来划分则可以将整个网络分层,根据传输单元数据类型的不同可以选择在不同层次上使用网络传输信息。对于分层的结构,每层具有不同的任务或功能,上层直接使用下层服务,在不影响预定的输入输出规则情况下改变层次内的实现规则不会影响系统内其他组件。但是,实际的分层实现中高层可能冗余底层功能,某层功能需要依靠其它层的特征数据来实现。
协议
协议是一套标准,网络协议是网络中数据交换的规则、标准或约定,定义和控制了两个或多个通信实体之间交换数据的报文语法、语义和事件顺序。
分层的协议称为协议 栈,因特网根据应用层、传输层、网络层、数据链路层、物理层划分,OSI 七层参考模型还将应用层再分为应用层、表示层、会话层。
OSI 参考模型
应用层 Application 负责应用程序之间交换数据的形式,提供为应用软件而设的界面、以设置与另一应用软件之间的通信。位于应用层的数据类型(分组)称为报文 message。
DHCP DNS FTP Gopher HTTP HTTPS IMAP4 IRC NNTP XMPP POP3 SIP SMTP SNMP · SSH · TELNET · RPC · RTCP · RTP ·RTSP · SDP · SOAP · GTP · STUN · NTP · SSDP
表示层 Presentation 把数据转换为能与接收者的系统格式兼容并适合传输的格式,即使应用程序能解释交换数据的含义,包括数据压缩、数据加密、数据描述等。
会话层 Session 负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接,提供了数据交换定界和同步功能,包括建立检查点和恢复方案。
传输层 Transport 提供应用程序端点之间的数据交换,具体实现为把传输表头 (TH) 加至数据以形成数据包,传输表头包含了所使用的协议等发送信息。传输层分组称为报文段 segment 。
TCP · UDP · TLS · DCCP · SCTP RSVP · PPTP
网络层 Network 提供了主机间的数据交换,决定了数据的路径选择和转寄,它网络表头 (NH) 加至数据包,以形成分组,网络表头包含了网络数据。网络层的数据分组称为数据报 datagram 或包 Packet
IP (IPv4 · IPv6) · ICMP · ICMPv6 · IGMP · IS-IS · IPsec · BGP · RIP · OSPF
数据链路层 Data link 负责网络层路由间结点的数据交换,负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成了帧。数据链表头 (DLH) 是包含了物理地址和错误侦测及改错的方法。数据链表尾 (DLT) 是一串指示数据包末端的字符串。路径中可能存在多个不同物理媒体的链路,即一个数据报可能经过不同链路层协议的不同服务。链路层分组称为帧 Frame。
Wi-Fi (IEEE 802.11)・WiMAX (IEEE 802.16)・ARP・RARP・ATM・DTM・令牌环・以太网・FDDI・帧中继・GPRS・EVDO・HSPA・HDLC・PPP・L2TP・ISDN・STP
物理层 Physical 负责结点之间的数据交换,将帧中的比特传送至下一个结点,它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等。数据单元 Bit 位
以太网・调制解调器・电力线通信 (PLC)・SONET/SDH・G.709・光导纤维・同轴电缆・双绞线
封装
报文传出后,逐层传输时被转换并附加该层特征信息(首部字段),由于应用层位于顶部是被附加首部字段的,物理层位于底部用于处理数据传输的最基本单元所以没有附加信息。除去首部字段的剩余数据称为有效载荷字段,存储了上一层的分组。运输层首部字段包含了允许接收端运输层向特定应用程序传输的特定信息。网络层首部字段包含了源和端系统的地址等信息。链路层除了首部字段还有尾部字段,详见数据链路层。
其他模型
TCP/IP 四层模型将应用层、表示层、会话层统一为一个应用层,数据链路层和物理层统一为网络接口层,但实际上为定义网络接口层的协议,综合来看,主流的网络分为五层。
应用层
协议原理
简介
应用层的服务目标是应用程序,用于定义应用间交换数据的规则,而不需要再额外关注端系统间通信线路的实现。对于多个交换数据的端系统,存在目前主流的两种交互数据的结构,CS 架构采用一对多的形式,客户机之间不会直接通信,为了加强 CS 架构的服务能力会建造配置大量主机的数据中心。P2P 架构采用多对多的形式,对服务器没有或依赖较小,客户机亦是服务器,统称为对等方,数据直接在用户主机间传输,这种结构不但不需要庞大的服务器设备和带宽,还能通过数据分发增强整个系统的服务能力。
应用程序通过进程通信,进程通过套接字(socket)软件接口向网络发送和接收报文,套接字是应用层和传输层之间的接口,也称为 API。主机间寻址通过 IP 实现,进程间寻址通过端口号实现。应用程序必须指定一种具体的传输层协议来作为数据交换的形式载体以及某些特定的服务匹配应用要求,常用的服务有数据可靠性、吞吐量要求、传输定时、安全。
服务
TCP 是面向连接的可靠数据传输服务,通常用于电子邮件、文件传输、远程主机访问、Web 文档传输以及金融服务等数据交付要求较高的应用。UDP 不面向连接且不可靠,通常用于多媒体等容忍数据丢失的应用。
对于某些带宽敏感的应用,需要传输层能确保以指定的吞吐量传输,通常多媒体应用是带宽敏感的,而电子邮件、文件传输、Web 传送等弹性应用可以自适应当前吞吐量。
对于交互式实时应用如网络电话、虚拟环境、多方游戏等,需要确保源端应用注入套接字的比特到达终端套接字接收该比特的时间不能小于一定的数值以保证数据传输的有效性。
对于某些机密性服务,运输层加密发送进程的所有数据并在数据交付给接收进程前解密数据,此外,数据完整性校验和端口鉴别也属于安全服务。无论 TCP 还是 UDP,传输前后都没有加密处理,在应用层实现安全套接字 SSL,可以对 TCP 进行强化,提供加密、数据完整性、端口鉴别的服务。
TCP 可以提供可靠安全的数据传输,但 TCP 或 UDP 目前都没有设计提供带宽或定时的服务。
定义
实现一个应用层协议需要定义以下规则:交换的报文类型、报文类型的语法、字段的语义、发送和响应报文的规则。
最常见的网络应用服务有基于 HTTP 的 Web 服务、基于 FTP 的文件传输服务、基于 SMTP 的电子邮件服务、基于 DNS 的目录服务、P2P 共享服务等。
HTTP 协议
万维网是最为广泛的 Web,Web 的特点是能灵活的传输各种类型的文件。Web 的应用层协议是 HTTP 超文本传输协议,HTTP 定义了客户端和服务端交换的报文结构和交换报文的方式,Web 页面中的文件对象通过 URL 寻址,URL 通过两部分组成,服务器的主机名称和对象的路径名称。HTTP 使用 TCP 作为支撑协议,请求前需要建立连接,发送的数据能可靠的传输至终端,终端不保存请求的状态信息,所以 HTTP 属于无状态协议。
对于需要多次请求的应用,如果每个请求使用不同的 TCP 连接则称为非持续连接,如果使用同一个 TCP 连接则称为持续连接,持续连接默认提供,但可以配置使用非持续连接。非持续连接可以配置为串行还是并行,使用并行能减少响应时间。HTTP 请求前的连接建立过程为主机发送小 TCP 报文段到服务器询问,服务器再用小 TCP 报文段响应,主机再向服务器正式 HTTP 请求,服务器则正式响应。定义往返时间(RTT Round-Trip Time)包括处理时延、排队时延、传播时延,则单个 HTTP 请求包括两次 RRT 以及端到端的传输时间。可见,非持续连接不但加大了服务器负担还增加了交付延时。通常,HTTP 使用持续的连接并配置一个的超时间隔,如果时间内未访问则断开连接。
报文格式
请求报文的第一行为请求行,后继的行叫首部行,请求行包括三个字段:方法字段、URL 字段、HTTP 协议版本字段。请求行使用空行与后续的实体主体(entity body)分隔。常见的首部行有 Host 指明主机、Connection 要求请求后是否关闭连接、User-agent 指明客户浏览器类型、Accept-language 表示希望的响应语言版本。
响应报文的第一行是初始状态行,后续的是首部行,然后是实体主体,状态行包括三个字段:协议版本字段、状态码、状态信息。
方法 | 作用 |
---|---|
GET | 请求指定的页面信息,并返回实体主体 |
HEAD | 类似 get 响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)数据被包含在请求体中,可能导致建立或修改资源 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
DELETE | 请求服务器删除指定的页面 |
CONNECT | 预留给将连接改为管道的代理服务器 |
OPTIONS | 允许客户端查看服务器的性能 |
TRACE | 回显服务器收到的请求用于测试或诊断 |
PATCH | 应用于资源修改 |
统一资源标识符(Uniform Resource Identifiers, URI)用于标识资源,统一资源定位符(Uniform Resource Locator,URL)是常用的 URI。URL 协议语法为:protocol://authority :port path query fragment
交互管理
cookie 用于记录用户的访问状态,cookie 技术组件:响应报文的 cookie 首部行、请求报文的 cookie 首部行、用户端 cookie 管理、服务器数据库。首次请求响应返回 cookie 并存入服务器数据库,后续携带 cookie 的访问会查询数据库 cookie 并管理响应。
session 机制采用的是在服务器端保持状态的方案。由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以 session 机制可能需要借助于 cookie 机制来达到保存标识的目的。有时 Cookie 被人为的禁止,所以出现了其他机制以便在 Cookie 被禁止时仍然能够把 SessionID 传递回服务器。这种技术叫做 URL 重写,就是把 SessionID 直接附加在 URL 路径的后面,附加方式也有两种,一种是作为 URL 路径的附加信息,另一种是作为查询字符串附加在 URL 后面。
对 session 来说,除非程序通知服务器删除一个 session,否则服务器会一直保留。由于关闭浏览器不会导致 session 被删除,迫使服务器为 seesion 设置了一个失效时间,当距离客户端上一次使用 session 的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把 session 删除以节省存储空间。
缓存器
Web 缓存器是代表初始服务器来满足请求的网络实体,位于客户机和原始服务器之间,客户机的请求会在缓存器中缓存,后续访问直接返回,如果访问没有缓存则请求原始服务器。缓存器可以降低响应时间以及减少网络流量以增强应用性能。CDN 公司通过安装大量缓存器形成内容分发网络 CDN 使大量流量实现本地化。
缓存器向初始服务器请求缓存对象时,响应信息通常会包含 Last-modify 首部行,在后续的用户请求时,缓存器会通过 If-modify-since 首部行请求初始服务器来判断缓存对象是否为最新对象,如果是则初始服务器返回给缓存器的响应为 304 Not Modified 告诉缓存器可以将缓存的对象返回给用户。
FTP
FTP 使用并行的控制连接和数据连接传输文件,控制连接用于在主机间传输控制信息如用户标识、口令、目录文件操作命令等,数据连接用于文件的实际传送。FTP 是有状态的,服务器需要绑定用户账户和控制连接,需要追踪用户当前目录位置。
分离的控制信息称为带外传送如 FTP,控制信息与文件信息一起称为带内传送,如 HTTP。
电子邮件
DNS
域名系统(Domain Name System)用于域名和 IP 地址转换,组件为:DNS 分布式数据库、查询的应用层协议之上,端口号 53。
传输层
运输层在端系统中实现,为源终端系统上的进程提供逻辑通信,运输层将应用报文分隔为小块并分别加上运输存首部以生成运输层报文段 segment。运输层位于网络层之上,网络层提供主机间的逻辑通信,运输层的服务受网络层影响。网络层协议有 IP 网络协议,IP 的服务模型是尽力而为的交付,不保证服务完整性,即不可靠服务。
运输层的基本职责是将多路复用和多路分解,多路复用是指将源端上不同套接字的数据封装首部信息生成报文段并传递给网络层。多路分解是将封装的报文段交付给正确的套接字。
UDP 时轻量级传输协议,无连接没有握手过程、不保证数据可靠性、没有拥塞控制。UDP 报文通过携带目的 IP 和目的端口号的二元组标识,用于定向目的主机的目的端口。
TCP 面向连接且可靠的数据传输服务,面向连接用于传输前的准备、可靠意值能确保传输过程没有字节的丢失或冗余。TCP 的拥塞控制可以在网络拥塞时平等的抑制发送进程。不同于 UDP,TCP 通过源 IP、源端口、目的 IP、目的端口的四元组标识,不但定向了目的端口还标识了源端口。
网络层
网络层核心是路由选择和分组转发,路由选择用于在所有路由器中选择最佳路径,分组转发用于路径中的分组传输。
功能
转发
路由
链路层
2018版 网络工程师_第1章 计算机网络概论(学习笔记)
1.1 计算机网络的形成和发展
2. 现代计算机网络的发展
现代意义上的计算机网络是从1969年 美国国防部高级研究计划局(DAPPA)建成的APPAnet实验网开始的。
APPAnet 的主要特点如下:
(1)资源共享;
(2)分散控制;
(3)分组交换;
(4)采用专门的通信控制处理机;
(5)分层的网络协议。
这些特点被认为是现代计算机网络的一般特征。
3. 计算机网络标准化阶段
为了解决网络通信市场各厂商独立建立的自有标准,不利于发挥网络的通用特性,1977年,国际标准化组织(ISO)制定了 开放系统互连参考模型OSI/RM。使得互联的计算机系统之间得以遵循统一的网络互连标准,促进了网络技术的发展。
4. 微型机局域网的发展时间
1972年,Xerox公司发明了以太网,1980年2月,IEEE组织了一个802委员会,制定局域网标准。
5. 国际因特网的发展时期
1985年,美国国家科学基金会(National Science Foundation,NFS)利用APPAent协议建立了用于科学研究和教育的骨干网络NSFnet。后逐步发展成为今天的Internet网络。
1.2 计算机网络的分类和应用
1.2.1 计算机网络的分类
计算机网络 是指由通信线路互相连接的许多自主工作的计算机构成的集合体。
计算机网络的组成元素可以分为两大类,即网络节点和通信链路。 网络节点又分为端节点和转发节点。端节点指信源和信宿节点,例如用户主机和用户终端;转发节点指网络通信过程中控制和转发信息的节点,例如交换机、集线器等。通信链路是指传输信息的信通,可以是电缆、无线电线路、光纤缆线等。网络节点通过通信链路连接成的计算机网络如图1-1所示。
在图1-1中,虚线框外的部分称为资源子网。资源子网中包括拥有资源的用户主机和请求资源的用户终端,它们都是端节点。虚线框内的部分叫作通信子网,其任务是在端节点之间传送由信息组成的报文,主要由转发节点和通信链路组成。在广域网中通信的方式一般采用存储转发方式,而在局域网中一般采用广播通信方式。
通信子网中转发节点的互连模式叫作子网的拓扑结构。图1-2中列出了常用的几种拓扑线路构。在广域网中常见的互连拓扑是树型和不规划型,而在局域网中则常用星型、环型、总线型等。
可以按照不同的方法对计算机网络进行分类。1.按互连规模和通信方式,如要把网络分为局域网(LAN)、城域网(MAN)和广域网(WAN)。2.按使用方式可以分为校园网(Campus Network)和企业网(Enterprise Netwok)。3.按服务范围可以分为公用网与专用网,公用网为通信公司建立的网络,专用网是建立在公用网上的虚拟网络,仅限于一定范围的用户之间的通信。4.按照提供的服务可以分为通信网和信息网,通信网提供远程连网服务,提从互连服务的供应商叫作ISP(Internet Service Provider),信息网提供Web信息浏览和电子邮件传送等信息服务,提供网络信息服务的供应商叫作ICP(Internet Content Provider)。
1.4 计算机网络体系结构
计算机网络发展到今天,已演变成一种复杂而宠大的系统。为了方便实现复杂的系统功能通常的方法就是把系统组成分层的体系结构,即把很多相关的功能分解开发,逐个实现。把实现复杂的网络通信过程的各种功能划分成相应的层次结构,就是网络的分层体系结构。
1.4.2 开放系统互连参考模型的基本概念
OSI/RM 是一种分层的体系结构。从逻辑功能看,每一个开放系统都是由一些连续的子系统组成,这些子系统处于各个开放系统和分层交叉点上,一个层次由所有互连系统的同一行上的子系统组成。
为了叙述上的方便,任何层都可以称为(N)层,它的上下邻居层分别称为(N+1)层和(N-1)层,分层的基本想法是每一层都在它的下层提供的服务基础上提供更高级的增值服务,而最高层提供能运行分布式应用程序的服务。通过1-5 可以很容易看清实体、服务访问点之间的关系。
开放系统的每一个层次由一些实体组成,实体是软件元素或硬件元素的抽象,处于同一层中的实体叫对等实体,一个层次由多个实体组成。
(N)实体之间的合作关系由(N)协议来规范。(N)协议是公式和规则的集合,它精确地定义了(N)实体如何协同工作,利用(N-1)服务去完成(N)功能,以便向(N+1)实体提供服务。
(N+1)实体从(N)服务访问点(Service Access Point,SAP)获得(N)服务。(N)SAP表示(N)实体与(N+1)实体之间的逻辑接口。OSI/RM 用抽象的服务原语说明一个功能层提供的服务,这些服务原语采用了过程调用的形式。
OSI/RM 七层协议的主要功能
7)应用层,是OSI的最高层,直接为端用户提供服务。
6)表示层,表示层关心的是传输数据的表现方式、它的语法和语义。即数据编码、数据压缩和加密技术。
5)层说层,支持表示层之间的交互,提供会话服务 1. 会话管理 2. 会话服务。
4)传输层,可以提供无差错按顺序的端到端的连接,也可能提供不保证顺序的独立报文件传输,或多目标报文广播。传输层下面的功能协议都是通信子网中的协议。
3)网络层,解决的关键问题是路由选择,另外解决的问题是防止网络中出现局部的拥挤或阻塞。
2)数据链路层,建立数据链接,把数据封装成帧。分为两个子层:逻辑链路控制(logic link control,LLC)和介质链路访问控制(media access control,MAC)子层。
1)物理层,它负责管理计算机通信设备和网络设备之间的互通,在网络上传比特流数据。
1.5 几种商用网络的体系结构
1.5.1 SNA
1974年,IBM公司推出的网络体系结构,是以大型主机为中心的集中式网络。
1.5.2 X.25
X.25 协议如图 1-11,它是CCITT在1976年公布的公用数据网(Public Data Network,PDN)标准,经两次修订。X.25 包括了通信子网最下边的3个逻辑功能层,即物理局、链路层和网络层。最低层用X.21作为用户节点(DTE)和通信子网之间建立电气连接的对等协议。链路层协议使用HDLC的全双工异步平衡方式进行通信,管理分组序列的无差错传输。
1.5.3 Novell NetWare
NetWare是Novell公司的产品。
1.6 OSI 协议集
国际标准化组组织除定义OSI参考模型之外,还开发了7个功能层次的协议和服务标准,这些协议和服务统称为 OSI协议。OSI协议是一些已有协议和ISO新开发的协议的混合体,大部分物理层和数据链路层协议采用了现有的协议,而数据链路层以上的协议是 ISO 自行起草。
《计算机网络·自顶向下方法》第七版 第一章 课后习题与问题 答案
非官方答案,本人已尽最大努力,使结果正确,如有错误,请大佬指出
<br><br><br>
正文: ###1.1节 ####R1 在计算机网络中,主机就是端系统 举例:PC,手机,服务器,网络电视 WEB服务器是一种端系统 ####R2 A protocol is a rule which describes how an activity should be performed, especially in the field of diplomacy. In diplomatic services and governmental fields of endeavor protocols are often unwritten guidelines. Protocols specify the proper and generally accepted behavior in matters of state and diplomacy, such as showing appropriate respect to a head of state, ranking diplomats in chronological order of their accreditation at court, and so on. One definition is:
Protocol is commonly described as a set of international courtesy rules. These well-established and time-honored rules have made it easier for nations and people to live and work together. Part of protocol has always been the acknowledgment of the hierarchical standing of all present. Protocol rules are based on the principles of civility.
大体意思就是说,外交协议是指在外交事务中,一种非书面形式的,被各国认为是适当的并普遍接受的一种国际礼节规则,有助于各国人民和谐共处 ####R3 如果两个端系统发送和接受信号的标准不同,双方可能并不能正常通信。这样会导致网络中的各个端系统不能互联。 同理,如果是两个局域网中使用的标准不同,那么两个网络也可能不能正常通信。(事实上IP可能会屏蔽这种差异,目前还没学到这一块,今后会回来补充) 由此可见,协议规定的标准是互联网协议能够正常运作的保证。
###1.2节 ####R4 书中一共介绍了以下接入技术: 数字用户线(DSL)、电缆、光纤到户(FTTH)、拨号、卫星、以太网、WIFI、蜂窝移动网络 数字用户线(DSL)、电缆、光纤到户(FTTH)、拨号、卫星、以太网、WIFI为家庭接入 以太网、WIFI为企业接入 蜂窝移动网络为广域接入 ####R5 HFC 混合光纤同轴 在HFC中,用户间的传输速率是共享的。 下行信道中不会发生碰撞,因为只有电缆头端发出信号 但是上行信道中可能发生碰撞,需要一个分布式多路访问协议来协调传输和避免碰撞(P11) ####R6 懒得查 不得不说,我家WiFi确实不太行,英雄联盟100ms的延迟,只能下下棋了 这是我家WIFI的上网方式设置,找了半天这个管理页面也没给我什么有用的信息,也不敢乱点。。。 ####R7 这个题应该是超纲了,第一章没有详细介绍这一点 不过还是能找到一两句话回答这个问题: 基于IEEE 802.11技术的无线LAN接入,今天提供了高达100Mbps的共享传输速率 显而易见的是,不同的协议与技术提供的传输速率是不同的。 ####R8 以太网是一种局域网技术,既然如此,只要可以同于局域网的物理媒体应该都可以答上吧: 双绞铜线、同轴电缆、光纤、陆地无线电信道应该都可以,但是目前我还不知道他们具体应用在那些地方 但是可以肯定他们都存在于局域网中 百度百科:网线是连接局域网必不可少的。在局域网中常见的网线主要有双绞线、同轴电缆、光缆三种。 而使用WIFI的话,肯定会用到陆地无线电信道 ####R9 ●拨号调制解调器在书里应该没出现过,有兴趣的网友自己去查一下 ●HFC:DOCSIS2.0定义了42.8Mbps的下行速率和30.7Mbps的上行速率 ●DSL:[ITU 1999]定义了12Mbps的下行速率和1.8Mbps的上行速率 [ITU 2006]定义了55Mbps的下行速率和15Mbps的上行速率 ●FTTH:书上没写,我也就不采用网上的说法了,但是按照常识,FTTH一般比以上三者都要快
总结一下,不同的技术之间,有相对的快慢关系,但是具体来说,还是要看各个技术使用的协议版本,实际一点来说,你交给ISP的钱,也决定了你的网速。 还有一个问题就是传输速率是共享还有专用的,我认为并没有一项技术可以使传输速率完全专用,即使在用户端,相当一段物理距离的信道被用户单独占有,但是当分组发送到网络中心时,总要与他人共享信道。 ####R10 最为流行的当然是WIFI和蜂窝移动网络了。
name | WIFI | 蜂窝移动网络 |
---|---|---|
范围 | 局域网 | 广域网 |
速率 | 100Mbps | 20Gbps(5G) |
物理媒体 | 陆地无线电信道 | 陆地无线电信道 |
价格 | 较低 | 较高 |
###1.3节 ####R11 存储转发分组方式是指交换机转发分组的第一个比特之前,必须先获得整个分组 所以答案是: $L/R_1+L/R_2$ ####R12 贴一段百度知道的回答:电路交换网络的优点 (1)数据直达传输,延迟小,具有很强的实时性。 (2)双方通信是有序的,不存在失序问题。 (3)该种交换方式既可以用于传输模拟信号,也可用于传输数字信号。(?) 第三点看起来有道理,但是书上找不到佐证了
TDM对于FDM的优点 (1)TDM对于带宽的利用更加灵活(需要更加灵活的时隙分配方案) (2)干扰更少(我猜的,别轻信) ####R13 a.2 b.两个用户刚好占满带宽 c.20% d. $0.20.20.2=0.008$ ####R14 为了减少支付给提供商ISP的费用 IXP怎么赚钱?可能是收过路费吧,但是如果这样,那和那些提供商ISP有什么区别。各级ISP本来就是为了少交钱才建立的IXP。。。 ####R15 (1)减少向顶层ISP缴纳的费用 (2)对自身的服务有了更多的控制 ###1.4节 ####R16 处理时延:与分组长度,路由器的运算速度有关 排队时延:与所在路由器的队列长度和路由器的运算速度(决定了队列的前进速度)有关 传输时延:与分组长度,路由器之间的链路传输速率有关 传播时延:与物理媒介有关 ####R17 翻译本上没找到注册需要的访问码,无法拿到小程序 更可恨的是,求助于百度网盘都没用 ####R18 传播时延:2500000/250000000=0.01s 传输时延:1000*8/2000000=0.004s 不考虑排队时延和处理时延的话那就是0.014s了 很疑惑为什么大家都忽略那0.004s了 注意这里k取到了1000,而不是1024
一般情况下 $t=L/R+d/s$ 显然是有关的 但是有人说问的是传播时延,但是看翻译本确实看不出这个意思 ####R19 a.首先我们知道,吞吐量是瓶颈链路的传输速率,所以如果这三段是串联(借用一下其他学科的词汇吧)的话,那么吞吐量显然应该是$500kbps$。 b.$4MB8/500kbps=64s$ c.吞吐量变为$100kps$,$t=4MB8/100kbps=320s$ ####R20 端系统将大文件分为许多小块,为每一块小块添加头部信息,便成为了分组。分组上会有接收端的地址,分组交换机的缓存中包含了,要让分组交付到接收端,应该交付的,下一个交换机的地址 如果驱车时,进入一个城市,便根据目的地点,询问一次下一个城市应该是哪一个的话,这样的操作和分组的转发实际上是一样的。 ####R21
###1.5节
####R22
此题无法保证答案正确性:
差错控制,转发分组,封装数据,流量控制,添加参数
这些都由某一层独立完成,不能由两个层次合作完成,但是不同的层次可以各做一遍(如应用层,运输层都可以提供差错控制服务)
####R23
(1)应用层
网络应用程序及其用户层协议,是产生数据和接收数据的源头
(2)运输层
提供了可靠的传输服务和拥塞控制(TCP)或者是无连接的服务(UDP)
(3)网络层
通过IP地址,将**数据报**转发到对应的主机上
(4)链路层
沿着路径将数据转发给下一个节点
(5)物理层
将链路层的整个帧从一个网络元素移动到邻近的网络元素
####R24
**应用层报文**是指位于应用层,一个端系统中的应用程序与另一个端系统中的应用程序,在某种协议下的信息分组
**运输层报文段**是指运输层为应用层报文添加上相应头部的分组,在此过程中,应用层报文可能被分割为短报文(TCP)
**网络层数据报**是指将运输层报文段添加IP头部的分组
**链路层帧**是链路层的分组,为网络层提供不同的服务
####R25
路由器:物理层,数据链路层,网络层
链路层交换机:物理层,数据链路层
主机:全部五层
###1.6节
####R26
病毒需要用户交互,才能感染用户设备,蠕虫不需要
####R27
僵尸网路是被感染恶意软件,做着各种不正当的工作的主机的统称。
利用僵尸网络的主机(多个源),向目标发起DoS攻击,就是DDoS攻击
####R28
获取Alice,Bob的个人信息,包括网络账号,真实姓名,聊天记录甚至相关密码,通过这些信息,Trudy可以窥探他人隐私,甚至可以依次勒索受害用户,或者贩卖这些信息来牟利
《计算机网络·自顶向下方法》第七版 第三章 课后习题与问题 答案
非官方答案,本人已尽最大努力(包括参考官方答案),使结果正确,如有错误,请大佬指出
正文: ###3.1~3.3节 ####R1 a.如果只是简单想把信件送到,那么所有的头部信息只需要一个目的地址就够了,题目给出端口号四个字节,所有分组的头部那就只需四个字节 此协议规定,运输层的全部任务就是,将应用层的数据,切成最大1196字节的块,把每一块加上目的主机对应程序的端口号,并将得到的分组交付给网络层 在接收方,运输层将网络层报文取回,去掉头部信息,将数据拼接成应用层需要的信息,根据端口号交付给应用层即可 不过话说回来,没有序号的话,运输层应该不能将数据拼回来。。。所以剪切数据的活可以让应用层完成,运输层不接收超过1196字节的分组,这样就更简单了 反正要保证本层最简单,把活给其他人干,或者干脆不干就行了 b.头部加四个字节,源端口号,交付给应用层的时候把这个源端口号一起交付给应用层 c.众所周知,运输层生活在网络边缘,所以网络核心的工作它不用干
####R2 a.这些信一定要提供信的接收者信息,而不是题目说的不用,倒是信封上确实不用说明 在这个模型中,邮局是网络层及其以下层次,负责收集分发的家庭成员是运输层,其他家庭成员是应用层 就如同我们常做的,信封上只写上了收件人的地址,而在新的开头写上收件人的名字,信的结尾写上自己的名字 如果严格按照计算机网络的工作范围而言,这两个名字并不是写信的人写上去的,而是负责收集分发的家庭成员为其填上的。 同样,信封也是负责收集分发的家庭成员制作的,并且将信放入正确的信封,交给邮局 在接收方,负责收集分发的家庭成员拆开信封,读取了信件开头的收件人姓名,并将报文交付给收件人 b.不需要,邮局提供家到家的服务就行了
####R3 y,x
####R4 较高的时延对这些应用来说难以接受,而且他们可以接受一部分数据丢失
####R5 答案说很多防火墙会阻止UDP,而放行TCP 但是不得不说,TCP由于其可靠的服务,是当前语音和图像选择它的主要理由,显而易见,如果UDP足够优秀,防火墙也不会设置成这个样子。
####R6 可能,在应用层完成UDP没有提供而TCP提供了的服务
####R7 报文段恐怕很难被描述成套接字,是或不是我就不回答了,建议如果英语不是差到跟我一样,不要读翻译本 UDP报文首部包含了源端口号,而网络层报文中包含了源IP,根据源端口号和源IP接收方可以分辨数据从哪里来
####R8 既然是链接,那我姑且认为你是在问TCP吧 TCP的socket有四个标志字段:源端口号,源IP,目的端口号,目的IP 显然这两个请求含有不同的IP,所以发送的请求不会通过相同的套接字 这两个套接字端口号的目的端口号都是80,源端口号不一定
###3.4节 ####R9 序号是在讨论rdt(reliable data transfer)2.0的时候引入的,背景是,下层信道可能造成数据损坏,除此之外完全可靠 当接收方收到一个完好的报文,它将发送一个ACK报文作为响应,然而,这个ACK报文可能在传输过程中损坏。 当发送方收到一个损坏的ACK报文,它无法分辨这是损坏的ACK还是NAK,所以,要么询问接收方,这个到底是个啥,要么,重发报文 重新询问的话,询问报文有可能也会出问题,而且影响效率,所以发送方选择了,接收到损坏的响应报文,就把数据重发一遍 然而对于接受方来说,它之前已经接收到了一份数据,下次应该接收下一份数据。 然而接收方下一次还是接收到了这一份数据,也就是说,在这种情况下,接收方根本不知道自己收到的是发送方第一次发送的,还是重发的数据 于是在报文中引入序号,使得接收方能够分辨报文的是发送方第一次发送的,还是重发的
####R10 在rdt2.0的基础上,下层信道可能会丢包 这个时候需要设置计时器,来判断下层信道有没有丢包
####R11 仍然需要 时延是否固定,已知与是否需要计时器没有关系,但是会影响定时器设定的值及其运算过程
####R12 小程序地址
a.五个分组全部重传了 b.在第二个ACK到达时,第一个分组也就被确认到达了,毁掉第一个ACK没有任何影响 c.发送窗口只有五,不能一次发送六个
####R13 注意在这里没有用到累计确认 a.只重传了第一个分组 b.重传了第二个分组 c.发送窗口只有五,不能一次发送六个
###3.4节 ####R14 a.false 会发送一个没有数据的报文来进行确认 b.false $rwnd = RcvBuffer - [LastByteRcvd - LastByteRead]$ c.true d.false 这条报文可能是重发 e.false 我认为应该是通过握手时确认的RcvBuffer 和数据传输时的最后发送的数据编号和最后确认的数据编号来确定的 但是答案给了true。。。 f.false 不是必定哦,之前的SampleRTT也有一定的权值 g.false 确认号用于确认自己接收的数据,而不是发出的 ####R15 a.20 b.90 ####R16 3个 第一段: seq = 43, ack =80; 第二段: seq = 80, ack = 44; 第三段:seq = 44, ack = 81 ###3.7节 ####R17 一开始这两个TCP都将占有一个MSS的cwnd,随后二者都将进入慢启动,拥塞避免,快速恢复阶段,具体的变化过程与RTT等其他因素有关,但是最后的传输速率都会相等,即R/2 ####R18 false 被设置成cwnd的一半 ####R19
《计算机网络自顶向下方法 - 第七版》第二章总结
2 Principle of Network Applications
2.2 The Web and HTTP
HTTP 协议定义了 Client 和 Server 之间如何交换信息以及信息的格式。一个网页由多个 object 构成,一般包含一个 base HTML file,其中包含了其他 object 的 URL。URL 由两部分组成,存储 object 的 Server 的 Hostname + object 的所在路径。
HTTP 底层依赖 TCP 协议,Client 发起与 Server 的 TCP 连接,Client 发送 HTTP Request Message,接收 HTTP Response Message,Server 则相反。事实上 HTTP 是一个无状态协议,Server 并不会保存与其交互的 Client 的状态,这能够简化 Server 的设计,但是有时候对 Client 进行标记是必要的,可以用 Cookie 解决该问题。
Client 可能连续向 Server 发起一系列 Request,如果为每个 Request 建立 TCP 连接,则称为 Non-persistent Connection,这种方式的弊端为:建立大量的 HTTP 连接会消耗大量的系统资源并且建立每个 TCP 连接都需要额外的一个 RTT,增加了延时。与之相反的是,默认的 HTTP 协议都会利用单一的 TCP 连接传输连续的 Request,直到给定时间没有接收到 Request 之后,Server 会将 TCP 连接关闭。这种方式称为 Persistent Connection。
HTTP Request Message 如下所示:
GET /somedir/page.html HTTP/1.1 // Request Line
Host: www.someschool.edu // Header Lines
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr
Request Message 由 Request line,Header lines 以及 Entity body 组成,Header lines 与 Entity body 之间存在一个空行。在如上所示的 Header Lines 中,Host 字段并不多余,因为它可以被 Client 与 Server 中间的 Web Cache 所使用。而 Connection 字段,则是 Client 用于通知 Server 不必建立 Persistent Connection。User-agent 则标示了发送 Request 的浏览器类型,Server 可能对于不同的浏览器发送同一个 object 的不同版本。
HTTP Response Message 如下所示:
HTTP/1.1 200 OK // Response Line
Connection: close // Header Line
Date: Tue, 18 Aug 2015 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
(data data data data data ...)
Response Message 类似地由 Response line,Header lines 以及 Entity body 组成。Header lines 中的 Date 字段表明 Server 构建以及发送 Response 的时间。Last-Modified 字段则表示获取的 object 上一次修改的时间,它可以用于检测缓存的对象是否需要更新。几种常用的返回状态如下:
200 OK:Request 成功并且在 Response 中包含了所需的信息
301 Move Permanently:请求的 object 已经被永久转移了,但是 Response Header 中的 Location 字段表明了 object 新的 URL,Client 可以根据该 URL 再次发起请求
400 Bad Request:常用的错误码,表明 Server 不理解请求的含义
505 HTTP Version Not Supported:Server 并不支持请求中的 HTTP 版本
HTTP 是无状态服务,因此需要 Cookie 为 Server 端对 Client 进行标记,获取 Cookie 及使用的过程如下:
1)Client 首次向一个 Server 发起 HTTP Request,Server 为该 Client 创建一个唯一的 ID,以该 ID 为 Key 在后端数据库建立表项,并在 HTTP Response 中包含一个额外的 Header,例如:"Set-cookie: 1678"
2)Client 接受到 HTTP Response,将其中的 Cookie 提出,把 Set-cookie 中的 ID 以及 Server 的 Hostname,存储到 Cookie file 中
3)当 Client 再次访问该 Server 时,会首先查询 Cookie file,若存在相应的 Cookie,则在 Request Header 中增加 Cookie Header,例如:"Cookie: 1678"
4)Server 根据 Request 中的 Cookie Header,可以对该请求进行特定的操作
事实上,Cookie 可以在无状态的 HTTP 协议之上创建一个 User Session Layer。
Web Cache 位于 Client 和 Server 之间,Client 可经过配置之后,直接访问 Web Cache,若相应的 object 不存在,则由 Web Cache 从 Server 进行获取并缓存。而 Web Cache 的优势主要包含两点:1)Web Cache 可极大地减少 Client 的访问延时,特别是 Client 和 Server 间的网络带宽远远小于 Client 和 Web Cache 之间的网络带宽。2)Web Cache 也可以极大地减少整个互联网的流量压力,重复的请求可以直接在接入网之前进行处理。而 Web Cache 的代表就是 CDN,通过在边缘架设一系列的 CDN 可以将多数流量进行本地化,从而避免远程访问。
如果 GET 请求中包含了 "If-Modified-Since:" 这种 Header,则称该请求为 The Conditional GET。当 Web Cache 需要检查某个 object 是否为最新时,可以对该 object 发起 GET 请求,并包含 "If-Modified-Since: TIME" 这一 Header,而 TIME 就是上文中在 HTTP Response 的 "Last-Modified" 这个 Header 的内容。若 object 自 TIME 以来未经修改,则 HTTP Response 返回的状态码为 "304 Not Modified" 且不包含 object,因为这是不必要的,完全是浪费带宽,而且对于大的 object 还会增加响应延时。
2.4 DNS-The Internet''s Directory Service
Internet 中的一台主机既可以用 Hostname 表示,也可以用 IP 表示,Hostname 由人类使用,但是由于其长度不定,因此其难以被路由器处理,而且其中包含的定位信息很少,例如,只能从后缀.cn 表示主机在中国。相反,IP 易于被路由器处理并且是一个层级结构,从左到右能逐渐对主机进行更精准的定位。
Domain Name System(DNS)就是 Internet 中用于提供 Hostname 和 IP 转换服务的系统。DNS 本质上由两部分组成:1)一个由层级 DNS Server 构成的分布式数据库,2)一个运行主机对该分布式数据库进行查询的应用层协议,该协议基于 UDP 实现,一般绑定 53 号端口,通常被 HTTP 等其余应用层协议调用。
DNS 除了提供 Hostname 到 IP 的转换服务以外,还能提供以下服务:
1) Host aliasing:通常一个主机包含多个 Hostname,其中一个为 Canonical Hostname,因此 DNS 还提供根据一个 Alias Name 查询 Canonical Hostname 以及 IP 地址的服务
2) Mail Server Aliasing:DNS 可以被 Mail Application 调用获取相应的 Canonical Hostname。事实上,DNS 中的 MX Record 允许一个公司的 Mail Server 和 Web Server 有着同样的(Aliased)Hostname。比如,一个公司的 Web Server 和 Mail Server 都可以为 enterprise.com
3) Load Distribution:一个 Hostname 往往可以和多个 IP 地址相对应,对于这样的 Hostname,DNS Reply 会将所有的 IP 地址返回,用户通常会选择其中第一个 IP 地址进行访问,因此为了能够在多个 IP 地址间进行负载均衡,DNS Reply 会对这些 IP 地址的排列顺序进行轮转,保证每个 IP 都能等概率地被访问。
DNS 系统由大量分布在全球的 DNS Server 构成,且可以将这些 Server 分成 Root DNS Server,Top-Level-Domain(TLD)Server 和 Authoritative DNS Server 三类并依次从上到下形成一个层级结构:
Root DNS Server:全球的 Root Name Server 由 13 个组织控制,它用于提供相应的 TLD Server 的 IP 地址
TLD Server:包含 com,org,edu 等顶级域名,它用于提供相应的 Authoritative DNS Server 的地址
Authoritative DNS Server:如果一个组织有主机提供对外服务,则它需要提供自己的 Authoritative DNS Server,用于转换该组织自己的 Hostname 和 IP 地址。
Local DNS Server:该类型的 Server 准确地说并不在上述层级体系中,它一般在主机连入的时候由 Residential ISP 提供,它可以作为 Proxy,用于接收相邻主机的 DNS 请求,再由它来访问上述层级体系,获取目标 IP 地址。关于 Local DNS Server 的作用,一方面它可以对 DNS Reply 进行缓存,从而提高访问速度,另外因为它是固定的,因此能够选择对最近的 Root DNS Server,TLD Server 以及 Authoritative DNS Server 进行访问,减小延迟。
DNS Records and Messages
全球的 DNS Server 组成了一个分布式数据库,其中存储的条目称为 Resource Records(RR),每一个 DNS Reply 可以包含一个或多个 Resource Records。一个 RR 由(Name,Value,Type,TTL)四部分组成并且分为以下四种类型:
1)Type = A:提供标准的 Hostname 到 IP 的映射,其中 Name 为 Hostname,Value 为 IP
2)Type = NS:根据 Hostname 查询相应的 Authoritative DNS Server,例如(foo.com,dns.foo.com,NS),这种类型的 RR 一般还需要跟一个 A 类型的 RR,用于描述 dns.foo.com 和它的 IP 之间的映射
3)Type = CNAME:提供 Alias Hostname 和 Canonical Hostname 之间的映射
4)Type = MX:提供 Alias Hostname 到 Mail Server 的 Canonical Hostname 之间的映射,如果要获取 Web Server 的 Canonical Hostname 则获取 CNAME 类型的 RR,对于 Mail Server 则获取 MX 类型的 RR
一般来说 DNS 协议只包含 Query 和 Reply 两种类型的 Message,且两种类型报文的格式相同。报文主要可分为 12 字节的 Header 和一系列的 RR 组成。Header 包含了 ID,一系列的 Flag 以及 Questions,Answer RRs,Authority RRs 以及 Additional RRs 的数量。Questions 包含查询的 Name 以及 Type,Answer RRs 返回相应的 RR,Authority RRs 返回 Authority Server 的 Records,最后的 Additional RRs 用于,对于一个 MX 类型的 Query,会返回 Mail Server 的 Canonical Hostname 并且会在 Additional 中包含 Canonical Hostname 到 IP 的 A 型 RR。
DNS Security
对于 DNS Server 的 DDos 攻击,由于缓存的存在,Root DNS Server 其实很少被直接访问,攻击 TLD DNS Server 是更有效的方式。对于 DNS Poisoning Attach,攻击者可以发送给 DNS Server 错误的 Reply,诱使其对它进行缓存,从而让用户访问攻击者指定的网站。不过上述攻击造成的影响都很有限,DNS 已经被证明是一个鲁棒性非常强的系统。
关于如何在 DNS 中注册新域名以及对其进行访问的例子:
1)例如一个初创公司决定其域名为 abc.com,首先需要向 Registrar 注册域名,保证其唯一性,同时需要提供对应的 Authoritative DNS Server 的 Name 和 IP 地址,例如,dns.abc.com,212.2.212.1,Registrar 会向 TLD Server 中插入两条 Resource Record,如下:
(abc.com,dns.abc.com,NS),(dns.abc.com,212.2.212.1,A)
同时需要确保:Web Server www.abc.com 的 A 类资源和 Mail Server mail.abc.com 的 MX 类资源已经写入 Authoritative DNS Server 中
2)例如 Alice 需要对 www.abc.com 进行访问,首先将 DNS 请求发送到 Local DNS Server,Local Server 访问 Root DNS Server 获取 com 的 TLD Server 的 IP 地址(若有缓存,则可跳过此步骤),再对 com TLD Server 进行访问并获取在步骤 1 中插入的两条 Resource Record,然后访问 dns.abc.com 获取 www.abc.com 的类型 A 资源,最后 Local DNS Server 将结果返回 Alice。
2.5 Peer-to-Peer File Distribution
对于 Client-Server 架构总是需要 Server 始终运行,但是 P2P 架构对于 Server 始终运行的要求能降到最低。下面以文件分发作为例子,对 Client-Server 架构以及 P2P 架构的扩展性进行对比:
设需要分发的文件的大小为 F,Server 的上传速度为 Us,共有 N 个 peers,第 i 个 peer 的上传速度为 Ui,下载速度为 Di。
因此对于 Client-Server 模式,最小的分发时间 Tcs 的下界为 max {NF/Us, F/Dmin},Dmin 表示 Peer 中最小的下载速度,可以证明如果 Server 能对分发的流量进行合理的调度,这一下界是能够达到的。对于扩展性,可见随着 N 的增大,Tcs 也将线性增长
对于 P2P 模式,其分发时间的估算是非常复杂的,这取决于 Peer 之间如何对已有的部分文件进行分发,但是我们仍然能对其分发时间的下界 Tp2p 进行估算,得到的结果为 max {F/Us, F/Dmin, NF/(Us + 对 Ui 求和)}。如果 Peer 在收到一个 bit 之后能马上对其进行分发,则可以找到一种分发方式达到这一下界。不过事实上,文件都是按照块而非 bit 进行分发的。但这一结果也能对分发时间进行很好的近似。假设 Ui 都相等为 U,则理想情况下,不管 N 多大,P2P 模式下的分发时间不会超过 F/U。显然,P2P 模式具有非常好的自扩展性。
BitTorrent
所有加入文件分发的 Peer 构成一个 Torrent,文件一般被切分为大小为 256KB 的块在 Peer 间分发。
在 Torrent 中有一个特殊的节点称为 Tracker,它记录了 Torrent 中所有 Peer 的信息。例如,当 Alice 想要加入 Torrent 进行文件下载时,她首先需要在 Tracker 中进行注册并阶段性地向 Tracker 发送心跳。Tracker 会将 Torrent 中一部分 Peer 的信息发送给 Alice,Alice 将与这些 Peer 建立连接,当然之后可能也会有 Peer 主动与 Alice 建立连接。在每个时刻,每个 Peer 都会有待传输的文件的一个子集且各个 Peer 间的子集并不相同。因此 Alice 会阶段性地向与其相连的 Peer 发送请求,获取它们已有数据块的列表,再与自己已有的数据块列表进行匹配,发送请求获取自己还没有的数据块。
在与 Peer 互相传输数据块时,Alice 需要考虑如下两个问题:
1)对于自己还没有的数据块,应该优先请求哪些数据块?
2)对于向自己发出请求的 Peer,应该向它们中的哪些发送数据块?
对于上述两个问题的解决方案如下:
1)Rarest First:即优先获取在 Alice 以及与其相连 Peer 的数据块 List 中副本数最少的数据块,从而增加这些数据块的分发,确保数据块副本数量的均衡
2)对于如何应答 Peer 的请求,Alice 每隔十秒会对各个连接的 Peer 传输数据给她的速率进行计算并选取其中的前四名,满足它们的请求。同时,每隔 30 秒,Alice 会随机选择一个 Peer 进行应答,这就给了新加入的 Peer 进行传输的机会。上述机制的实现,保证了整个系统的正常运行,否则每个 Peer 都会成为只下载而不上传的 Freerider。
P2P 架构的另一种应用是 Distributed Hash Table(DHT),DHT 事实上就是一个简单的数据库,其中的条目被分布式地记载在 P2P 系统的 Peer 中。
2.6 Video Streaming and Content Distribution Networks
Video 一个非常重要的特性是它可以压缩,现有的压缩算法能够将 Video 压缩到任意的 Bit Rate,显然 Bit Rate 越大,压缩的程度越小,用户体验也就越好。对于 Video Streaming 这一场景下,最重要的性能指标是端到端的吞吐量。因此,对于同一 Video 可以根据压缩程度的不同制作多个版本,根据用户的带宽传输相应的版本。
Dynamic Adaptive Streaming over HTTP(DASH),Client 会动态地获取一系列的块,计算下载速率,并根据算法选择下一次下载的块的数目。DASH 允许 Client 在一次会话过程中,根据带宽的不同在各个 Video Version 之间进行切换。每个版本的 Video 都存储在 HTTP Server 中,用不同的 URL 表示。Client 最开始需要从 Server 中获取一个 Manifest,其中包含各个版本的 URL 以及下载它们所需的 Bit Rate。
Content Distribution Networks
如果将所有的 Video 存储在单个数据中心中并为所有 Client 提供 Streaming Video 服务则会存在以下三个问题:
1) 数据中心距离 Client 太远,因此两者之间的交互可能会跨越多个 ISP,不同的 ISP 甚至可能在不同的大洲,如果中间某条链路的吞吐量太小,则会对整体造成巨大的延迟
2)对于流行的 Video,它可能会播放很多次,因此对于同一链路,会对该 Video 进行多次重复的传输,这不仅是对 Internet 整体带宽的浪费,Video Company 也需要为这些重复的流量付费
3)单点故障
Content Distribution Networks(CDN)通过将服务器分布到不同的地理位置并将用户的请求转发到能够提供最佳体验的 CDN Location 用以解决上述问题。
CDN 通常有如下两种部分方式:
1)Enter Deep:将服务器部署在尽量多的 Access ISP,通过减少用户和服务器之间的距离降低延迟。但同时由于如此广泛的部署,对于如此大量分散的服务器的维护将变得非常困难
2)将大规模的服务器部署在 Internet Exchange Points(IXP),从而降低维护成本,但伴随着更高的延迟和更低的吞吐量
事实上 CDN 不会将所有的 Video 预先复制到所有的 Cluster 中,而是会采用一种简单拉取的策略:如果 Client 向一个 Cluster 拉取一个 Video,若该 Video 不存在,则 Cluster 会一边从 Central Repository 或者其他 Cluster 拉取 Video 缓存到本地,一边向 Client 发送数据流。
那么如何将用户的请求截取并转发至 CDN Server?例如要观看 www.abc.com 的 Video,则 Local DNS Server 会向 abc Authoritative DNS Server 发送 DNS 请求,但是 abc Authoritative DNS Server 并不会直接返回 IP,而是会返回例如 King CDN 的 Authoritative DNS Server,之后 Local DNS Server 再向 King CDN 的 Authoritative 发起 DNS 请求,获取 DNS Server 的 IP,从而实现请求的转发。
Cluster Selection Strategies
如何为某个 Client 选择 CDN 中最优的 Cluster 是整个 CDN 体系中最为核心的问题,已知 CDN 能够获知 Local DNS Server 的 IP 地址,因此有如下几种策略:
1)在大多数情况下,选择地理上距离 Local DNS Server 最近的 Cluster 即可,但是对于某些情况下,地理距离上的最近并不代表网络距离上的最近,而且有的 Client 可能会使用远程的 Local DNS Server,另外这种相对固定的策略并没有考虑到网络的延迟和带宽会随着时间的推移而发生变化。
2)另一种方法是 CDN 会让它所有的 Cluster 定期地给全世界的 Local DNS Server 发送心跳,从而对两者之间的延迟进行实时地测量,从而动态地对 Client 和 CDN Cluster 进行匹配,但这种方法的问题是,并不是所有 Local DNS Server 都会对 Cluster 的心跳作出回应。
关于计算机网络自顶向下方法。第 6 版和初学笔记的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于2018版 网络工程师_第1章 计算机网络概论(学习笔记)、《计算机网络·自顶向下方法》第七版 第一章 课后习题与问题 答案、《计算机网络·自顶向下方法》第七版 第三章 课后习题与问题 答案、《计算机网络自顶向下方法 - 第七版》第二章总结等相关内容,可以在本站寻找。
本文标签: