计算机网络复习要点

本文根据华南理工大学软件学院《计算机网络》课程及相关教材《计算机网络:自顶向下方法》总结,作复习回顾用。

内容涵括书上第一章到第五章。


Chapter. 1 计算机网络与因特网

计算机网络里的设备统称为主机(host)或端系统(end system)。主机有时又被进一步划分为客户(client)和服务器(server)。

端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起。

分组交换机包括路由器(router)和链路层交换机(link-layer switch)。边缘路由器是端系统到任何其他远程端系统的路径上的第一台路由器。

当端系统发送数据时,把数据分段,并为每段加上首部字节,形成分组(packet)。一个分组所经历的一系列通信链路和分组交换机称为路径(route或path)。

端系统通过因特网服务提供商(ISP)接入因特网。

端系统、分组交换机和其他因特网部件都要运行一系列协议(protocol)。

与因特网项链的端系统提供了一个应用程序编程接口(API),该API规定了运行在一个端系统上的软件请求因特网基础设施向运行在另一个端系统上的特定目的地软件交付数据的方式。

一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送或接受报文或其他事件所采取的动作。

在网络应用间,端系统彼此交换报文(message)。报文包含协议设计者需要的任何东西。端系统在发送报文前把报文分段,即为分组。

多数分组交换机在链路的输入端使用储存转发传输。每台路由器都有一个转发表(forwarding table)。

通过网络链路和交换机移动数据有两种基本方法:电路交换(circuit switching)和分组交换(packet switching)。

链路中的电路通过频分复用(FDM)或时分复用(TDM)来实现。在连接期间链路为每条连接专用一个频段,该频段的宽度称为带宽(bankwidth)。

分组在路由器上的时延,也就是节点总时延包含:节点处理时延、排队时延、传输时延、传播时延。

假设分组大小L(bit),a为分组到达队列的平均速率(pkt/s),R为传输速率(bps),则La/R为流量强度,它不能大于1。

分组到达时若队列满,则该分组被丢弃,发生丢包(lost)。

五层因特网协议栈:应用层、运输层、网络层、链路层、物理层。分组在前四层的叫法分为报文(message)、报文段(segment)、数据报(datagram)、帧(frame)或片(fragment)。各层的所有协议被称为协议栈(protocaol stack)。从上往下,分组封装(encapsulation)内容越来越多。

DoS攻击分三种类型:弱点攻击,带宽洪泛,链接洪泛。


Chapter. 2 应用层

应用程序体系结构由应用程序研发者设计,规定如何在各种短系统上组织该应用程序。主流体系结构为:客户-服务器体系结构、对等(P2P)体系结构。

多数应用程序由通信进程对组成,每对两个进程互相发送报文。进程通过一个称为套接字(socket)的软件接口向网络发送报文和从网络接受报文。套接字是同一台主机内应用层与运输层之间的接口,也成为应用程序和网络之间的应用程序编程接口(API)。

目的地端口号(port number)用于指定运行在接受主机上的接受进程(接受套接字)。

运输层协议最普遍的两个:TCP、UDP。

TCP提供两种服务:面向连接的服务(三次握手),可靠的数据传送服务。且拥有拥塞控制机制。

UDP是一种不提供不必要服务的轻量级运输协议,仅提供最小服务。UDP无连接,进程间没有握手过程。UDP提供一种不可靠数据传送服务,不仅不保证报文可到达进程,且不保证报文到达次序。

TCP和UDP都没有提供加密机制,有建立在TCP上的一种安全版本SSL,并不是新的运输层协议,强化部分在应用层实现。

使用TCP的应用层协议有:SMTP、Telnet、HTTP、FTP等。

应用层协议是网络应用的一部分。应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文,定义了:1)交换的报文类型。2)各种报文类型的语法。3)字段的语义。4)一个进程何时以及如何发送报文,对报文进行相应的规则。

HTTP协议默认情况下采用持续连接,也可以配置成采用非持续连接。

往返时间(RTT)为一个短分组从客户到服务器然后再返回客户所花费的时间,包括分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延。HTTP协议里TCP三次握手总的响应时间就是两个RTT加上服务器传输HTML文件的时间。

