TCP-IP详解卷I小结

TCP-IP详解卷I小结

  • 第1章 概述
  • 第2章 链路层
  • 第3章 网际协议(IP协议)
  • 第4章 地址解析协议
  • 第5章 逆地址解析协议
  • 第6章 互联网控制消息协议ICMP
  • 第7、8章 ping和traceroute程序
  • 第9章 IP(静态)选路
  • 第10章 动态选路协议
  • 第11章 UDP:用户数据包协议
  • 第12章 广播和多播
  • 第13章 IGMP:Internet组管理协议
  • 第14章 DNS:域名系统
  • 第15章 TFTP:简单文件传送协议
  • 第16章 BOOTP:引导程序协议
  • 第17-24章 TCP:传输控制协议
  • 第25章 SNMP: 简单网络管理协议
  • 第26章 远程登录
  • 第27章 FTP:文件传送协议
  • 第28章 SMTP: 简单邮件传送协议
  • 第29章 NFS:网络文件系统
  • 第30章 其他的TCP/IP应用程序

第1章 概述

本章快速地浏览了TCP/IP协议族,介绍了在后面的章节中将要详细讨论的许多术语和协议。
T C P / I P协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。在T C P / I P中,网络层和运输层之间的区别是最为关键的:网络层( I P)提供点到点的服务,而运输层( T C P和U D P)提供端到端的服务。

一个互联网是网络的网络。构造互联网的共同基石是路由器,它们在I P层把网络连在一起。第一个字母大写的I n t e r n e t是指分布在世界各地的大型互联网,其中包括1万多个网络和超过1 0 0万台主机。
在一个互联网上,每个接口都用I P地址来标识,尽管用户习惯使用主机名而不是I P地址。域名系统为主机名和I P地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。

第2章 链路层

链路层负责局域网内部同一链路上主机之间的数据传输。主要解决封装成帧、透明传输和差错检测三个基本问题。

第3章 网际协议(IP协议)

本章开始描述了I P首部的格式,并简要讨论了首部中的各个字段。我们还介绍了I P路由选择,并指出主机的路由选择可以非常简单:如果目的主机在直接相连的网络上,那么就把数据报直接传给目的主机,否则传给默认路由器。

在进行路由选择决策时,主机和路由器都使用路由表。在表中有三种类型的路由:特定主机型、特定网络型和默认路由型。路由表中的表目具有一定的优先级。在选择路由时,主机路由优先于网络路由,最后在没有其他可选路由存在时才选择默认路由。I P路由选择是通过逐跳来实现的。数据报在各站的传输过程中目的I P地址始终不变,但是封装和目的链路层地址在每一站都可以改变。大多数的主机和许多路由器对于非本地网络的数据报都使用默认的下一站路由器。

A类和B类地址一般都要进行子网划分。用于子网号的比特数通过子网掩码来指定。我们为此举了一个实例来详细说明,即作者所在的子网,并介绍了变长子网的概念。子网的划分缩小了I n t e r n e t路由表的规模,因为许多网络经常可以通过单个表目就可以访问了。接口和网络的有关信息通过i f c o n f i g和n e t s t a t命令可以获得,包括接口的I P地址、子网掩码、广播地址以及M T U等。

IP路由选择主要完成以下功能:搜索路由表,寻找能与目的IP地址完全匹配的表项。如果找到,则把报文发送给该表项指定的下一站路由器或者直接连接的网络接口;搜索路由表,寻找能与目的IP地址的网络号网络号+子网号相匹配(也就是网段,通过子网掩码来识别)的表项,如果找到,则把报文发送给该表项指定的下一站路由器或者直接连接的网络接口;搜索路由表,寻找默认表项,如果找到,则把报文发送给该表项指定的下一站路由器;如果上述步骤都不成功,那么该数据报就不能继续被传送。

IP的特点:1.不可靠。仅提供最好的传输服务,不能保证IP数据报能成功到达目的地发生错误就丢弃,并给信源返回ICMP消息。可靠性需要由上层提供(如TCP)。2.无连接。IP不维护任何关于后续数据的状态信息,数据的发送顺序和接收顺序可能不一致。每个数据报的处理是相互独立的。每个数据报的路由路线可能不同。

第4章 地址解析协议

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

