TCP/IP 协议详解

 

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

一图看完本文

 

一、 计算机网络体系结构分层

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

计算机网络体系结构分层

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

计算机网络体系结构分层

不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。

 

二、 TCP/IP 基础

1. TCP/IP 的具体含义

从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群。

互联网进行通信时,需要相应的网络协议,TCP/IP 原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是 TCP/IP,TCP/IP 就是互联网的协议。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

网际协议群

2. 数据包

包、帧、数据包、段、消息

以上五个术语都用来表述数据的单位,大致区分如下:

  • 包可以说是全能性术语;
  • 帧用于表示数据链路层中包的单位;
  • 数据包是 IP 和 UDP 等网络层以上的分层中包的单位;
  • 段则表示 TCP 数据流中的信息;
  • 消息是指应用协议中数据的单位。

每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

数据包首部

网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。首部的结构由协议的具体规范详细定义。在数据包的首部,明确标明了协议应该如何读取数据。反过来说,看到首部,也就能够了解该协议必要的信息以及所要处理的数据。包首部就像协议的脸。

3. 数据处理流程

下图以用户 a 向用户 b 发送邮件为例子:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

数据处理流程

  • ① 应用程序处理
  • 首先应用程序会进行编码处理,这些编码相当于 OSI 的表示层功能;
  • 编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接何时发送数据的管理功能,相当于 OSI 的会话层功能。
  • ② TCP 模块的处理
  • TCP 根据应用的指示,负责建立连接、发送数据以及断开连接。TCP 提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现这一功能,需要在应用层数据的前端附加一个 TCP 首部。
  • ③ IP 模块的处理
  • IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做自己的数据,并在 TCP 首部的前端加上自己的 IP 首部。IP 包生成后,参考路由控制表决定接受此 IP 包的路由或主机。
  • ④ 网络接口(以太网驱动)的处理
  • 从 IP 传过来的 IP 包对于以太网来说就是数据。给这些数据附加上以太网首部并进行发送处理,生成的以太网数据包将通过物理层传输给接收端。
  • ⑤ 网络接口(以太网驱动)的处理
  • 主机收到以太网包后,首先从以太网包首部找到 MAC 地址判断是否为发送给自己的包,若不是则丢弃数据。
  • 如果是发送给自己的包,则从以太网包首部中的类型确定数据类型,再传给相应的模块,如 IP、ARP 等。这里的例子则是 IP 。
  • ⑥ IP 模块的处理
  • IP 模块接收到 数据后也做类似的处理。从包首部中判断此 IP 地址是否与自己的 IP 地址匹配,如果匹配则根据首部的协议类型将数据发送给对应的模块,如 TCP、UDP。这里的例子则是 TCP。
  • 另外吗,对于有路由器的情况,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送往的主机或路由器之后再进行转发数据。
  • ⑦ TCP 模块的处理
  • 在 TCP 模块中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据被完整地接收以后,会传给由端口号识别的应用程序。
  • ⑧ 应用程序的处理
  • 接收端应用程序会直接接收发送端发送的数据。通过解析数据,展示相应的内容。

 

三、传输层中的 TCP 和 UDP

TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP。

  • TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,当应用程序采用 TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。
  • UDP 是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在 UDP 的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。
  • TCP 和 UDP 的优缺点无法简单地、绝对地去做比较:TCP 用于在传输层有必要实现可靠传输的情况;而在一方面,UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该根据应用的目的按需使用。

1. 端口号

数据链路和 IP 中的地址,分别指的是 MAC 地址和 IP 地址。前者用来识别同一链路中不同的计算机,后者用来识别 TCP/IP 网络中互连的主机和路由器。在传输层也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。

1.1 根据端口号识别应用

一台计算机上同时可以运行多个程序。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

通过端口号识别应用

1.2 通过 IP 地址、端口号、协议号进行通信识别

  • 仅凭目标端口号识别某一个通信是远远不够的。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

通过端口号、IP地址、协议号进行通信识别

  • ① 和② 的通信是在两台计算机上进行的。它们的目标端口号相同,都是80。这里可以根据源端口号加以区分。
  • ③ 和 ① 的目标端口号和源端口号完全相同,但它们各自的源 IP 地址不同。
  • 此外,当 IP 地址和端口号全都一样时,我们还可以通过协议号来区分(TCP 和 UDP)。

1.3 端口号的确定

  • 标准既定的端口号:这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。例如 HTTP、FTP、TELNET 等广为使用的应用协议中所使用的端口号就是固定的。这些端口号被称为知名端口号,分布在 0~1023 之间;除知名端口号之外,还有一些端口号被正式注册,它们分布在 1024~49151 之间,不过这些端口号可用于任何通信用途。
  • 时序分配法:服务器有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。在这种方法下,客户端应用程序完全可以不用自己设置端口号,而全权交给操作系统进行分配。动态分配的端口号范围在 49152~65535 之间。

1.4 端口号与协议

  • 端口号由其使用的传输层协议决定。因此,不同的传输层协议可以使用相同的端口号。
  • 此外,那些知名端口号与传输层协议并无关系。只要端口一致都将分配同一种应用程序进行处理。

2. UDP

  • UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。
  • 并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为。
  • 此外,传输途中出现丢包,UDP 也不负责重发。
  • 甚至当包的到达顺序出现乱序时也没有纠正的功能。
  • 如果需要以上的细节控制,不得不交由采用 UDP 的应用程序去处理。
  • UDP 常用于一下几个方面:1.包总量较少的通信(DNS、SNMP等);2.视频、音频等多媒体通信(即时通信);3.限定于 LAN 等特定网络中的应用通信;4.广播通信(广播、多播)。

3. TCP

  • TCP 与 UDP 的区别相当大。它充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。
  • 此外,TCP 作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
  • 根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)。

3.1 三次握手(重点)

  • TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。
  • 所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。

下面来看看三次握手的流程图:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

三次握手

  • 第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。
  • 第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。
  • 第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。

3.2 四次挥手(重点)

  • 四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。
  • 由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。

下面来看看四次挥手的流程图:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

四次挥手

  • 中断连接端可以是客户端,也可以是服务器端。
  • 第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。
  • 第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。
  • 第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。
  • 第四次挥手:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。

上面是一方主动关闭,另一方被动关闭的情况,实际中还会出现同时发起主动关闭的情况,

具体流程如下图:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

同时挥手