HTTP请求报文第一行为请求行,后继的行为首部行。再后面跟着一个实体体。HTTP相应报文第一行为状态行,后继行为首部行,后面依然跟着一个实体体。

HTTP服务器是无状态的,要跟踪用户数据可以使用cookie。

Web缓存器也叫代理服务器(proxy server),是能代表初始Web服务器来满足HTTP请求的网络实体。代理服务器是服务器同时又是客户。代理服务器可以大大减少对客户请求的响应时间。

FTP跟HTTP一样,都运行在TCP上,但不同的是FTP使用了两个并行的TCP连接来传输文件,一个是控制连接(control connection),一个是数据连接(data connection)。采用独立的控制连接的控制信息是带外(out-of-band)传送的,反之则为带内(in-band)传送。

电子邮件系统由用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议构成(simple mail transfer protocao, SMTP)。

SMTP是因特网电子邮件中主要的应用层协议,使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。SMTP有两个部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端。SMTP一般不使用中间邮件服务器发送邮件。与HTTP协议不同,HTTP协议是一个拉协议,SMTP协议是一个推协议。其他流行的邮件访问协议有第三版邮局协议(POP3),因特网邮件访问协议(IMAP)。

DNS全程为域名系统(Domain Name System),是一个由分层的DNS实现的分布式数据库,是一个使得主机能够查询分布式数据库的应用层协议。DNS协议运行在UDP之上。DNS通常由其他应用层协议所使用,将用户所提供的主机名解析为IP地址。

没有一台DNS服务器拥有因特网上所有主机的映射。DNS服务器分三种:根DNS服务器、顶级域DNS服务器、权威DNS服务器。


Chapter. 3 运输层

运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能。

TCP和UDP的基本责任是将两个端系统之间的IP交付服务扩展为运行在端系统上的两个进程之间的交付服务。将主机间交付扩展到进程间交付被称为运输层的多路复用(transport-layer multiplexing)与多路分解(demultiplexing)。

多路复用包含在源主机中从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层。

多路分解是在接收端,运输层检查报文段,并标识出接受套接字,进而将报文段定向到该套接字。

0~1023范围的端口为周知端口号,受限制。

一个UDP套接字由一个二元组来标识:<目的IP地址,目的端口号>。一个TCP套接字由一个四元组来标识:<源IP地址,源端口号,目的IP地址,目的端口号>。

UDP没有比IP多做很多事情。UDP从应用进程得到数据,附加上用于多路复用/分解服务的源和目的端口号字段,以及两个其他的小字段,然后将形成的报文段交给网络层。网络层将该运输层报文段封装到一个IP数据报中,然后尽力而为地尝试将此数据报交付给接收主机。使用UDP时发送方和接收方运输层实体之间没有握手,所以是无连接协议。

UDP的优势:1)关于何时、发送什么数据的应用层控制更为精细。2)无需连接建立。 3)无连接状态,使得应用程序可以支持更多的客户。4)分组首部开销小。

UDP检验和提供了差错检测功能。发送方的UDP对报文段中所有16bit字的和进行反码运算,求和时进位回卷,得到的结果称为校验和。若无差错,校验和与所有16bit字求和结果应为全1。

可靠数据传输协议(reliable data transfer protocol)的下层协议有可能是不可靠的,比如TCP就是建立在IP协议上的一个RDTP。常用方案是接收方发送ACK和NAK分组。

允许发送方发送多个分组而无需等待确认的技术称为流水线(pipelining)技术。流水线技术有可能会产生差错,恢复手段为回退N步(go-back-n, GBN)和选择重传(selective repeat, SR)。

GBN协议说白了就是:若接收方丢失了第n个分组,则第n+1个分组以及之后的分组都不要(因为要保持有序),就等第n个分组送过来再继续接收分组。在发送方看来有个滑动窗口在处理分组发送过程,所以GBN协议又叫滑动窗口协议。GBN发送方必须响应三种事件:1)上层调用发送分组。2)收到一个ACK。3)超时事件。

SN协议说白了就是接收方也有一个滑动窗口,当滑动窗口最左端的数据包传过来时,滑动窗口才往右移一格;否则缓存发送过来的分组。