另外,当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。
在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。

第5章 逆地址解析协议

工作原理:发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;如果不存在,RARP服务器对此不做任何的响应;源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

R A R P带来的问题包括使用链路层广播,这样就阻止大多数路由器转发R A R P请求,只返回很少信息:只是系统的I P地址。

第6章 互联网控制消息协议ICMP

互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

ICMP依靠IP来完成它的任务,它是IP的主要部分。它与传输协议(如TCP和UDP)显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了 ping 和 traceroute 这两个特别的例子。

通常用于返回的错误信息或是分析路由。ICMP错误消息总是包括了源数据并返回给发送者。每个ICMP消息都是直接封装在一个IP数据包中的,因此,和UDP一样,ICMP是不可靠的。

虽然ICMP是包含在IP数据包中的,但是对ICMP消息通常会特殊处理,会和一般IP数据包的处理不同,而不是作为IP的一个子协议来处理。在很多时候,需要去查看ICMP消息的内容,然后发送适当的错误消息到那个原来产生IP数据包的程序,即那个导致ICMP消息被发送的IP数据包。

很多常用的工具是基于ICMP消息的。traceroute 是通过发送包含有特殊的TTL的包,然后接收ICMP超时消息和目标不可达消息来实现的。 ping 则是用ICMP的"Echo request"(类别代码:8)和"Echo reply"(类别代码:0)消息来实现的。

第7、8章 ping和traceroute程序

P i n g程序是对两个T C P / I P系统连通性进行测试的基本工具。Ping利用I C M P回显请求和回显应答报文,而不用经过传输层( T C P / U D P)。Pi n g服务器一般在内核中实现I C M P的功能。我们还可以使用ping程序对串行线路上的S L I P链路吞吐量进行计算、记录路由选项和时间戳选项。

Tr a c e r o u t e程序可以让我们看到I P数据报从一台主机传到另一台主机所经过的路由:开始时发送一个T T L字段为1的U D P数据报,然后将T T L字段每次加1,以确定路径中的每个路由器;每个路由器在丢弃U D P数据报时都返回一个I C M P超时报文2,而最终目的主机则产生一个I C M P端口不可达的报文。

第9章 IP(静态)选路

IP路由有三类表项:主机表项比网络表项具有更高的优先级,而网络表项比默认项具有更高的优先级。系统产生的或转发的每份I P数据报都要搜索路由表,它可以被路由守护程序或I C M P重定向报文修改。系统在默认情况下不转发数据报,除非进行特殊的配置。用r o u t e命令可以进入静态路由,可以利用新I C M P路由器发现报文来初始化默认表项,并进行动态修改。主机在启动时只有一个简单的路由表,它可以被来自默认路由器的I C M P重定向报文动态修改。

第10章 动态选路协议

静态选路协议在网络很小,且与其他网络只有单个连接点且没有多余路由时(若主路由失败,可以使用备用路由),是可行的。如果上述三种情况不能全部满足,则通常使用动态选路。

路由器上有一个进程称为路由守护程序( routing daemon),它运行选路协议,并与其相邻的一些路由器进行通信:告知对方每个路由器当前所连接的网络,并根据它从相邻路由器接收到的信息,更新内核中的路由表。

采用R I P协议(内部网关协议)的r o u t e d程序正常运行:

  1. 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。
  2. 接收到请求。如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为1 6(R I P只能用在主机间最大跳数值为1 5的A S内。度量为1 6表示到无路由到达该I P地址,它意味着没有到达目的的路由)。然后发回响应。
  3. 接收到响应。使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除。
  4. 定期选路更新。每过3 0秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。触发更新。每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。每条路由都有与之相关的定时器。如果运行R I P的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大( 1 6),并标注为删除。这意味着已经在6个3 0秒更新时间里没收到通告该路由的路由器的更新了。再过6 0秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开。

RIP是距离向量协议:R I P发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表。OSPF是另外一种内部网关协议,是一个链路状态协议:路由器并不与其邻站交换距离信息。它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。从实际角度来看,二者的不同点是链路状态协议总是比距离向量协议收敛更快。收敛的意思是在路由发生变化后,例如在路由器关闭或链路出故障后,可以稳定下来。RIP使用UDP,OSPF使用IP。