3.3 通过序列号与确认应答提高可靠性

  • 在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答(ACK)。当发送端将数据发出之后会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。反之,则数据丢失的可能性很大
  • 在一定时间内没有等待到确认应答,发送端就可以认为数据已经丢失,并进行重发。由此,即使产生了丢包,仍然能够保证数据能够到达对端,实现可靠传输。
  • 未收到确认应答并不意味着数据一定丢失。也有可能是数据对方已经收到,只是返回的确认应答在途中丢失。这种情况也会导致发送端误以为数据没有到达目的地而重发数据。
  • 此外,也有可能因为一些其他原因导致确认应答延迟到达,在源主机重发数据以后才到达的情况也屡见不鲜。此时,源主机只要按照机制重发数据即可。
  • 对于目标主机来说,反复收到相同的数据是不可取的。为了对上层应用提供可靠的传输,目标主机必须放弃重复的数据包。为此我们引入了序列号。
  • 序列号是按照顺序给发送数据的每一个字节(8位字节)都标上号码的编号。接收端查询接收数据 TCP 首部中的序列号和数据的长度,将自己下一步应该接收的序列号作为确认应答返送回去。通过序列号和确认应答号,TCP 能够识别是否已经接收数据,又能够判断是否需要接收,从而实现可靠传输。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

序列号和确认应答

3.4 重发超时的确定

  • 重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过这个时间仍未收到确认应答,发送端将进行数据重发。最理想的是,找到一个最小时间,它能保证“确认应答一定能在这个时间内返回”。
  • TCP 要求不论处在何种网络环境下都要提供高性能通信,并且无论网络拥堵情况发生何种变化,都必须保持这一特性。为此,它在每次发包时都会计算往返时间及其偏差。将这个往返时间和偏差时间相加,重发超时的时间就是比这个总和要稍大一点的值。
  • 在 BSD 的 Unix 以及 Windows 系统中,超时都以0.5秒为单位进行控制,因此重发超时都是0.5秒的整数倍。不过,最初其重发超时的默认值一般设置为6秒左右。
  • 数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2倍、4倍的指数函数延长。
  • 此外,数据也不会被无限、反复地重发。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。

3.5 以段为单位发送数据

  • 在建立 TCP 连接的同时,也可以确定发送数据包的单位,我们也可以称其为“最大消息长度”(MSS)。最理想的情况是,最大消息长度正好是 IP 中不会被分片处理的最大数据长度。
  • TCP 在传送大量数据时,是以 MSS 的大小将数据进行分割发送。进行重发时也是以 MSS 为单位。
  • MSS 在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出建立连接的请求时,会在 TCP 首部中写入 MSS 选项,告诉对方自己的接口能够适应的 MSS 的大小。然后会在两者之间选择一个较小的值投入使用。

3.6 利用窗口控制提高速度

  • TCP 以1个段为单位,每发送一个段进行一次确认应答的处理。这样的传输方式有一个缺点,就是包的往返时间越长通信性能就越低。
  • 为解决这个问题,TCP 引入了窗口这个概念。确认应答不再是以每个分段,而是以更大的单位进行确认,转发时间将会被大幅地缩短。也就是说,发送端主机,在发送了一个段以后不必要一直等待确认应答,而是继续发送。如下图所示:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

  •  
  • 窗口控制
  • 窗口大小就是指无需等待确认应答而可以继续发送数据的最大值。上图中窗口大小为4个段。这个机制实现了使用大量的缓冲区,通过对多个段同时进行确认应答的功能。

3.7 滑动窗口控制

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

滑动窗口

  • 上图中的窗口内的数据即便没有收到确认应答也可以被发送出去。不过,在整个窗口的确认应答没有到达之前,如果其中部分数据出现丢包,那么发送端仍然要负责重传。为此,发送端主机需要设置缓存保留这些待被重传的数据,直到收到他们的确认应答。
  • 在滑动窗口以外的部分包括未发送的数据以及已经确认对端已收到的数据。当数据发出后若如期收到确认应答就可以不用再进行重发,此时数据就可以从缓存区清除。
  • 收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置。这样可以顺序地将多个段同时发送提高通信性能。这种机制也别称为滑动窗口控制。

3.8 窗口控制中的重发控制

在使用窗口控制中, 出现丢包一般分为两种情况:

  • ① 确认应答未能返回的情况。在这种情况下,数据已经到达对端,是不需要再进行重发的,如下图:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

部分确认应答丢失

  • ② 某个报文段丢失的情况。接收主机如果收到一个自己应该接收的序列号以外的数据时,会针对当前为止收到数据返回确认应答。如下图所示,当某一报文段丢失后,发送端会一直收到序号为1001的确认应答,因此,在窗口比较大,又出现报文段丢失的情况下,同一个序列号的确认应答将会被重复不断地返回。而发送端主机如果连续3次收到同一个确认应答,就会将其对应的数据进行重发。这种机制比之前提到的超时管理更加高效,因此也被称为高速重发控制。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

高速重发控制

 

四、网络层中的 IP 协议

  • IP(IPv4、IPv6)相当于 OSI 参考模型中的第3层——网络层。网络层的主要作用是“实现终端节点之间的通信”。这种终端节点之间的通信也叫“点对点通信”。
  • 网络的下一层——数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两端节点之间的数据包传输。
  • IP 大致分为三大作用模块,它们是 IP 寻址、路由(最终节点为止的转发)以及 IP 分包与组包。

1. IP 地址

1.1 IP 地址概述

  • 在计算机通信中,为了识别通信对端,必须要有一个类似于地址的识别码进行标识。在数据链路中的 MAC 地址正是用来标识同一个链路中不同计算机的一种识别码。
  • 作为网络层的 IP ,也有这种地址信息,一般叫做 IP 地址。IP 地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。因此,在 TCP/IP 通信中所有主机或路由器必须设定自己的 IP 地址。
  • 不论一台主机与哪种数据链路连接,其 IP 地址的形式都保持不变。
  • IP 地址(IPv4 地址)由32位正整数来表示。IP 地址在计算机内部以二进制方式被处理。然而,由于我们并不习惯于采用二进制方式,我们将32位的 IP 地址以每8位为一组,分成4组,每组以 “.” 隔开,再将每组数转换成十进制数。如下:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

1.2 IP 地址由网络和主机两部分标识组成

  • 如下图,网络标识在数据链路的每个段配置不同的值。网络标识必须保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。IP 地址的“主机标识”则不允许在同一个网段内重复出现。由此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的 IP 地址都不会相互重叠。即 IP 地址具有了唯一性。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

IP地址的主机标识

  • 如下图,IP 包被转发到途中某个路由器时,正是利用目标 IP 地址的网络标识进行路由。因为即使不看主机标识,只要一见到网络标识就能判断出是否为该网段内的主机。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

IP地址的网络标识