TCP协议被称为面向连接的(connection-oriented),因为在一个应用进程可以开始向另一个应用进程发送数据之前,这两个进程必须先相互握手,即它们必须相互发送某些预备报文段,以建立确保数据传输的参数。TCP协议只在端系统运行,而不在中间的网络元素(路由器和链路层交换机)运行,所以中间的网络元素不会维持TCP连接状态。事实上,中间路由器对TCP连接完全看不见,只看到数据报。

TCP协议提供全双工服务(full-duplex service)。如果一台主机上的进程A与另一台主机上的进程B存在一条TCP连接,那么应用层数据就可在从进程B流向进程A的同时,也从进程A流向进程B。TCP连接总是点对点的,即在单个发送方与单个接收方之间的连接。

TCP为每块客户数据配上一个TCP首部,从而形成多个TCP报文段,这些报文段被下传给网络层,网络层将其分别封装在网络层IP数据报中,然后这些IP数据报被发送到网络中。

TCP在IP不可靠的尽力而为服务至上创建了一种可靠数据传输服务。

TCP发送方也采取流水线技术,但差错恢复机制是GBN和SR的混合体。

TCP拥塞控制算法3个主要部分:1)慢启动。2)拥塞避免。3)快速恢复。TCP拥塞控制常常被称为加性增、乘性减(AIMD)拥塞控制方式。


Chapter. 4 网络层

网络层三组件:IP协议、因特网控制报文协议、因特网路由选择协议。

网络层三作用:转发、路由选择、连接建立。

分组交换机是指一台通用分组交换设备,根据分组首部字段的值从输入链路接口到输出链路接口转移分组。分为路由器和链路层交换机。每台路由器具有一张转发表(forwarding table)。

网络服务模型定义了分组在发送与接收端系统之间的端到端运输特性。

网络层提供单一服务:尽力而为服务(best-effort service)。

仅在网络层提供连接服务的计算机网络称为虚电路(VC);仅在网络层提供无连接服务的计算机网络称为数据报网络(datagram network)。

在虚电路中有三个明显不同的阶段:1)虚电路建立。2)数据传送。3)虚电路拆除。

路由器四个组成部分:1)输入端口。2)交换结构。3)输出端口。4)路由选择处理器。除去路由选择处理器之外的剩下三个部分有时称作路由器转发平面(router forwarding plane)。

交换结构有三种:经内存交换、经总线交换、经互联网络交换。

网际协议(IP)有两种版本:IPv4、IPv6。

一个链路层帧能承载的最大数据量叫做最大传送单元(MTU)。

主机与物理链路之间的边界叫做接口(interface)。

每个IP地址长度为32位,等价为4个字节。每台主机和路由器上的每个接口必须有一个全球唯一的IP地址。

分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的断点。这些隔离的网络每个成为一个子网(subnet)。ip/x的写法称为子网掩码(network mask),指示了32比特中的最左侧x比特定义了子网地址,也被称为IP地址的网络部分、前缀和网络前缀。一个地址的剩下32-x比特可认为是用于区分该组织内部设备的,其中的所有设备具有相同的网络前缀。当该组织内部的路由器转发分组时,才会考虑这些比特。

把IP地址分为两部分的划分方法称为无类别域间路由选择(CIDR)。在CIDR被采用之前,IP地址的网络部分被限制为长度为8、16或24比特,这种方案被称为分类编址(classful addressing)。

使用单个网络前缀通告多个网络的能力通常称为地址聚合(address aggregation)、路由聚合(route aggregation)或路由摘要(route summarization)。

当一台主机发出一个目的地址为255.255.255.255的数据报时,该报文会交付给同一个网络的所有主机。路由器也会有选择地向临近的子网转发该报文。

动态主机配置协议(DHCP)允许主机自动获取一个IP地址,常被称为即插即用协议(plug-and-play protocol)。

对一台新到达的主机而言,DHCP协议是一个4步骤的过程:DHCP服务器发现、DHCP服务器提供、DHCP请求、DHCP ACK。