B G P是一种不同自治系统的路由器之间进行通信的外部网关协议。B G P系统与其他B G P系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统A S中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。B G P与R I P和O S P F的不同之处在于B G P使用T C P作为其传输层协议。两个运行B G P的系统之间建立一条T C P连接,然后交换整个B G P路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。

无类型域间选路( C I D R)是一个防止I n t e r n e t路由表膨胀的方法,采用一种分配多个I P地址的方式,使其能够将路由表中的许多表项总和( s u m m a r i z a t i o n )成更少的数目。

第11章 UDP:用户数据包协议

U D P是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个U D P数据报,并组装成一份待发送的I P数据报。这与面向流字符的协议不同,如T C P,应用程序产生的全体数据与真正发送的单个I P数据报可能没有什么联系。U D P不提供可靠性:它把应用程序传给I P层的数据发送出去,但是并不保证它们能到达目的地。

第12章 广播和多播

广播是将数据报发送到网络中的所有主机(通常是本地相连的网络),而多播是将数据报发送到网络的一个主机组。这两个概念的基本点在于当收到送往上一个协议栈的数据帧时采用不同类型的过滤。每个协议层均可以因为不同的理由丢弃数据报。

第13章 IGMP:Internet组管理协议

多播是一种将报文发往多个接收者的通信方式。在许多应用中,它比广播更好,因为多播降低了不参与通信的主机的负担。简单的主机成员报告协议( I G M P )是多播的基本模块。IGMP用于主机(组播成员)和最后一跳路由器之间。主机使用IGMP报文向路由器申请加入和退出组播组。默认时路由器是不会向接口下转发组播数据流的,除非该接口上存在组成员。路由器通过IGMP查询网段上是否有组播组的成员。IGMP定义了一个网段内主机与组播路由器之间如何维护组成员信息。IGMP报文采用IP封装,协议号为2,而且TTL字段值通常为1。

第14章 DNS:域名系统

层次树是组成D N S域名空间的基本组织形式。应用程序通过名字解析器将一个主机名转换为一个I P地址,也可将一个I P地址转换为与之对应的主机名。名字解析器将向一个本地名字服务器发出查询请求,这个名字服务器可能通过某个根名字服务器或其他名字服务器来完成这个查询。所有的D N S查询和响应都有相同的报文格式。这个报文格式中包含查询请求和可能的回答资源记录、授权资源记录和附加资源记录。

第15章 TFTP:简单文件传送协议

T F T P是一个简单的协议,适合于只读存储器,仅用于无盘计算机系统(通常是工作站或X终端)从局域网进行系统引导。它只使用几种报文格式,是一种停止等待协议。为了允许多个客户端同时进行系统引导, T F T P服务器必须提供一定形式的并发。因为U D P在一个客户与一个服务器之间并不提供唯一连接( T C P也一样),T F T P服务器通过为每个客户提供一个新的U D P端口来提供并发。这允许不同的客户输入数据报,然后由服务器中的U D P模块根据目的端口号进行区分,而不是由服务器本身来进行区分。T F T P协议没有提供安全特性。大多数执行指望T F T P服务器的系统管理员来限制客户的访问,只允许它们访问引导所必须的文件。

第16章 BOOTP:引导程序协议

BOOTP使用UDP,它为引导无盘系统获得它的I P地址提供了除RARP外的另外一种选择。BOOTP还能返回其他的信息,如路由器的IP地址、客户的子网掩码和名字服务器的IP地址。既然BOOTP用于系统引导过程,一个无盘系统需要下列协议才能在只读存储器中完成:BOOTP、TFTP、UDP、IP和一个局域网的驱动程序。BOOTP服务器比RARP服务器更易于实现,因为BOOTP请求和应答是在UDP数据报中,而不是特殊的数据链路层帧。一个路由器还能作为真正BOOTP服务器的代理,向位于不同网络的真正BOOTP服务器转发客户的BOOTP请求。

第17-24章 TCP:传输控制协议

TCP提供了一种可靠的面向连接的字节流运输层服务。TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据;TCP提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。许多流行的应用程序如Telnet、Rlogin、FTP和SMTP都使用TCP。

TCP连接的建立与终止:三次握手建立连接,四次挥手终止连接