1.3 IP 地址的分类

  • IP 地址分为四个级别,分别为A类、B类、C类、D类。它根据 IP 地址中从第 1 位到第 4 位的比特列对其网络标识和主机标识进行区分。
  • A 类 IP 地址是首位以 “0” 开头的地址。从第 1 位到第 8 位是它的网络标识。用十进制表示的话,0.0.0.0~127.0.0.0 是 A 类的网络地址。A 类地址的后 24 位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16,777,214个。
  • B 类 IP 地址是前两位 “10” 的地址。从第 1 位到第 16 位是它的网络标识。用十进制表示的话,128.0.0.0~191.255.0.0 是 B 类的网络地址。B 类地址的后 16 位相当于主机标识。因此,一个网段内可容纳的主机地址上限为65,534个。
  • C 类 IP 地址是前三位为 “110” 的地址。从第 1 位到第 24 位是它的网络标识。用十进制表示的话,192.0.0.0~223.255.255.0 是 C 类的网络地址。C 类地址的后 8 位相当于主机标识。因此,一个网段内可容纳的主机地址上限为254个。
  • D 类 IP 地址是前四位为 “1110” 的地址。从第 1 位到第 32 位是它的网络标识。用十进制表示的话,224.0.0.0~239.255.255.255 是 D 类的网络地址。D 类地址没有主机标识,常用于多播。
  • 在分配 IP 地址时关于主机标识有一点需要注意。即要用比特位表示主机地址时,不可以全部为 0 或全部为 1。因为全部为 0 只有在表示对应的网络地址或 IP 地址不可以获知的情况下才使用。而全部为 1 的主机通常作为广播地址。因此,在分配过程中,应该去掉这两种情况。这也是为什么 C 类地址每个网段最多只能有 254( 28 - 2 = 254)个主机地址的原因。

1.4 广播地址

  • 广播地址用于在同一个链路中相互连接的主机之间发送数据包。将 IP 地址中的主机地址部分全部设置为 1,就成了广播地址。
  • 广播分为本地广播和直接广播两种。在本网络内的广播叫做本地广播;在不同网络之间的广播叫做直接广播。

1.5 IP 多播

  • 多播用于将包发送给特定组内的所有主机。由于其直接使用 IP 地址,因此也不存在可靠传输。
  • 相比于广播,多播既可以穿透路由器,又可以实现只给那些必要的组发送数据包。请看下图:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

  •  
  • IP 多播
  • 多播使用 D 类地址。因此,如果从首位开始到第 4 位是 “1110”,就可以认为是多播地址。而剩下的 28 位可以成为多播的组编号。
  • 此外, 对于多播,所有的主机(路由器以外的主机和终端主机)必须属于 224.0.0.1 的组,所有的路由器必须属于 224.0.0.2 的组。

1.6 子网掩码

  • 现在一个 IP 地址的网络标识和主机标识已不再受限于该地址的类别,而是由一个叫做“子网掩码”的识别码通过子网网络地址细分出比 A 类、B 类、C 类更小粒度的网络。这种方式实际上就是将原来 A 类、B 类、C 类等分类中的主机地址部分用作子网地址,可以将原网络分为多个物理网络的一种机制。
  • 子网掩码用二进制方式表示的话,也是一个 32 位的数字。它对应 IP 地址网络标识部分的位全部为 “1”,对应 IP 地址主机标识的部分则全部为 “0”。由此,一个 IP 地址可以不再受限于自己的类别,而是可以用这样的子网掩码自由地定位自己的网络标识长度。当然,子网掩码必须是 IP 地址的首位开始连续的 “1”。
  • 对于子网掩码,目前有两种表示方式。第一种是,将 IP 地址与子网掩码的地址分别用两行来表示。以 172.20.100.52 的前 26 位是网络地址的情况为例,如下:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

  • 第二种表示方式是,在每个 IP 地址后面追加网络地址的位数用 “/ ” 隔开,如下:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

2. 路由

  • 发送数据包时所使用的地址是网络层的地址,即 IP 地址。然而仅仅有 IP 地址还不足以实现将数据包发送到对端目标地址,在数据发送过程中还需要类似于“指明路由器或主机”的信息,以便真正发往目标地址。保存这种信息的就是路由控制表。
  • 该路由控制表的形成方式有两种:一种是管理员手动设置,另一种是路由器与其他路由器相互交换信息时自动刷新。前者也叫做静态路由控制,而后者叫做动态路由控制。
  • IP 协议始终认为路由表是正确的。然后,IP 本身并没有定义制作路由控制表的协议。即 IP 没有制作路由控制表的机制。该表示由一个叫做“路由协议”的协议制作而成。

2.1 IP 地址与路由控制

  • IP 地址的网络地址部分用于进行路由控制。
  • 路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
  • 在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

路由控制表与 IP 包发送

3. IP 分包与组包

  • 每种数据链路的最大传输单元(MTU)都不尽相同,因为每个不同类型的数据链路的使用目的不同。使用目的不同,可承载的 MTU 也就不同。
  • 任何一台主机都有必要对 IP 分片进行相应的处理。分片往往在网络上遇到比较大的报文无法一下子发送出去时才会进行处理。
  • 经过分片之后的 IP 数据报在被重组的时候,只能由目标主机进行。路由器虽然做分片但不会进行重组。

3.1 路径 MTU 发现

  • 分片机制也有它的不足。如路由器的处理负荷加重之类。因此,只要允许,是不希望由路由器进行 IP 数据包的分片处理的。
  • 为了应对分片机制的不足,“路径 MTU 发现” 技术应运而生。路径 MTU 指的是,从发送端主机到接收端主机之间不需要分片是最大 MTU 的大小。即路径中存在的所有数据链路中最小的 MTU 。
  • 进行路径 MTU 发现,就可以避免在中途的路由器上进行分片处理,也可以在 TCP 中发送更大的包。

4. IPv6

  • IPv6(IP version 6)是为了根本解决 IPv4 地址耗尽的问题而被标准化的网际协议。IPv4 的地址长度为 4 个 8 位字节,即 32 比特。而 IPv6 的地址长度则是原来的 4 倍,即 128 比特,一般写成 8 个 16 位字节。

4.1 IPv6 的特点

  • IP 得知的扩大与路由控制表的聚合。
  • 性能提升。包首部长度采用固定的值(40字节),不再采用首部检验码。简化首部结构,减轻路由器负担。路由器不再做分片处理。
  • 支持即插即用功能。即使没有DHCP服务器也可以实现自动分配 IP 地址。
  • 采用认证与加密功能。应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能。
  • 多播、Mobile IP 成为扩展功能。

4.2 IPv6 中 IP 地址的标记方法

  • 一般人们将 128 比特 IP 地址以每 16 比特为一组,每组用冒号(“:”)隔开进行标记。
  • 而且如果出现连续的 0 时还可以将这些 0 省略,并用两个冒号(“::”)隔开。但是,一个 IP 地址中只允许出现一次两个连续的冒号。

4.3 IPv6 地址的结构

  • IPv6 类似 IPv4,也是通过 IP 地址的前几位标识 IP 地址的种类。
  • 在互联网通信中,使用一种全局的单播地址。它是互联网中唯一的一个地址,不需要正式分配 IP 地址。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