具有专用地址的地域是指其地址仅对该网络中的设备有意义的网络。NAT路由器对外界的行为反过来就如用一个具有单一IP地址的单一设备。通过NAT转换表(NAT translation table)来判断将某个分组转发给哪个内部主机,并且表项中包含端口号和IP地址。

因特网报文控制协议(ICMP)被主机和路由器用来彼此沟通网络层的信息,最典型的用途是差错报告。ICMP通常被认为是IP的一部分,但从体系结构上讲它是位于IP之上的,因为ICMP报文是承载在IP分组中的。

主机通常直接与一台路由器相连接,该路由器即为该主机的默认路由器(default router)或第一跳路由器(first-hop router)。我们将源主机的默认路由器称为源路由器(source router),将目的主机的默认路由器称为目的路由器(destination router)。

路由选择算法有很多种分类方式:全局式(global)或分散式(decentralized)、静态(static)或动态(dynamic)、负载敏感(load-sensitive)或负载迟钝(load-insensitive)。具有全局状态信息的算法常被称作链路状态(link state, LS)算法。

Dijkstra和Prim算法就不说了,太基础。

距离向量(distance-vector, DV)算法是一种迭代的、异步的和分布式的算法,基于Bellman-Ford方程。整个算法过程说白了就是每个路由器都从周围的路由器获取他们维护的距离表,并更新从自己出发到别的路由器的最短距离,然后把更新结果再次发送出去。

DV算法会遇到一些问题:链路费用改变、链路故障。解决方案有毒性逆转(poisoned reverse)。

一个路由器组织称为一个自治系统(autonomous system, AS)。每个AS由一组通常处在相同管理控制下的路由器组成,在相同的AS中的路由器都全部运行同样的路由选择算法,且拥有彼此的信息。在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议(intra-autonomous system routing protocol)。从相邻AS获取可达性信息和向该AS中所有路由器传播可达性信息是两项由自治系统间路由选择协议处理的任务。

AS内部路由选择协议又称为内部网关协议(interior gateway protocol),常见的为路由选择信息协议(routing information protocol, RIP)与开放最短路优先(open shortest path first, OSPF)。

自治系统间的路由选择协议有边界网关协议(broder gateway protocol, BGP)。


Chapter.5 链路层

任何运行链路层协议的设备都称为节点。在通过特定的链路时,传输节点将数据报封装在链路层帧中,并将该帧传送到链路中。

链路层协议能够做到的服务包括:成帧(framing)、链路接入、可靠交付、差错检测和纠正。

链路层的主体部分实在网络适配器(network adapter)中实现的,网络适配器也成为网络接口卡(network interface card, NIC)。

差错检测最简单的方式是用单个奇偶校验位(parity bit)。还有二维奇偶校验(two-dimensional parity)方案。

循环冗余检测编码也成为CRC编码、多项式编码,它把要发送的比特穿看作为系数是0和1的一个多项式。所有CRC计算采用模2算术做,加法不进位,减法不借位,使得这两种操作等价于XOR。

有两种类型的网络链路:点对点链路(point-to-point link)和广播链路(broadcast link)。

多路访问协议有三种类型:信道划分协议(channel partitioning protocol)、随机接入协议(random access protocol)、轮流协议(taking-turns protocol)。

不是主机和路由器有链路层地址,而是它们的适配器具有链路层地址。也被称为LAN地址、物理地址或MAC地址。MAC地址长度为6字节,共有2^48种可能的MAC地址。没有两块适配器具有相同的MAC地址。

因为存在网络层地址和链路层地址,所以需要在它们之间进行转换,这就是地址解析协议(address resolution protocol, ARP)的任务。

每台主机或路由器在其内存中具有一个ARP表,这张表包含IP地址到MAC地址的映射关系,也包含一个寿命值(TTL),指示了从表中删除每个映射的时间。

最好把ARP看成是跨越链路层和网络层边界两边的协议。

交换机自身对子网中的主机和路由器是透明的。是即插即用的设备。它的性质有:消除碰撞、异质链路和管理。

 

posted @ 2019-06-18 22:25  JHSeng  阅读(1034)  评论(0编辑  收藏  举报