TCP的交互数据流(约占10%)总是以小于最大报文段长度的分组发送。对于这些小的报文段,接收方使用经受时延的确认方法来判断确认是否可被推迟发送,以便与回送数据一起发送。这样通常会减少报文段的数目,尤其是对于需要回显用户输入字符的Rlogin会话。在较慢的广域网环境中,通常使用Nagle算法来减少这些小报文段的数目。这个算法限制发送者任何时候只能有一个发送的小报文段未被确认。但有时需要禁止Nagle算法的功能,比如X窗口系统服务器:小消息(鼠标移动)必须无时延地发送,以便为进行某种操作的交互用户提供实时的反馈。

TCP的成块数据流(约占90%)采用滑动窗口协议来传输,使发送方和接收方之间的管道充满来获得最可能快的传输速度。通过调节发送和接收的缓存大小来控制流量。管道的容量通过带宽时延乘机来衡量。

TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。对每个连接,TCP管理4个不同的定时器:重传定时器使用于当希望收到另一端的确认;坚持(persist)定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口;保活( keepalive )定时器可检测到一个空闲连接的另一端何时崩溃或重启;2MSL定时器测量一个连接处于TIME WAIT状态的时间。

超时重传计时器:TCP计算往返时间并使用这些测量结果来维护一个被平滑的RTT估计器和被平滑的均值偏差估计器。这两个估计器用来计算下一个重传时间。许多实现对每个窗口仅测量一次RTT。K a r n算法在分组丢失时可以不测量RTT就能解决重传的二义性问题。T C P采取了慢启动、拥塞避免、快速重传和快速恢复等算法来处理重传和拥塞的问题。

坚持定时器:在连接的一方需要发送数据但对方已通告窗口大小为0时,就需要设置T C P的坚持定时器。发送方不断地探查已关闭的窗口。这个探查过程将一直持续下去。

TCP新特征:路径M T U发现在M T U较大时,对于非本地连接,允许T C P使用比默认的5 3 6大的窗口。这样可以提高性能;窗口扩大选项使最大的T C P窗口从6 5 5 3 5增加到1千兆字节以上;时间戳选项允许多个报文段被精确计时,并允许接收方提供序号回绕保护( PAW S),这些新的T C P选项在连接时进行协商,并被不理解它们的旧系统忽略,从而允许较新的系统与旧的系统进行交互;为事务用的T C P扩展,即T / T C P,允许一个客户/服务器的请求-应答序列在通常的情况下只使用三个报文段来完成:它避免使用三次握手,并缩短了T I M E WA I T状态,其方法是为每个主机高速缓存少量的信息,这些信息曾用来建立过一个连接。它还在包含数据报文段中使用S Y N和F I N标志。

第25章 SNMP: 简单网络管理协议

基于T C P / I P的网络管理包含两个部分:网络管理站(也叫管理进程, m a n a g e r)和被管的网络单元(也叫被管设备)。被管设备种类繁多,例如:路由器、X 终端、终端服务器和打印机等。这些被管设备的共同点就是都运行T C P / I P协议。被管设备端和管理相关的软件叫做代理程序( a g e n t )或代理进程。管理站一般都是带有彩色监视器的工作站,可以显示所有被管设备的状态(例如连接是否掉线、各种连接上的流量状况等)。管理进程和代理进程之间的通信可以有两种方式:管理进程向代理进程发出请求询问或者改变某些参数值;代理进程主动向管理进程报告有某些重要的事件发生。当代理进程发生了某些重大事件后会通过trap操作主动向管理进程报告的

管理信息数据库M I B定义了所有代理进程所包含的、能够被管理进程查询和设置的变量。所有这些变量都以对象标识符进行标识,这些对象标识符构成了一个层次命名结构,由一长串的数字组成。一个变量的特定实例可以用附加在这个对象标识符后面的一个实例来标识。很多S N M P变量是以表格形式体现的,有固定的栏目,但没有固定的记录数目,重要的是如何对表格中的每一行进行标识以及如何按字典方式进行排序。

第26章 远程登录