4.4 全局单播地址

  • 全局单播地址是指世界上唯一的一个地址。它是互联网通信以及各个域内部通信中最为常用的一个 IPv6 地址。
  • 格式如下图所示,现在 IPv6 的网络中所使用的格式为,n = 48,m = 16 以及 128 - n - m = 64。即前 64 比特为网络标识,后 64 比特为主机标识。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

全局单播地址

4.5 链路本地单播地址

  • 链路本地单播地址是指在同一个数据链路内唯一的地址。它用于不经过路由器,在同一个链路中的通信。通常接口 ID 保存 64 比特版的 MAC 地址。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

链路本地单播地址

4.6 唯一本地地址

  • 唯一本地地址是不进行互联网通信时所用的地址。
  • 唯一本地地址虽然不会与互联网连接,但是也会尽可能地随机生成一个唯一的全局 ID。
  • L 通常被置为 1
  • 全局 ID 的值随机决定
  • 子网 ID 是指该域子网地址
  • 接口 ID 即为接口的 ID

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

唯一本地地址

4.7 IPv6 分段处理

  • IPv6 的分片处理只在作为起点的发送端主机上进行,路由器不参与分片。
  • IPv6 中最小 MTU 为 1280 字节,因此,在嵌入式系统中对于那些有一定系统资源限制的设备来说,不需要进行“路径 MTU 发现”,而是在发送 IP 包时直接以 1280 字节为单位分片送出。

4.8 IP 首部(暂略)

5. IP 协议相关技术

  • IP 旨在让最终目标主机收到数据包,但是在这一过程中仅仅有 IP 是无法实现通信的。必须还有能够解析主机名称和 MAC 地址的功能,以及数据包在发送过程中异常情况处理的功能。

5.1 DNS

  • 我们平常在访问某个网站时不适用 IP 地址,而是用一串由罗马字和点号组成的字符串。而一般用户在使用 TCP/IP 进行通信时也不使用 IP 地址。能够这样做是因为有了 DNS (Domain Name System)功能的支持。DNS 可以将那串字符串自动转换为具体的 IP 地址。
  • 这种 DNS 不仅适用于 IPv4,还适用于 IPv6。

5.2 ARP

  • 只要确定了 IP 地址,就可以向这个目标地址发送 IP 数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个 IP 地址所对应的 MAC 地址。
  • ARP 是一种解决地址问题的协议。以目标 IP 地址为线索,用来定位下一个应该接收数据分包的网络设备对应的 MAC 地址。不过 ARP 只适用于 IPv4,不能用于 IPv6。IPv6 中可以用 ICMPv6 替代 ARP 发送邻居探索消息。
  • RARP 是将 ARP 反过来,从 MAC 地址定位 IP 地址的一种协议。

5.3 ICMP

  • ICMP 的主要功能包括,确认 IP 包是否成功送达目标地址,通知在发送过程当中 IP 包被废弃的具体原因,改善网络设置等。
  • IPv4 中 ICMP 仅作为一个辅助作用支持 IPv4。也就是说,在 IPv4 时期,即使没有 ICMP,仍然可以实现 IP 通信。然而,在 IPv6 中,ICMP 的作用被扩大,如果没有 ICMPv6,IPv6 就无法进行正常通信。

5.4 DHCP

  • 如果逐一为每一台主机设置 IP 地址会是非常繁琐的事情。特别是在移动使用笔记本电脑、只能终端以及平板电脑等设备时,每移动到一个新的地方,都要重新设置 IP 地址。
  • 于是,为了实现自动设置 IP 地址、统一管理 IP 地址分配,就产生了 DHCP(Dynamic Host Configuration Protocol)协议。有了 DHCP,计算机只要连接到网络,就可以进行 TCP/IP 通信。也就是说,DHCP 让即插即用变得可能。
  • DHCP 不仅在 IPv4 中,在 IPv6 中也可以使用。

5.5 NAT

  • NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。
  • 除转换 IP 地址外,还出现了可以转换 TCP、UDP 端口号的 NAPT(Network Address Ports Translator)技术,由此可以实现用一个全局 IP 地址与多个主机的通信。
  • NAT(NAPT)实际上是为正在面临地址枯竭的 IPv4 而开发的技术。不过,在 IPv6 中为了提高网络安全也在使用 NAT,在 IPv4 和 IPv6 之间的相互通信当中常常使用 NAT-PT。

5.6 IP 隧道

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

 

夹着 IPv4 网络的两个 IPv6 网络

  • 如上图的网络环境中,网络 A 与网络 B 之间无法直接进行通信,为了让它们之间正常通信,这时必须得采用 IP 隧道的功能。
  • IP 隧道可以将那些从网络 A 发过来的 IPv6 的包统合为一个数据,再为之追加一个 IPv4 的首部以后转发给网络 C。
  • 一般情况下,紧接着 IP 首部的是 TCP 或 UDP 的首部。然而,现在的应用当中“ IP 首部的后面还是 IP 首部”或者“ IP 首部的后面是 IPv6 的首部”等情况与日俱增。这种在网络层的首部后面追加网络层首部的通信方法就叫做“ IP 隧道”。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
