zoukankan      html  css  js  c++  java
  • 计算机网络——谢希仁

    目录

     第1章 概述

     1.2 互联网概述

      1.2.1 网络的网络

     1.3 互联网的组成部分

      1.3.1 互联网的边缘部分

      1.3.2 互联网的核心部分

     1.6.1 计算机网络的性能指标

     1.7 计算机网络体系结构

      1.7.3 具有五层协议的体系结构

    第4章 网络层

     4.1 网络层提供的两种服务

     4.2 网际协议IP

      4.2.1 虚拟互联网络

      4.2.2 分类的IP地址

      4.2.3 IP地址与硬件地址

      4.2.6 IP层转发分组的流程

     4.3 划分子网和构造超网

      4.3.1 划分子网

     4.8 虚拟专用网VPN和网络地址转换NAT

      4.8.1 虚拟专用网VPN 

    第5章 运输层

     5.1 运输层协议概述

      5.1.1 进程之间的通信

      5.1.2 运输层的两个主要协议

      5.1.3 运输层的端口

    第6章 应用层

     6.1 域名系统DNS

      6.1.1 域名系统概述

      6.1.2 互联网的域名结构

      6.1.3 域名服务器

    第1章 概述

    1.2 互联网概述

    1.2.1 网络的网络

    计算机网络(简称为网络)由若干结点和连接这些结点的链路组成,网络中的结点可以计算机、集线器、交换机或路由器等。

     

    网络之间还可以通过路由器互连起来,这就构成了一个覆盖范围更大的计算机网络。 这样的网络称为互连网,如上图(b)所示。因此互连网是络的网络(network of networks)。

    与网络相连的计算机常称为主机(host),那么下图中用云表示的互连网里面就只剩下许多路由器和连接这些路由器的链路了。

     

     概念小结:网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起;与网络相连的计算机常称为主机。

    1.3 互联网的组成部分

    边缘部分:由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。

    核心部分:由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。

     

    1.3.1 互联网的边缘部分

    处在互联网边缘的部分就是连接在互联网上的所有的主机,这些主机又称为端系统(end system)。其通信方式通常可划分为两大类:客户-服务器方式(C/S)和对等方式(P2P)。

    客户-服务器方式

    客户是服务请求方,服务器是服务提供方,服务请求方和服务提供方都要使用网络核心部分所提供的服务。

     

     注:C/S方式表示Client/Server方式,有时还可看到另外一种叫做浏览器-服务器方 式,即B/S方式(Browser/Server方式),但这仍然是C/S方式的一种特例。

    对等连接方式

    对等连接(peer-to-peer,简写为P2P。这里使用数字2是因为英文的2是two)是指两台主机在通信时并不区分哪一个是服务请求方哪一个是服务提供方。只要两台主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。这时,双方都可以下载对方已经存储在硬盘中的共享文档。

     

    1.3.2 互联网的核心部分

    在网络核心部分起特殊作用的是路由器(router),它是一种专用计算机(但不叫做主机)。路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组。

    电路交换的特点

    必须经过“建立连接(占用通信资源)通话(一直占用通信资源)——释放连接(归还通信资源)”三个步骤的交换方式,下图为传统的电话电路交换技术。

    分组交换的主要特点

    分组交换则釆用存储转发技术,如下图表示把一个报文划分为几个分组后再进行传送。通常我们把要发送的整块数据称为一个报文(message)o在发送报文之前,先把较长的 报文划分成为一个个更小的等长数据段,例如,每个数据段为1024 bit。在每一个数据段前面,加上一些由必要的控制信息组成的首部(header)后,就构成了一个分组(packet)。分组又称为“包”,而分组的首部也可称为“包头”。分组是在互联网中传送的数据单元。分组的首部包含了诸如目的地址和源地址等重要控制信息。

     

    路由器收到一个分组,先暂时存储一下,检查其首部,查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步一步地(有时会经过几十个不同的路由器)以存储转发的方式,把分组交付最终的目的主机。

    下图中表示的就是H1通过路由器向H5发送信息,当信息比较大时可以同时使用两个链路进行转发。

     

    在数据传送阶段有三种常见的交换方式:

      电路交换——整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。

      报文交换一一整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一 个结点。

      分组交换——单个分组(这只是整个报文的一部分)传送到相邻结点,存储下来后查 找转发表,转发到下一个结点。

    若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。报文交换和分组交换不需要预先分配传输带宽,在传送突发数据 时可提高整个网络的信道利用率。由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。

    1.6.1 计算机网络的性能指标

    (1)速率

    网络技术中的速率指的是数据的传送速率,它也称为数据率(data rate) 或比特率(bit rate)。速率的单位是bit/s (比特 每秒)(或b/s,有时也写为bps,bit per second)。在生活中提到的速率一般是省略了单位,此外当提到网络的速率时,往往指的是额定速率或标称速率,而并非网络实际上运行的速率。

     (2)带宽

    网络带宽表示在单位时间内网络中的某信道所能通过的“最高数据率”,宽的单位就是数据率的单位bit/s。

    (3)吞吐量

    吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的实际的数据量。

    1.7 计算机网络体系结构

    1.7.3 具有五层协议的体系结构

    OSI的七层协议体系结构的概念清楚,理论也较完整,但它复杂不实用。TCP/IP虽说是一个四层的体系结构,不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往釆取折中的办法,即综合OSI和TCP/IP的优点,釆用一种只有五层协议的体系结构。

     

    应用层(application layer)

    应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指主机中正在运行的程序,我们把应用层交互的数据单元称为报文(message)。

    运输层(transport layer)

    运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。应用 进程利用该服务传送应用层报文。运输层主要使用以下两种协议:

    • 传输控制协议TCP (Transmission Control Protocol)------- 提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)。
    • 用户数据报协议UDP (User Datagram Protocol)----------- 提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。

    网络层(network layer)

    网络层负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报。本书把“分组”和“数据报”作为同义词使用,这里和运输层的“用户数据报UDP”是不同的。

    网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议IP (Internet Protocol)和许多种路由选择协议,因此互联网的网络层也叫做网际层或IP层。在本书中,网络层、网际层和IP层都是同义语。

    注:无论在哪一层传送的数据单元,都可笼统地用“分组”来表示。网络层中的“网络”二字,不是我们通常谈到的具体网络,而是在计算机网络体系结构模型中的第3层的名称。

    第4章 网络层

    4.1 网络层提供的两种服务

    争论网络层应该提供怎样的服务其焦点就在于:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?因为计算机具有很强的容错处理能力,因此互联网釆用的设计思路是这样的:网络层向上只提供简单灵活的、无连接的、尽最大 努力交付的数据报服务。

    网络层不提供服务质量的承诺,那么传出的分组就可能出现丢失、重复。

    4.2 网际协议IP

    与IP协议配套使用的还有三个协议:

    • 地址解析协议 ARP (Address Resolution Protocol)
    • 网际控制报文协议 ICMP (Internet Control Message Protocol)
    • 网际组管理协议 IGMP (Internet Group Management Protocol) 本来还有一个协议叫做逆地址解析协议RARP

     

    ARP画在最下面,因为IP经常要使用这个协议。 ICMP和IGMP画在这一层的上部,因为它们要使用IP协议。

    4.2.1 虚拟互连网络

    因为用户的需求是多样的,为了满足用户的需求那么网络的特性肯定也是多样的,可能会采用不同的协议方法来实现。那么这些网络直接连接就会造成各种问题那么如何解决?下面给出了四种解决方案:

    (1)物理层使用的中间设备叫做转发器(repeater)

    (2)数据链路层使用的中间设备叫做网桥或桥接器(bridge)

    (3)网络层使用的中间设备叫做路由器(router)

    (4)在网络层以上使用的中间设备叫做网关(gateway)

     目前最常见的就是路由器了,通过路由器使异构的网络通过IP协议连接起来。如下图描述的就是分组通过路由器在互联网中的传送,主机中存放路由表来记录相连的路由器,路由器存放转发表记录下一个路由器或者主机。

     

     4.2.2 分类的IP地址

    IP地址经历过三个阶段:

    (1)分类的IP地址。这是最基本的编址方法。

    (2)子网的划分。这是对最基本的编址方法的改进。

    (3)构成超网。这是比较新的方法。

    IP地址及其表示方法

         在这一小节中主要是分析最基础的编址方法——分类的IP地址:每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号,它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号,它标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个互联网范围内是唯一的。

    下图中为几种不同的分类地址,其中A、B、C三类都是单播地址(一对一通信),最常用。E类用于多播(一对多通信)

     

    从IP地址的结构来看,IP地址并不仅仅指明一台主机,而是还指明了主机所连接到的网络。因为有些地方主机比较多,有些主机少,所以分为ABC三类就是为了更好的满足用户的需求。当某个单位申请到一个IP地址时,实际上是获得了具有同样网络号的一块地址。其中具体的各台主机号则由该单位自行分配,只要做到在该单位管辖的范围内无重复的主机号即可。

    对主机或路由器来说,IP地址都是32位的二进制代码,但为了书写和表示方便采用了点分十进制。

     

    常用的三种类别的IP地址

    这部分主要介绍了三种类别的IP地址,具体介绍就不赘述了,这里只是把表展示出来。

     

    为了更好理解,下图给出了一个图例。三个局域网(LAN1,LAN2和LAN3)通过三个路由器(R1,R2和R3)互连起来所构成的一个互联网(此互联网用虚线圆角方框表示)。其中局域网LAN2是由两个网段通过网桥B互连的。图中的小圆圈表示需要有一个IP地址。

     从图中可以看出:

    • 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的
    • 用网桥(它只在链路层工作)互连的网段仍然是一个局域网,只能有一个网络号
    • 路由器总是具有两个或两个以上的IP地址
    • 当两个路由器直接相连时(例如通过一条租用线路),在连线两端的接口处,可以分配也可以不分配IP地址。现在常常不分配IP地址。通常把这样的特殊网络叫做无编号网络或无名网络。

     4.2.3 IP地址与硬件地址

    下图以图例的形式说明了两种地址的区别。从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑 地址是因为IP地址是用软件实现的)。

    使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。

    对于传送过程的流程为:连接在通信链路上的设备(主机或路由器)在收到MAC帧时,根据MAC帧首部中的硬件地址决定收下或丢弃。只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。

    对于整个传送过程有几点要注意:

    (1)在IP层抽象的互联网上只能看到IP数据报。

    (2)虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。

    (3)在局域网的链路层,只能看见MAC帧。

    注:在局域网中,由于硬件地址已固化在网卡上的ROM中,因此常常将硬件地址称为物理地址。因为在局域网的 MAC帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为MAC地址。在本书中,物理地址、硬件地址和MAC地址常常作为同义词出现

    4.2.6 IP层转发分组的流程

    下图(a)是一个路由表的简单例子。有四个A类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万台主机,若路由表指出到每一台主机应怎样转发, 则所得出的路由表就会过于庞大,但若路由表指出到某个网络应如何转发,则每个路由器中的路由表就只包含4个项目。

    以路由器R2的路由表为例。只要目的主机在网络2或网络3上,都可通过接口 0或1由路由器R2直接交付,若目的主机在网络 1中,则下一跳路由器应为R1;R3同理。图(b)是一个简化图,主要强调了在互联网上转发分组时,是从一个路由器转发到下一个路由器。

    由上图可以得出路由最主要的信息:(目的网络地址,下一跳地址)。

    此处还有提到分组转发算法,准确而言就是一个路由器的分组流程,因此没写如果想详细了解可以参考书中的详细描述。

    4.3 划分子网和构造超网

    4.3.1 划分子网

    1 从两级IP地址到三级IP地址

    下图为一个B类IP地址,网络地址145.13.0.0 (网络号是145.13)。凡目的地址为145.13.x.x的数据报都被送到这个网络上的R1路由器。

     

    现在把上图划分为三个子网:145.13.3.0, 145.13.7.0 145.13.21.0 。在划分子网后,整个网络对外部仍表现为一个网络,其网络地址仍为 145.13.0.0。但网络145.13.0.0上的路由器R1在收到外来的数据报后,再根据数据报的目的地址把它转发到相应的子网。

     

    划分子网后的IP地址:={<网络号>,<子网号>,<主机号>} 

    当没有划分子网时,IP地址是两级结构。划分子网后IP地址变成了三级结构。 划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。

    2 子网掩码

    从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网的划分,这是因为32位的IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息,那么就要使用子网掩码来进行补充。

    从上图中可以看出:三级IP地址的子网掩码和收到的数据报的目的IP地址145.13.3.10 逐位相“与”(AND),得出了所要找的子网的 网络地址145.133.0。

    使用子网掩码的好处就是:不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的“与”运算,就立即得出网络地址来,这样在路由器处理到来的分组时就可采用同样的算法。现在互联网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网络不划分子网, 那么该网络的子网掩码就使用默认子网掩码。

    4.8 虚拟专用网VPN和网络地址转换NAT

    4.8.1 虚拟专用网VPN

    在实际中,一个机构内部的主机并不需要全部都连接上互联网,但是还要和本机构内的其他主机进行通信,如果每台主机全部申请一个IP地址那么就会造成极大的资源浪费。对于采用TCP/IP协议而言,仅在机构内部使用的计算机就可以由本机构自行分配其IP地址。也就是说,让这些计算机使用仅在本机构有效的IP地址(这种地址称为本地地址),而不需要向互联网的管理机构申请全球唯一的IP地址(这种地址称为全球地址)。

    但如果随意的选择IP有时候可能会引起歧义,因为规定了本地IP的范围:

      (1) 10.0.0.0 10.255.255.255

      (2) 172.16.0.0 172.31.255.255

      (3) 192.168.0.0 192.168.255.255 

    这三个地址块分别相当于一个A类网络、16个连续的B类网络和256个连续的C类网络。采用这样的专用IP地址的互连网络称为专用互联网本地互联网,专用IP地址尽在本机构内部使用因此可以重用。

    当一个机构分布范围比价广时,便可利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual Private Network)。下图便是以两个场所为例说明如何使用IP隧道技术实现虚拟专用网。

    图(a)中的路由器R1、R2,和互联网的接口地址必须是合法的全球IP地址。路由器R1和R2 在专用网内部网络的接口地址则是专用网的本地地址,在每一个场所A或B内部的通信量都不经过互联网,但A与B之间的通信要经过互联网,其传送的数据是要经过加密的。这样虽然使用的是公网,但效果就像是专用网一样。从逻辑上看,在R1到R2之间好像是一条直通的点对点链路,图中的“隧”就是这个意思。

    图(b)中由场所A和B的内部网络所构成的虚拟专用网VPN又称为内联intranet或intranet VPN,即内联网VPN),表示场所A和B都属于同一个机构。

    4.8.2 网络地址转换NAT

    考虑:在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和互联网上的主机通信(并不需要加密),那么应当采取什么措施呢?

    最简单的办法就是设法再申请一些全球IP地址。但这在很多情况下是不容易做到的,因为全球Pv4的地址已所剩不多了。目前使用得最多的方法是采用网络地址转换

    网络地址转换NAT( Network Address Translation)需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。

    下图给出了NAT路由器的工作原理。在图中,专用网192.168.0.0内所有主机的IP地址都是本地IP地址192.168.xx。NAT路由器至少要有一个全球IP地址,才能和互联网相连。下图中NAT路由器有一个全球IP地址172.38.1.5(当然,NAT路由器可以有多个全球IP地址)。

       NAT路由器收到从专用网内部的主机A发往互联网上主机B的P数据报:源IP地址是192.168.0.3,而目的P地址是213.18.2.4。NAT路由器把IP数据报的源IP地址192.168.0.3,转换为新的源P地址(即NAT路由器的全球IP地址)172.38.1.5,然后转发出去。因此,主机B收到这个IP数据报时,以为A的IP地址是172.38.1.5。当B给A发送应答时,IP数据报的目的IP地址是NAT路由器的IP地址172.38.15。B并不知道A的专用地址192.168.0.3。实际上,即使知道了,也不能使用,因为互联网上的路由器都不转发目的地址是专用网本地IP地址的IP数据报。当NAT路由器收到互联网上的主机B发来的IP数据报时,还要进行一次IP地址的转换。通过NAT地址转换表,就可把P数据报上的旧的目的P地址172.38.1.5,转换为新的目的P地址192.168.0.3(主机A真正的本地P地址)。表4-11给出了NAT地址转换表的举例。表中的前两行数据对应于上图所举的例子。第一列“方向”中的“出”表示离开专用网,而“入”表示进入专用网。表中后两行数据(图460中没有画出对应的P数据报)表示专用网内的另一主机192.168.0.7向互联网发送了IP数据报,而NAT路由器还有另外一个全球P地址172.38.16。

    例题;

    1.下列关于地址转换的描述中,错误的是()。

    A.地址转换解决了因特网地址短缺所面临的问题  B.地址转换实现了对用户透明的网络外部地址的分配

    C.使用地址转换后,对IP包加长、快速转发不会造成什么影响   D.地址转换内部主机提供一定的“隐私”

    由上面分析可知:实现了对用户透明的网络内部地址分配而不是外部

    2.下列给定地址中,与192.168.110/27属于同一个子网的主机地址是()

    A.192.168.1.94        B.192.168.1.96

    C.192.168.1.124     D.192.168.1.126

    27是子网掩码为24个1.11100000(从左向右,只看最后的8位,题目中只有最后8位不同)IP地址与子网掩码相与,结果相同的便是在一个子网内,因此为CD

    第5章 运输层

    5.1 运输层协议概述

    5.1.1 进程之间的通信 

    IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。下图就展示了运输层为相互通信的应用进程提供了逻辑通信。

     

    网络层和运输层的区别:网络层为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信。

     

    5.1.2 运输层的两个主要协议

    TCP/IP运输层有两个重要的协议:用户数据报协议 UDP ;传输控制协议 TCP。

     

    在TCP/IP体系中,则根据所使用的协议是TCP UDP,分别称之为TCP报文段或UDP用户数据报。UDP在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP却是一种最有效的工作方式

    TCP则提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。

    5.1.3 运输层的端口

    应用层所有的应用进程都可以通过运输层再传送到IP层(网络层),这就是复用。运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程,这就是分用

    在单个计算机中的进程是用进程标识符(一个不大的整数)来标志的。但在互联网环境下因为操作系统可能会有很多,不同操作系统下进程表示符也不同,因此在运输层使用协议端口号简称为端口。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    第6章 应用层

    应用层的许多协议都是基于客户服务器方式,即使是P2P对等通信方式,实质上也是 一种特殊的客户服务器方式。

    6.1 域名系统DNS

    6.1.1 域名系统概述

    域名系统DNS (Domain Name System)是互联网使用的命名系统,大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此DNS系统的效率很高。

    6.1.2 互联网的域名结构

    以下图域名为例,可以简单了解域名,对于域名还有一些具体的规定如不区分大小写,域名必须唯一,总长不得超过255个字符等这些具体要求可以参考有关的具体资料。

     因为域名是分级的,可以用下图的树形结构来进行表示。

     

     6.1.3 域名服务器

    域名是计算机网络中抽象出来的名字,如果一个域名就对应一个域名服务器的话那么就会造成服务器的数量太多,因此把某些子域名合并在一起称为区,实际中域名服务器所管理的范围就是区。

    域名和区的区别如下图,在a中就认为abc.com就是一个区,在b中对域就在父域名abc的下面设置了两个区。也可得出结论:区是域的子集。

     对上图中的b画出其域名服务器树状图,每一个域名服务器都可以对所管理的域名进行解析

    DNS的域名解析分为两种:

    • 主机向本地域名服务器的查询一般都是釆用递归查询。
    • 本地域名服务器向根域名服务器的查询通常是釆用迭代查询。

     

    这个章节的主要讲的是应用部分,而互联网的应用部分最重要的就是HTTP协议了,因此此处只写了DNS,具体应用层可以参考HTTP权威指南。 

    0

  • 相关阅读:
    BZOJ3282 Tree
    [NOI2004] 郁闷的出纳员
    [HNOI2004]宠物收养所
    [HNOI2002] 营业额统计
    图论 简单学习笔记
    POJ3321 Apple tree
    [国家集训队] 聪聪可可
    POJ2976 Dropping tests
    SCOI2005 最大子矩阵
    codeforces|CF13C Sequence
  • 原文地址:https://www.cnblogs.com/youngao/p/11747655.html
Copyright © 2011-2022 走看看