R l o g i n和Te l n e t操作。两者都提供了从客户进程远程登录到服务器进程,是我们能够在服务器端运行程序的方法。这两个应用是不同的。R l o g i n假定连接的双方都是U n i x系统,Te l n e t则可以在不同类型的主机之间建立连接。为了支持这种多机环境, Te l n e t提供客户进程和服务器进程的选项协商机制:对于比较简单的客户进程和服务器进程,它可以提供Te l n e t的基本功能,而当双方都支持某些选项时,它又可以充分利用双方的新特性。Te l n e t的数据传输的方式:单字符方式、准行方式和实行方式。现在的趋势是尽量工作在准行方式下,以减少网络上的数据量,同时为交互用户提供更好的行编辑和回显的响应。R l o g i n服务器和Te l n e t服务器通常都将设置T C P的保活选项以检测客户主机是否崩溃。这两种应用都采用了T C P紧急方式,以便即使从服务器到客户的数据传输被流量控制所终止,服务器仍然可以向客户发送命令。

第27章 FTP:文件传送协议

FTP在客户进程和服务器进程之间使用两个T C P连接—一个控制连接,它一直持续到客户进程与服务器进程之间的会话完成为止;另一个按需可以随时创建和撤消的数据连接。F T P使用NVT ASCII码做跨越控制连接的所有远程登录命令和应答。数据传输的默认方式通常也是NVT ASCII码。较新的Unix客户进程会自动发送命令来查看服务器是否是8bit字节的Unix主机,并且如果是,那么就使用二进制方式来传输所有文件,以获得更高的效率。

第28章 SMTP: 简单邮件传送协议

电子邮件包括在两端(发送方和接收方)都有的一个用户代理以及两个或多个报文传送代理。报文传送代理通过建立TCP连接交换邮件报文。可以把一个邮件报文分成三个部分:信封、首部和正文。所有都作为NVT ASCII字符进行交换。

第29章 NFS:网络文件系统

NFS的基础是远程过程调用PRC(Remote Procedure Call):1) 当客户程序调用远程的过程时,它实际上只是调用了一个位于本机上的、由R P C程序包生成的函数。这个函数被称为客户残桩( s t u b)。客户残桩将过程的参数封装成一个网络报文,并且将这个报文发送给服务器程序;服务器主机上的一个服务器残桩负责接收这个网络报文。它从网络报文中提取参数,然后调用应用程序员编写的服务器过程;当服务器函数返回时,它返回到服务器残桩。服务器残桩提取返回值,把返回值封装成一个网络报文,然后将报文发送给客户残桩;客户残桩从接收到的网络报文中取出返回值,将其返回给客户程序。网络程序设计是通过残桩和使用诸如插口(socket)或T L I的某个A P I的R P C库例程来实现的,但是用户程序—客户程序和被客户程序调用的服务器过程—不会和这个A P I打交道。客户应用程序只是调用服务器的过程,所有网络程序设计的细节都被R P C程序包、客户残桩和服务器残桩所隐藏。通过使用XDR对传输的值进行编码,R P C客户和服务器可以运行在不同架构的机器上。

一个客户对一个N F S服务器的访问开始于安装协议,返回给客户一个文件句柄。客户接着可以使用那个文件句柄来访问服务器文件系统中的文件。在服务器上,一次检查文件名的一个成员,返回每个成员的一个新的文件句柄。最后的结果就是要引用的文件的一个文件句柄,它可以在随后的读写操作中被使用。N F S试图把它的所用过程都做成等幂的,使得如果响应报文丢失了,客户只需要重发一个请求。

第30章 其他的TCP/IP应用程序

F i n g e r和W h o i s,是用来获得用户信息的。F i n g e r客户查询一个服务器,经常是为了找到某个人的登录名(以便给他们发电子邮件),或者去看一下某个人是否登录了。W h o i s客户一般与I n t e r N I C运行的服务器联系,查找关于一个人、机构、域或网络号的信息。A r c h i e、WA I S、G o p h e r、Ve r o n i c a和W W W提供I n t e r n e t资源发现服务, 帮助我们在I n t e r n e t上定位文件和文档。在X窗口系统中,X服务器管理一个显示器上的多个窗口,处理客户与其窗口的通信。每个客户都有它自己的与服务器的T C P连接,一个单个的服务器为一个给定的显示器管理着所有的客户。

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

你可能感兴趣的:(TCP-IP详解卷I小结)