太大了,分了四个包<br>目 录<br>译者序<br>前言<br>第一部分 TCP/IP基础<br>第1章 开放式通信模型简介 1<br>1.1 开放式网络的发展 1<br>1.1.1 通信处理层次化 2<br>1.1.2 OSI参考模型 3<br>1.1.3 模型的使用 5<br>1.2 TCP/IP参考模型 7<br>1.3 小结 7<br>第2章 TCP/IP和Internet 8<br>2.1 一段历史 8<br>2.1.1 ARPANET 8<br>2.1.2 TCP/IP 9<br>2.1.3 国家科学基金会(NSF) 9<br>2.1.4 当今的Internet 12<br>2.2 RFC和标准化过程 12<br>2.2.1 获得RFC 13<br>2.2.2 RFC索引 13<br>2.2.3 有关RFC的幽默 13<br>2.3 Internet服务简介 13<br>2.3.1 Whois和Finger 14<br>2.3.2 文件传输协议 14<br>2.3.3 Telnet 14<br>2.3.4 Email 14<br>2.3.5 WWW 14<br>2.3.6 USENET News 15<br>2.4 Intranet和Extranet概览 15<br>2.4.1 Intranet 15<br>2.4.2 将Intranet对外开放 16<br>2.5 Internet的明天 16<br>2.5.1 下一代Internet(NGI) 16<br>2.5.2 超速骨干网服务 16<br>2.5.3 Internet2(I2) 17<br>2.6 Internet管理组织 17<br>2.6.1 Internet协会 17<br>2.6.2 Internet体系结构组 17<br>2.6.3 Internet工程任务组 17<br>2.6.4 Internet工程指导组 17<br>2.6.5 Internet编号管理局 18<br>2.6.6 Internet名字和编号分配组织<br> (ICANN) 18<br>2.6.7 Internet网络信息中心和其他注<br> 册组织 18<br>2.6.8 RFC编辑 18<br>2.6.9 Internet服务提供商 18<br>2.7 小结 19<br>第3章 TCP/IP概述 20<br>3.1 TCP/IP的优点 20<br>3.2 TCP/IP的层和协议 21<br>3.2.1 体系结构 21<br>3.2.2 传输控制协议 21<br>3.2.3 IP协议 23<br>3.2.4 应用层 25<br>3.2.5 传输层 25<br>3.2.6 网络层 25<br>3.2.7 链路层 25<br>3.3 远程登录(Telnet) 25<br>3.4 文件传输协议(FTP) 25<br>3.5 普通文件传输协议(TFTP) 26<br>3.6 简单邮件传输协议(SMTP) 26<br>3.7 网络文件系统(NFS) 26<br>3.8 简单网络管理协议(SNMP) 27<br>3.9 TCP/IP和系统结合 27<br>3.10 内部网概述 28<br>3.11 小结 28<br>第二部分 命名和寻址<br>第4章 IP网络中的名字和地址 29<br>4.1 IP寻址 29<br>4.1.1 二进制和十进制数 30<br>4.1.2 IPv4地址格式 30<br>4.2 子网的出现 34<br>4.2.1 分子网 35<br>4.2.2 可变长子网掩码(VLSM) 37<br>4.3 无类域前路由(CIDR) 38<br>4.3.1 无类地址 38<br>4.3.2 强化路由汇聚 39<br>4.3.3 超网化 39<br>4.3.4 CIDR怎样工作 39<br>4.3.5 公共地址空间 40<br>4.3.6 RFC 1597和1918 40<br>4.4 小结 40<br>第5章 ARP和RARP 41<br>5.1 使用地址 41<br>5.1.1 子网寻址 41<br>5.1.2 IP地址 43<br>5.2 使用地址解析协议 44<br>5.2.1 ARP cache 45<br>5.2.2 代理ARP 47<br>5.2.3 反向地址解析协议 47<br>5.3 使用ARP命令 47<br>5.4 小结 47<br>第6章 DNS:名字服务器 48<br>6.1 域名系统概述 48<br>6.2 授权局 50<br>6.3 DNS分布数据库 50<br>6.4 域和区 50<br>6.5 Internet顶级域 51<br>6.6 选择一个域名服务器 52<br>6.7 名字服务解析过程 52<br>6.7.1 递归查询 52<br>6.7.2 叠代查询 52<br>6.8 高速缓存 52<br>6.9 反向解析(Pointer)查询 52<br>6.10 DNS安全 52<br>6.11 资源记录 53<br>6.12 小结 54<br>第7章 WINS 55<br>7.1 NetBIOS 55<br>7.2 NetBIOS名字解析 57<br>7.3 动态NetBIOS名字解析 58<br>7.3.1 使用WINS的优点 58<br>7.3.2 WINS如何工作 59<br>7.3.3 配置WINS客户机 60<br>7.3.4 为代理配置WINS 60<br>7.3.5 配置NT 4.0系统 61<br>7.3.6 配置Windows 95或Windows 98<br> 系统 61<br>7.4 安装WINS服务器 61<br>7.5 WINS管理和维护 62<br>7.5.1 加入静态表项 62<br>7.5.2 维护WINS数据库 63<br>7.5.3 备份WINS数据库 65<br>7.5.4 备份WINS注册项 65<br>7.5.5 恢复WINS数据库 65<br>7.5.6 压缩WINS数据库 66<br>7.5.7 WINS复制参与者 66<br>7.5.8 WINS实现建议 67<br>7.6 集成WINS和DNS名字解析服务 67<br>7.7 DHCP服务WINS选项 67<br>7.8 通过LMHOSTS进行NetBIOS名字<br> 解析 68<br>7.9 小结 69<br>第8章 地址发现协议(BOOTP和DHCP) 71<br>8.1 “引导”协议(BOOTP) 71<br>8.2 动态主机配置协议(DHCP) 72<br>8.2.1 DHCP如何工作 72<br>8.2.2 理解租用地址 73<br>8.3 管理地址池 74<br>8.4 DHCP能处理的其他分配 75<br>8.4.1 注意重载 75<br>8.4.2 其他分配 75<br>8.5 小结 76<br>第三部分 IP和相关协议<br>第9章 IP协议家族 77<br>9.1 TCP/IP模型 77<br>9.1.1 解剖TCP/IP模型 78<br>9.1.2 协议组件 78<br>9.2 理解网际协议(IP) 79<br>9.2.1 IPv4结构 79<br>9.2.2 IP做什么 80<br>9.3 理解传输控制协议(TCP) 81<br>9.3.1 TCP头结构 81<br>9.3.2 TCP做什么 83<br>9.4 理解用户数据报协议(UDP) 85<br>9.4.1 UDP头结构 85<br>9.4.2 UDP能做什么 85<br>9.4.3 TCP和UDP 86<br>9.5 小结 86<br>第10章 IPv6 87<br>10.1 IPv6数据报 87<br>10.1.1 优先级分类 88<br>10.1.2 流标识 89<br>10.1.3 128位IP地址 89<br>10.1.4 IP扩展头 90<br>10.2 多IP地址主机 91<br>10.3 单播、组播和任一播头 91<br>10.4 从IPv4到IPv6的过渡 93<br>10.5 小结 94<br>第四部分 IP互联<br>第11章 IP网络中的路由 95<br>11.1 路由基本知识 95<br>11.1.1 静态路由 96<br>11.1.2 距离-向量路由 99<br>11.1.3 链路-状态路由 100<br>11.2 IP网络中的收敛 102<br>11.2.1 适应拓扑变化 102<br>11.2.2 收敛时间 106<br>11.3 计算IP网络中的路由 106<br>11.3.1 存储多条路由 107<br>11.3.2 初始化更新 107<br>11.3.3 路由度量标准 107<br>11.4 小结 108<br>第12章 路由信息协议(RIP) 109<br>12.1 理解RFC1058 109<br>12.1.1 RIP报文格式 109<br>12.1.2 RIP路由表 111<br>12.2 操作机制 112<br>12.2.1 计算距离向量 113<br>12.2.2 更新路由表 116<br>12.2.3 寻址问题 118<br>12.3 拓扑变化 120<br>12.3.1 收敛 120<br>12.3.2 计值到无穷 122<br>12.4 RIP的限制 127<br>12.4.1 跳数限制 128<br>12.4.2 固定度量 128<br>12.4.3 对路由表更新反应强烈 128<br>12.4.4 收敛慢 128<br>12.4.5 缺乏负载均衡 128<br>12.5 小结 129<br>第13章 开放式最短路径优先 130<br>13.1 OSPF起源 130<br>13.2 理解RFC 2328 OSPF,版本2 130<br>13.2.1 OSPF区 131<br>13.2.2 路由更新 134<br>13.3 研究OSPF数据结构 136<br>13.3.1 HELLO报文 137<br>13.3.2 数据库描述报文 137<br>13.3.3 链路-状态请求报文 138<br>13.3.4 链路-状态更新报文 138<br>13.3.5 链路-状态应答报文 140<br>13.4 计算路由 140<br>13.4.1 使用自动计算 140<br>13.4.2 使用缺省路由耗费 141<br>13.4.3 最短路径树 142<br>13.5 小结 144<br>第14章 网关协议 145<br>14.1 网关、桥和路由器 145<br>14.1.1 网关 145<br>14.1.2 网桥 146<br>14.1.3 路由器 146<br>14.1.4 自治系统 146<br>14.2 网关协议:基础知识 146<br>14.3 内部网关协议和外部网关协议 147<br>14.3.1 网关-网关协议(GGP) 147<br>14.3.2 外部网关协议(EGP) 147<br>14.3.3 内部网关协议(IGP) 148<br>14.4 小结 148<br>第五部分 网络服务<br>第15章 互联网打印协议 149<br>15.1 IPP历史 149<br>15.2 IPP和端用户 150<br>15.3 使用HP的IPP实现 151<br>15.4 小结 152<br>第16章 LDAP:目录服务 153<br>16.1 为什么使用目录服务 153<br>16.2 目录服务的功能 153<br>16.3 IP上的目录服务 154<br>16.4 OSI X.500目录模型 156<br>16.4.1 早期的X.500 157<br>16.4.2 今天的X.500 157<br>16.5 LDAP结构 157<br>16.5.1 LDAP层次结构 157<br>16.5.2 名字结构 158<br>16.6 目录系统代理和访问协议 158<br>16.7 轻型目录访问协议 158<br>16.7.1 查询信息 159<br>16.7.2 存储信息 160<br>16.7.3 访问权限和安全 160<br>16.8 LDAP服务器-服务器通信 161<br>16.8.1 LDAP数据互换格式(LDIF) 161<br>16.8.2 LDAP复制 162<br>16.9 设计LDAP服务 162<br>16.9.1 定义需求 162<br>16.9.2 设计策略 163<br>16.9.3 性能 164<br>16.9.4 网络功能 165<br>16.9.5 安全 166<br>16.10 LDAP配置 169<br>16.11 产品环境 169<br>16.11.1 创建计划 170<br>16.11.2 有价值的建议 171<br>16.12 选择LDAP软件 171<br>16.13 小结 174<br>第17章 远程访问协议 175<br>17.1 远程互联 175<br>17.1.1 ISDN 176<br>17.1.2 电缆调制解调器 176<br>17.1.3 数字用户环(DSL) 176<br>17.1.4 无线网络 177<br>17.2 远程认证拨入用户服务(RADIUS) 177<br>17.2.1 RADIUS认证 178<br>17.2.2 记账信息 179<br>17.3 用SLIP、CSLIP和PPP传输IP数<br> 据报文 179<br>17.3.1 串行线路接口协议(SLIP) 179<br>17.3.2 压缩的SLIP(CSLIP) 180<br>17.3.3 点到点协议(PPP) 180<br>17.4 隧道远程访问 184<br>17.4.1 点到点隧道协议(PPTP) 185<br>17.4.2 两层隧道协议(L2TP) 188<br>17.4.3 IPSec 192<br>17.5 小结 194<br>第18章 防火墙 195<br>18.1 使网络安全 195<br>18.2 使用防火墙 196<br>18.2.1 代理服务器 197<br>18.2.2 报文过滤器 198<br>18.3 使服务安全 198<br>18.3.1 电子邮件(SMTP) 198<br>18.3.2 HTTP:万维网 199<br>18.3.3 FTP 199<br>18.3.4 Telnet 199<br>18.3.5 Usenet:NNTP 199<br>18.3.6 DNS 200<br>18.4 建造用户自己的防火墙 200<br>18.5 使用商业防火墙软件 200<br>18.6 小结 202<br>第19章 IP安全 203<br>19.1 使用加密 203<br>19.1.1 公共-私钥加密 204<br>19.1.2 对称私钥加密 205<br>19.1.3 DES、IDEA及其他 205<br>19.2 数字签名认证 206<br>19.3 破译加密的数据 207<br>19.4 保护网络 207<br>19.4.1 登录名和口令 208<br>19.4.2 文件的目录允许权限 208<br>19.4.3 信任关系 209<br>19.4.4 UNIX和Linux系统上的UUCP 209<br>19.5 应付最坏情况 210<br>19.6 小结 210<br>第六部分 实现TCP/IP<br>第20章 一般配置问题 211<br>20.1 安装网卡 211<br>20.1.1 网卡 211<br>20.1.2 资源配置 212<br>20.1.3 安装适配器软件 213<br>20.1.4 重定向器和API 214<br>20.1.5 服务 214<br>20.1.6 NIC接口 215<br>20.2 网络和传输层协议 215<br>20.2.1 IP配置要求 215<br>20.2.2 配置缺省网关地址 216<br>20.2.3 配置名字服务器地址 217<br>20.2.4 配置邮件服务器地址 217<br>20.2.5 注册域名 218<br>20.3 IP配置 218<br>20.4 配置路由表 218<br>20.5 异种协议IP封装 219<br>20.6 小结 220<br>第21章 Windows 98 221<br>21.1 Windows 98网络体系结构 221<br>21.1.1 安装网卡 222<br>21.1.2 更改网卡配置 224<br>21.1.3 当Windows 98引导失败 224<br>21.2 配置Windows 98的TCP/IP 225<br>21.2.1 写在开始之前 225<br>21.2.2 安装TCP/IP 225<br>21.2.3 配置微软的TCP/IP 225<br>21.2.4 DNS配置 227<br>21.2.5 静态配置文件 228<br>21.2.6 注册表配置 229<br>21.2.7 测试TCP/IP 231<br>21.3 小结 232<br>第22章 Windows 98拨号网络 233<br>22.1 配置拨号网络适配器 233<br>22.2 安装拨号网络 234<br>22.3 服务器类型 235<br>22.4 编写脚本 238<br>22.5 多重链接 238<br>22.6 PPTP 239<br>22.6.1 安装及配置PPTP 240<br>22.6.2 建立PPTP连接 240<br>22.7 Windows 98拨号服务器 241<br>22.8 解决拨号网络连接中的问题 242<br>22.8.1 确认DUN配置 242<br>22.8.2 PPP日志 243<br>22.9 小结 243<br>第23章 Windows NT 4.0 244<br>23.1 Windows NT版本 244<br>23.2 体系结构 244<br>23.3 安装Windows NT 4.0 244<br>23.4 配置TCP/IP 246<br>23.4.1 IP地址 246<br>23.4.2 DNS 248<br>23.4.3 WINS地址 248<br>23.4.4 DHCP中继 249<br>23.4.5 路由 250<br>23.5 简单TCP/IP服务 250<br>23.6 远程访问服务(RAS) 250<br>23.7 DHCP服务器 252<br>23.7.1 安装DHCP服务器服务 252<br>23.7.2 控制DHCP服务器服务 253<br>23.7.3 压缩DHCP数据库 253<br>23.7.4 管理DHCP 254<br>23.8 使用Microsoft DNS 256<br>23.8.1 安装DNS 256<br>23.8.2 创建区 257<br>23.8.3 配置逆向域名解功能 258<br>23.8.4 配置DNS与WINS服务器的连<br> 接 259<br>23.8.5 增加辅助名字服务器 259<br>23.9 FTP和HTTP服务 259<br>23.10 TCP/IP打印服务 259<br>23.10.1 安装TCP/IP打印服务 259<br>23.10.2 安装LPR服务 260<br>23.11 Windows 2000新特性 260<br>23.12 小结 261<br>第24章 在Novell NetWare中支持IP 262<br>24.1 Novell与TCP/IP 262<br>24.1.1 IP与NetWare 4 262<br>24.1.2 NetWare 5与Pure IP初始化 262<br>24.2 传统解决方案:NetWare 3.x到<br> NetWare 4.x的IP支持 263<br>24.2.1 IP隧道 264<br>24.2.2 IP中继 264<br>24.2.3 LAN WorkPlace 264<br>24.2.4 IPX-IP网关 265<br>24.2.5 NetWare/IP 265<br>24.3 NetWare 5—Novell对IP的<br> 完全支持 266<br>24.3.1 纯IP 266<br>24.3.2 多协议 266<br>24.4 安装选项 266<br>24.4.1 NetWare 5的IP-Only安装 267<br>24.4.2 IPX-Only安装 267<br>24.4.3 混合TCP/IP安装 268<br>24.5 IP迁移辅助工具 268<br>24.5.1 NDS 268<br>24.5.2 DNS 269<br>24.5.3 DHCP 269<br>24.5.4 DDNS 269<br>24.5.5 SLP 269<br>24.5.6 兼容模式 269<br>24.5.7 迁移代理 270<br>24.6 迁移策略 270<br>24.6.1 使用测试平台 270<br>24.6.2 迁移建议 270<br>24.7 小结 271<br>第七部分 使用TCP/IP应用<br>第25章 Whois和Finger 273<br>25.1 理解Whois协议 273<br>25.1.1 互联网注册 273<br>25.1.2 Whois数据库 274<br>25.1.3 基于Web的Whois 275<br>25.1.4 命令行方式的Whois 276<br>25.1.5 示例 276<br>25.1.6 基于Telnet的Whois 278<br>25.2 扩充Whois 279<br>25.2.1 提示Whois(RWhois) 279<br>25.2.2 WHOIS++ 280<br>25.3 使用Finger 280<br>25.3.1 Finger命令 280<br>25.3.2 Finger 守护进程 282<br>25.3.3 非UNIX环境下的Finger 283<br>25.3.4 Finger的应用 283<br>25.4 相关RFC文档 285<br>25.5 小结 285<br>第26章 文件传输协议 286<br>26.1 FTP和TFTP在网络世界中的作用 286<br>26.2 使用FTP传输文件 286<br>26.2.1 FTP连接 287<br>26.2.2 使用FTP客户端建立连接 288<br>26.2.3 FTP安全 296<br>26.2.4 FTP服务器及守护进程 299<br>26.2.5 匿名FTP访问 299<br>26.3 使用TFTP 300<br>26.3.1 FTP与TFTP的区别 301<br>26.3.2 TFTP命令 301<br>26.4 小结 301<br>第27章 使用Telnet 302<br>27.1 理解Telnet协议 302<br>27.2 Telnet守护进程 303<br>27.3 使用Telnet 304<br>27.3.1 UNIX telnet命令 304<br>27.3.2 Telnet GUI应用 305<br>27.3.3 Telnet命令 305<br>27.3.4 示例 308<br>27.4 高级主题 309<br>27.4.1 安全 309<br>27.4.2 Telnet应用 309<br>27.4.3 使用Telnet访问其他TCP/IP<br> 服务 310<br>27.5 相关RFC文档 312<br>27.6 小结 313<br>第28章 使用r系列实用工具 314<br>28.1 理解r系列命令 314<br>28.1.1 安全问题 314<br>28.1.2 禁止使用r系列命令 315<br>28.1.3 增强r系列命令的安全性 316<br>28.2 使用r系列命令的替代方法 317<br>28.3 r系列命令详解 317<br>28.3.2 相关文件 320<br>28.4 在非UNIX环境下实现r系<br> 列命令的功能 321<br>28.5 小结 322<br>第29章 使用网络文件系统(NFS) 323<br>29.1 什么是NFS 323<br>29.1.1 NFS的历史 323<br>29.1.2 为何使用NFS 323<br>29.2 实现—NFS工作过程 324<br>29.2.1 远程过程调用(RPC)<br> 和外部数据表示(XDR) 324<br>29.2.2 加载类型 324<br>29.3 NFS使用的文件及命令 325<br>29.3.1 NFS守护进程 325<br>29.3.2 与NFS相关的文件 327<br>29.3.3 NFS服务器命令 329<br>29.3.4 NFS客户命令 331<br>29.4 示例:共享及加载NFS文件系统 333<br>29.5 NFS常见问题及解决方案 334<br>29.5.1 不能加载 334<br>29.5.2 不能卸载 334<br>29.5.3 硬加载与软加载 334<br>29.6 相关协议及产品 334<br>29.6.1 WebNFS 335<br>29.6.2 基于PC的NFS及其他客户端<br> 软件 335<br>29.6.3 SMB和CIFS 335<br>29.6.4 其他产品 336<br>29.7 小结 336<br>第八部分 使用基于IP的应用<br>第30章 在应用中集成TCP/IP 337<br>30.1 使用浏览器作为表示层 338<br>30.2 不断增加的Internet应用 338<br>30.3 在已有应用中集成TCP/IP 339<br>30.4 在其他网络中使用TCP/IP 339<br>30.4.1 NetBIOS与TCP/IP 339<br>30.4.2 IPX与UDP 340<br>30.4.3 ARCNET与TCP/IP 340<br>30.5 小结 340<br>第31章 Internet Email协议 341<br>31.1 电子邮件 341<br>31.1.1 电子邮件的历史 341<br>31.1.2 标准及制定标准的组织 341<br>31.2 X.400 341<br>31.3 简单邮件传输协议(SMTP) 343<br>31.3.1 MIME和SMTP 343<br>31.3.2 其他编码标准 344<br>31.3.3 SMTP命令 344<br>31.3.4 SMTP状态码 345<br>31.3.5 扩展SMTP 345<br>31.3.6 检查SMTP的头 346<br>31.3.7 SMTP的优势与不足 347<br>31.4 使用POP和IMAP取回客户邮件 347<br>31.4.1 邮局协议(POP) 347<br>31.4.2 互联网邮件访问协议(IMAP) 348<br>31.4.3 POP3与IMAP4的比较 348<br>31.5 高级主题 349<br>31.6 相关RFC文档及其他参考信息 351<br>31.7 小结 352<br>第32章 HTTP: World Wide Web 353<br>32.1 万维网(WWW) 353<br>32.1.1 Web简史 353<br>32.1.2 Web的发展 354<br>32.2 统一资源定位器 354<br>32.3 Web服务器与浏览器 355<br>32.4 理解HTTP 356<br>32.4.1 HTTP/1.1 356<br>32.4.2 MIME与Web 358<br>32.4.3 HTTP通信示例 358<br>32.5 高级主题 359<br>32.5.1 服务器方功能 359<br>32.5.2 SSL和S-HTTP 359<br>32.6 Web语言 359<br>32.6.1 HTML 360<br>32.6.2 XML 360<br>32.6.3 CGI 361<br>32.6.4 Java 361<br>32.6.5 JavaScript 362<br>32.6.6 动态服务器页面 362<br>32.7 Web的未来 363<br>32.7.1 HTTP-ng 363<br>32.7.2 IIOP 363<br>32.7.3 IPv6 363<br>32.7.4 IPP 363<br>32.8 小结 364<br>第33章 NNTP:互联网新闻组 365<br>33.1 互联网新闻组 365<br>33.2 新闻组和层次 366<br>33.3 网络新闻传输协议 367<br>33.3.1 获取新闻组 367<br>33.3.2 获取消息 369<br>33.3.3 发布消息 370<br>33.4 大量广告(Spamming)和新闻黑洞<br> (Blackholing) 371<br>33.5 小结 371<br>第34章 Web服务 373<br>34.1 Web服务工作概览 373<br>34.2 主流Web服务器 375<br>34.3 运行Apache HTTP Web服务 376<br>34.3.1 下载、安装和配置Apache 376<br>34.3.2 在Windows环境下使用Apache 381<br>34.4 浏览其他Web服务器 383<br>34.5 小结 383<br>第九部分 使用与管理TCP/IP网络<br>第35章 协议配置与调整 385<br>35.1 系统的初始化问题 385<br>35.2 配置文件 390<br>35.2.1 在/etc/protocols文件中定义网<br> 络协议 390<br>35.2.2 在/etc/hosts文件中标识主机 391<br>35.2.3 TCP/IP与/etc/services文件 392<br>35.2.4 inetd守护进程与/etc/inetd.conf<br> 文件 394<br>35.2.5 在/etc/networks文件中设置网络 397<br>35.2.6 DNS客户与/etc/resolv.conf 397<br>35.3 小结 398<br>第36章 配置DNS 399<br>36.1 域名服务器 399<br>36.2 资源记录 400<br>36.3 域名解析 401<br>36.4 配置UNIX或Linux域名服务器<br> (DNS) 401<br>36.4.1 添加资源记录 402<br>36.4.2 完成DNS文件 402<br>36.4.3 启动DNS守护进程 405<br>36.4.4 配置客户端 405<br>36.5 Windows和域名服务器 405<br>36.6 小结 406<br>第37章 网络管理 407<br>37.1 制定网络监控方案 407<br>37.2 网络问题及其解决方案 408<br>37.3 网络管理工具 408<br>37.3.1 使用协议分析器 409<br>37.3.2 专家系统 410<br>37.3.3 基于PC的分析器 410<br>37.3.4 网络管理协议支持 411<br>37.3.5 集成网络仿真/模型工具 411<br>37.4 配置SNMP 412<br>37.4.1 配置Windows SNMP 413<br>37.4.2 配置UNIX SNMP 414<br>37.4.3 SNMP安全属性 414<br>37.4.4 SNMP代理与管理 415<br>37.5 SNMP工具及命令 416<br>37.6 RMON及相关的MIB模型 417<br>37.7 建立网管需求 417<br>37.8 小结 419<br>第38章 SNMP:简单网络管理协议 420<br>38.1 什么是SNMP 420<br>38.2 管理信息基(MIB) 421<br>38.3 使用SNMP 421<br>38.4 UNIX与SNMP 422<br>38.4.1 在UNIX和Linux上安装SNMP 423<br>38.4.2 SNMP命令 424<br>38.5 Windows与SNMP 424<br>38.5.1 Windows NT 425<br>38.5.2 Windows 95、Windows 98和<br> Windows 3.x 425<br>38.6 小结 427<br>第39章 加强TCP/IP传输安全 428<br>39.1 定义所需的网络安全 428<br>39.1.1 什么是网络安全 428<br>39.1.2 为什么网络安全非常重要 429<br>39.1.3 安全级别 429<br>39.1.4 口令与口令文件 430<br>39.1.5 控制对口令的访问 430<br>39.2 加强网络安全 431<br>39.2.1 攻击种类 431<br>39.2.2 加强网络安全 432<br>39.3 应用配置 434<br>39.3.1 Internet守护进程与<br> /etc/inetd.conf 434<br>39.3.2 网络加密软件 436<br>39.3.3 TCP Wrapper 436<br>39.4 使用端口及可信端口 437<br>39.4.1 防火墙 437<br>39.4.2 包过滤 437<br>39.4.3 应用层网关 438<br>39.4.4 其他应用的过滤 438<br>39.5 一般安全事务 438<br>39.5.1 用户帐号维护 438<br>39.5.2 审计 438<br>39.5.3 正确的系统配置 438<br>39.6 小结 438<br>第40章 问题解决工具及要点 440<br>40.1 监视网络行为 440<br>40.2 标准应用程序 440<br>40.2.1 测试基本连接 441<br>40.2.2 ping命令 442<br>40.2.3 解决网络访问故障 443<br>40.3 解决网络接口层问题 449<br>40.4 解决网络层问题 449<br>40.4.1 TCP/IP配置参数 449<br>40.4.2 IP地址配置问题 450<br>40.5 解决TCP和UDP问题 453<br>40.6 解决应用层问题 455<br>40.7 小结 455<br>第十部分 附 录<br>附录A RFC及标准化 457<br>附录B Linux 469<br>附录C 简写与缩略语 480<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值