本篇为《Computer Network-A Top-Down Approach》第一章读书笔记。
概述
- 连接至计算机网络的计算设备被称为主机(hosts)或终端(end system)。
- 终端间通过通信链路(communication link)与分组交换机(packet switch)相连。
- 通信链路由同轴电缆,光纤,双绞线等物理媒介构成,其传输速率被定义为bits/second。
- 路由器(router)与链路层交换机(link-layer switch)均属于分组交换机。
- 终端间通过通信链路(communication link)与分组交换机(packet switch)相连。
- 终端通过ISP(Internet Service Provider)提供的服务连接至互联网。
- 计算机网络中信息的收发均遵从协议(protocols), TCP(Transmission Control Protocol )与 Internet Protocol (IP) 是其中最重要的两个。
- 为了保证所有人都遵从协议,IETF(Internet Engineering Task Force)制定了互联网标准(Internet standard)。
- 分布式应用程序(distributed application)——包含多个彼此交换数据的终端。
- 连接至互联网的终端,通过套接字接口(Socket Interface)指定数据如何传递至另一个终端上的特定应用程序。
- 协议是实体间为完成通信所必须遵从的规则,它包含了信息格式,信息顺序,以及发送/接受信息所必须执行的操作。
网络边沿
- 接入网络(access network)——将终端系统以物理方式连接到首个路由器的网络。
- 原书对诸如DSL,FTTH及各物理媒介的介绍与对比不再赘述。
- 接入网络在网络体系中的位置如图中蓝色高亮所示。
网络核心
本节所研究内容如下图蓝色高亮位置所示。
- 分组交换(packet switch):终端间通过报文(message)通信,较长的报文将被切割为分组/包(packet)
- 存储-转发(store-and-forward transmission)机制:交换机仅在接收完整个包后才开始向外发送数据,这造成了一定的时延。
- 排队时延(Queuing Delay)与丢包(Packet Loss):每一个交换机均持有一个输出队列(output queue),所有待发送包均需在此队列中排队(当前通信链路正忙于发送数据),若队列已满时到达了新包,新包将被丢弃。
- 在因特网中,IP地址的多级结构信息和路由器的转发表(forwarding table),决定了路由器拿到包后送往哪条链路,转发表是由路由选择协议自动设置的。
- 电路交换(Circuit Switch):另一种端与端通信手段,特点是源和目标点建立起名副其实的连接,称为电路,这条路上的带宽全部为这个连接空出来,所以电路交换的速度非常可靠(电话就采用了这种通信方式)。
- 频分复用,时分复用等不再赘述。
- 分组交换 VS 电路交换:
电路交换 | 分组交换 | |
---|---|---|
实现 | 复杂,成本高 | 简单,成本低 |
可靠性 | 可靠 | 延时不可预测 |
利用率 | 低,有空闲浪费 | 高,可共享空闲资源 |
特点 | 专线专用 | 共享路由 |
- ISP架构图:
其中IXP (Internet Exchange Point)用以令各ISP相互peer。
时延,丢包与吞吐量
- 分组交换中时延的分类
- 处理时延(Processing Delay):检查分组首部和决定将该分组导向何处,是节点处理时延(nodal processing delay)的一部分,其他部分有包括检查比特级差错处理(通常是微秒级以下)等。在这之后,路由器将包引向通往路由器B链路之前的队列。
- 排队时延(Queuing Delay):在队列中,当分组在链路缓存中等待传输时,它经受排队时延。 到达组的分组数量是到达该队列的流量强度的函数。实际的排队时延通常在毫秒到微秒级。
- 传输时延(Transmission Delay):假定包长度为L,从路由器A到路由器B的链路传输速率为R (b/s),则有传输时延L/R。这是将所有比特推向链路所需要的时间。实际的传输时延通常在毫秒到微秒级。传输时延与包体长度正相关,与路由间距无关。
- 传播时延(Propagation Delay):一旦一个比特被A推向链路向路由器B传播,从该链路的起点到路由器B的传播所需要的时间为传播时延,其速率范围等于或略小于光速,时延范围在毫秒级。传播时延等于两台路由器之间的距离d除以传播速率s。
- 传输时延与传播时延的区别:传输时延可以看做是车队(包)过收费站(路由器)的时间(车队头需要等待车队尾通过),而传播时延可看作在高速上花费的时间。
- 节点总时延 = 处理时延(可忽略) + 排队时延 + 传输时延 + 传播时延。
- 排队时延与丢包
- 流量强度( traffic intensity):假定包(packet)进入队列的速率为a(packets/sec),当前所有包总长度为L(bits),链路传输速度为R,则有流量强度=La/R。
- 如果La/R > 1,则意味着队列进入端速度大于流出端速度,此时排队时延将趋向无穷大。因此,流量工程中设计系统时流量强度不能大于1。在因特网中,接近1时将容易发生丢包。
- 若La/R <= 1,此时排序时延取决于流量本身的特点(即突发还是平稳)。
- 排序时延与流量强度的关系大致如下图所示:
- 丢包:在理想状态下丢包不会发生(将队列容量视作无穷大),实际上队列容量有限。若新包到达时队列已满,此时将发生丢包,在后续章节中我们将了解到丢失的包将会被再次传递至目的地,以保证数据的完整性。
- 流量强度( traffic intensity):假定包(packet)进入队列的速率为a(packets/sec),当前所有包总长度为L(bits),链路传输速度为R,则有流量强度=La/R。
- 端到端时延(End-to-End Delay)
- 假定源主机和目的主机之间有N-1台路由器,并且该网络是无拥塞的(此时可无视排队时延)。那么端到端时延为:
- 吞吐量(Throughput)
- 在如以太网路及封包无线电之类的电信网络之中,吞吐量或网络吞吐量是指于一通讯通道上单位时间能成功传递的平均资料量,资料可以于实体或逻辑链接上传递,或通过某个网络节点。吞吐量的单位通常表示为bit/s或bp。
- 在因特网内表现为网速。
- 整个通信网络的吞吐量由所有通信链路中的最低吞吐量决定(短板效应)。
协议栈
五层模型与七层模型:
五层协议栈
- 应用层:应用程序的协议。
- 我们把应用层的信息称为报文(message)。
- 典型协议如
HTTP
、FTP
、SMTP(电邮)
、DNS
。
- 运输层:在应用程序端点之间传输应用层报文的协议。
- 因特网中常用的有两个,即
TCP
和UDP
。 - TCP:面向连接,提供分割长报文,拥塞控制机制。
- UDP:无连接,无特殊功能。
- 处于运输层的分组叫做报文段(segement)
- 因特网中常用的有两个,即
- 网络层:负责将数据报(datagram)从主机移动到另一主机,使两端能够互连且决定最佳路径。
- 从运输层拿到报文段和目标地址。然后进行
路由
。 - 网络层的典型协议是
IP
协议,用来识别目标地址。 - 另一典型协议是
网络控制消息协定(ICMP)
,它是IP的主要部分,一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了ping
和traceroute
这两个特例。
- 从运输层拿到报文段和目标地址。然后进行
- 链路层:在两个网络实体之间提供数据链路连接的创建、维持和释放管理。
- 传输数据帧(frame),并对帧定界、同步、收发顺序的控制。
- 负责传输过程中的流量控制,差错检测和差错控制等方面。
- 数据链路层中的数据封装是指:封装的数据信息中,包含了地址段和数据段等。地址段含有点对点发送节点和接收节点的地址(如
MAC
),控制段用来表示数格连接帧的类型,数据段包含实际要传输的数据。 - 网络层将数据报下发给链路层,链路层传输后,上报给目标结点的网络层。
- 典型协议:
异步传输模式(ATM)
、帧中继(frame relay)
、高级数据链路控制(HDLC)
。 - 交换机、桥接器是本层设备。而集线器是物理层设备。
- 物理层:移动比特。
- 典型协议如:
蓝牙协议
、数字用户线路(DSL)
等等。 - 常见物理层设备:网卡、光纤、集线器 。
- 典型协议如:
- 应用层:应用程序的协议。
- 封装:
- 因特网协议栈自顶向下传输时,各层会将上层信息包装,上层信息包装为
负载字段(payload field)
,本层信息包装为首部字段(header field)
。 - 应用层报文 -> 运输层报文段 -> 网络层数据报 -> 链路层帧
- 因特网协议栈自顶向下传输时,各层会将上层信息包装,上层信息包装为
网络攻击
- 因特网攻击举例
- 利用病毒和木马形成僵尸网络(botnet),即肉鸡。
- 弱点攻击(攻击bug)、带宽洪泛(较为常见,多采用分布式攻击)、连接洪泛(伪造大量TCP连接)。
- 分组嗅探(packet sniffer):抓包,窃取隐私。
- 伪造分组:IP哄骗等。