计算机网络基础(TCP/IP)

目录

1  OSI参考模型

1.1  OSI参考模型

1.2  分层结构的优势

1.3  分层结构的工作原理

1.4  OSI参考模型各层次简介

1.4.1  物理层(Physical)

1.4.2  数据链路层(Date Link)

1.4.3  网络层(Network)

1.4.4  传输层(Transprot)

1.4.5  OSI 5-7层

2  TCP/IP参考模型

2.1  TCP/IP参考模型层次

2.1.1  接入层

2.1.2  网络层

2.1.3  传输层

2.1.4  应用层

2.2  TCP/IP主要协议

2.2.1  网络层协议

2.2.2  传输层协议

2.2.3  应用层协议

3  网络基本概念

4  以太网简介

4.1  以太网的结构

4.2  以太网络的MAC方法

4.3  其他网络的MAC方法

4.4  以太网络的发展

4.4.1  传统以太网

4.4.2  高速以太网

4.5  以太网的网络地址

4.6  以太网的帧结构

5  以太网交换原理

5.1  缆段微化的概念

5.2  桥和交换机

5.3  共享以太网和交换以太网

5.3.1  共享式以太网

5.3.2  交换以太网

5.4  交换机的功能

5.4.1  交换机的地址学习

5.4.2  交换机的转发与过滤

5.4.3  防止回路

5.4.4  冲突域

5.4.5  广播域

5.4.6  交换机的特性

5.4.7  转发的分类

6  广域网简介

6.1  通信基本概念

6.1.1  串行/并行

6.1.2  异步与同步

6.1.3  单工/半双工/全双工

6.1.4  TDM/FDM/WDM

6.1.5  电路交换/分组交换/信元交换

6.1.6  信元交换

6.2  接入网络和核心网络

6.3  接入网络

6.3.1  电话网络

6.3.2  ISDN网络

6.3.3  ADSL

6.3.4  Cable

6.3.5  FTTx+LAN(光纤到小区+局域网)

6.3.6  无线接入方法

6.4  核心网络(骨干网络)

6.4.1  E1/T1

6.4.2  X.25

6.4.3  Frame Relay(帧中继)

6.4.4  ATM

7  IP协议

7.1  IP地址

7.1.1  IP地址基础

7.1.2  有类地址

7.1.3  无类地址

7.1.4  二进制数和十进制数的转换

7.1.5  子网举例

7.1.6  超网举例

7.1.7  IP地址紧张

8  ARP协议

8.1.1  ARP协议功能

8.1.2  ARP协议的实现

8.1.3  ARP流程举例

8.1.4  Cache的问题

8.1.5   ARP命令

8.2  RARP

8.3  IARP

9  ICMP协议

9.1  协议功能

9.2  ICMP消息类别举例

9.2.1  Echo Request/Reply

9.2.2  目的不可达消息

9.2.3  源抑制

9.2.4  路由重定向

9.2.5  TTL超时信息

9.2.6  IP包头错误

10  IP路由原理

10.1  IP头结构

10.2  路由工作方式

10.3  路由的分类

10.4  路由的要素

11  IPv6简介

11.1  IPv6的优势

11.2  IPv6地址

11.3  IPv6地址分类

11.4  IPv6地址前缀

11.5  IPv6的数据包格式

12  TCP/UDP协议

12.1  TCP与UDP

12.2  端口号

12.3  TCP的连接建立和数据传输

12.3.1  TCP的连接建立

12.3.2  TCP的数据传输

12.4  UDP协议

13  应用区分和可靠性保障

13.1  TCP协议头结构

13.2  UDP协议头结构

13.3  其他层次的协议区分

13.4  其他层次的可靠性保障

14  DNS协议

14.1  名字空间

14.2  域名服务器

14.3  DDNS

14.4  其他目录和名称协议简介

14.4.1  NIS(网络信息系统)

14.4.2  WINS(Windows网际名字系统)

14.4.3  LDAP(轻量目录访问协议)

15  其他应用层协议简介

15.1  TELNET

15.2  FTP

15.3  TFTP

15.4  SMTP

15.5  POP3

15.6  HTTP

15.7  RTP和RTCP

15.8  SNMP

16  总结:网络基础知识图解

16.1  SOI参考模型

16.2  TCP/IP RM

16.3  协议实例

16.4  互联设备

16.5  地址类型

16.6  数据单位


参考教材:

       《TCP/IP权威教程》第七版

       《数据通讯与网络》第二版

       《TCP/IP详解》卷一 协议

        多特教育网络基础视频

      

1  OSI参考模型

Ø  OSI参考模型

Ø  分层结构的优势和工作原理

Ø  每个层次功能的介绍

1.1  OSI参考模型

OSI是开放系统互连参考模型 (Open System Interconnect)的简称;是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型;是为了促进网络的标准化,使各个厂家之间的设备实现互联互通互操作。

它是整个网络构建的基石。

(OSI七层模型图)

物理层、它负责连路上bit流的传输。

数据链路层、负责网络内部的帧的传输。

网络层、负责网络两点间的可达性。

传输层、负责网间的两点间提供一个传输实体,保证端到端的传输。

会话层、会话的控制。

表示层、做数据表达和数据格式的转换。

应用层、它是用户具体的服务,具体的功能。

这七层是从上到下排列的,我们所要传输的数据(信息)要从一到七顺次经过这七层的处理,最后变成在链路上传输的bit流。这是整个网络传输的工作模式。

1.2  分层结构的优势

在上世纪七、八十年代出现了,各厂家提出了各自的协议,生产了自己产品,那么这些产品在网络上是不能互通的,为了实现网络互通,国际标准化组织致力于制定一个标准化的网络协议,所以制定了OSI,在80年代末基本成型,就形成了我们现在看到的七层模型。

Ø 各层间相互独立,某一层的变化不会影响其他层的工作。

Ø 促进整个网络的标准化。

Ø 使网络易于实现和维护;不同的层去实现不同的功能,这样易于实现和维护。

Ø 实现互联、互通、互操作。

1.3  分层结构的工作原理

Ø 纵向通信

² 在分层结构种,低层为高层提供服务,高层功能使用低层功能提供的服务。

所以在纵向是调用和被调用的关系。

Ø 横向通信

² 分层结构中,对应的分层协同工作,以保证能够成功的完成通信。比如在即网络层上进行通信,两台机器都要安装了ip协议,那么这两台机子的网络层才能进行横向的通信。

1.4  OSI参考模型各层次简介

1.4.1  物理层(Physical)

Ø 通过物理链路传输比特(bit)流

物理层的功能时传输比特流(bit stream),所谓bit流是指流过物理层的介质或者说物理层的设备。比特流一个显著的含义是说它不知这个格式或者结构,物理层并不需要关心在它所传输的bit流的每个bit所代表的是什么,比如代表的网络的地址还是用户的邮件;他只需要把这个bit从链路的一端传输到另一端,物理层的工作就完成了。

Ø 中继器和集线器(物理层的硬件设备)

不同的链路需要连接,或者说需要中继,在这里经常遇见两种设备,一类叫做中继器(repeater);一类叫做集线器(Hub)。

中继器和集线器共同的特点信号的接续,整形,放大和传输。也就是说他不对数据做处理,它只对信号做出处理。他们能够信号中继,能够使信号整形,能够使信号放大,传输更远的距离;但在这个过程中中继器和集线器并不知道所代表的数据的含义,因为他们是工作在物理层的。

1.4.2  数据链路层(Date Link)

数据链路层一个典型的特点是网内的数据传输。

Ø 在网络内部传输数据帧(Frame);这句话有两个意思,一个是网络内部,一个是传输帧。

² 网络内部,一个网里边就叫网络内部,比如一个以太网就是一个网,网络内部的传输用以太来传输,以太是一种数据链路层技术;一个帧中继网也是一个网络,帧中继网内部用帧中继( Frame Relay)来传输,帧中继是一种数据链路层技术。

² 数据帧是一种数据类型,他有帧头,帧尾;在帧头里面有地址信息,控制信息;帧尾有校验信息,帧中间是数据。

Ø 硬件地址或物理地址(即Mac地址)

² 硬件地址在局域网,在以太网中我们也把它称作网卡地址,这个地址标识着当前的机器,当前的网络接口,当前的系统,这是一种链路层地址;比如说在以太网里面,每一片网卡都有自己唯一的以太地址,这种地址本身就是一种硬件地址或者物理地址,在以太网中的寻址,寻找的就是这样的物理地址。

Ø 两个子层;数据链路层在OSI分层结构中被分做两个子层。下面的子层叫做mac,上面的子层叫做LLC.

² 介质访问控制(MAC:Media Access Control),它负责控制多台计算机怎么样共享一个公共的介质。

² 逻辑链路控制(LLC:Logical Link Control),它负责是高层次的逻辑链路,包括校验,成帧。

Ø 网桥和交换机(数据链路层最主要的两种硬件设备);

² 这些设备是有一些智能的;网桥和交换机通过识别数据链路层的物理地址来决定数据如何转发;所以网桥和交换机比物理层所使用的设备比如中继器和集线器要高级的多,它们通过地址去决策数据的转发,但是它所转发的数据是帧,它所查询的地址是MAC地址,也是数据链路层的地址。

1.4.3  网络层(Network)

它的典型特征是网间的数据传输。

Ø 基于网络层地址进行不同网络系统间的路径选择

² 网络层负责的是网与网之间的数据传输;换句话说他不是解决如何找到一个主机的问题,它是要解决如何找到一个网络的问题,这实际是一个更宏观的概念;首先我们要找到一个网络,在下边才是找到这个网络内部的某一台主机。所以说网络层解决的是找到目标网络的问题。

Ø 数据单位为数据包(Packet)

² 在网络层里边数据结构叫做数据包(Packet),比如我们说IP在网络传送,因为IP是一种网络层的协议,所以按照IP协议所组成的数据结构或者叫做数据单位,它是一个网络层的数据结构,叫做Packet,所以我们把它叫做IP数据包。

Ø 差错校验和可能的修复

² 在网络层可以进行这些数据包的传输,分割,重组,也有数据的差错校验和可能修复的机制。不同的协议这些的校验和修复的实现方法会有所不同。

Ø 可能的数据流量控制

² QoS

Ø 路由器

² 网与网之间的衔接设备是路由器(Router),路由器负责的是什么呢?简单的来说一句话:网间的路径选择和数据转发。

1.4.4  传输层(Transprot)

输出层是保证一个端到端的传输,或者说是保证一个传输实体

Ø 在不同的物理节点上的应用程序间建立连接以传输数据

Ø 将数据组织成数据段(Segment)

² 在传输层数据结构叫做Segment,在中文中我们经常把它翻译成数据段。

Ø 连接类型:传输层可能支持两种连接类型;一个叫做面向连接的,一个叫做无连接的。TCP/UDP

² 面向连接(Connection-oriented)

² 无连接(Connectionless)

Ø 传输层地址(即端口号 Port)

² 在传输层有一种特殊的寻址方式去表示特定应用程序,这也就是我们所说的端口号Port,Port我们可以把它理解成一种应用程勋的应用标识。TCP/UDP时在做详解。

1.4.5  OSI 5-7层

它们的功能很多时候都是由软件来实现的,这也使得它们的层次在很多时候并不是非常的清晰,在很多软件里,有可能同时实现几层的功能。

Ø 会话层

² 建立、管理和终止会话

Ø 表示层

² 所做的主要工作是数据的格式的表达,比如各种各样的图像格式,各种各样的文本语种等等;和数据格式转化,比如说加密解密;压缩解压缩。

Ø 应用层

² 实现具体的应用功能,比如大家经常使用Web浏览所使用HTTP协议,文件传输的FTP协议,远程登录所使用Telnet协议等等。实现具体的应用功能的一些协议它们都属于第七层也就是应用层。

2  TCP/IP参考模型

OSI七层模型标准化组织制定的,是一种国际标准;而TCP/IP是一种工业标准,并不是国际标准。如果说参考模型,一套标准就够了,因为参考模型就是让大家都照着这一套模型去做东西,生产产品,去开发技术,为什么现在有两套技术,这主要是历史发展的原因,那么大家知道整个TCP/IP的网络与Internet它是从一个军事的网络ARPANET起步,逐渐发展起来的,经历了由军事向教学科研,向商业应用这么一个转变过程,所以他的历史是相对久远的,那么整个TCP/IP协议在80年代中期已经比较成熟和稳定了;而OSI参考模型是80年代末期才制定出来,所从时间来讲,TCP/IP模型完成稳定下来要早于OSI模型;

从Internet的发展过程来讲,大家知道91年有了浏览器,有了web上网方式;那么从那个时候开始Internet经历了爆炸式的发展,而Ineternet的基石是TCP/IP协议;所以说OSI参考模型有一点可以说叫做生不逢时,它在80年代模型被制定出来,大家本来应该都遵从它,来做开发技术,生产产品;但实际上,很快,90年初期,以TCP/IP为基础的Internet爆炸性的发展起来了,而且由于两种协议体系内部的一些不同,OSI的结构更加严谨,而实现成本更加高一些;TCP/IP相对宽松,实现简单,成本低,并且随着Ineternet迅速发展起来而发展起来,历史的发展决定了现在在网络工程上,TCP/IP是主流的协议,所以TCP/IP参考模型也就成了主流模型。

关于这两套模型之间的实际上真是有非常大的差别吗?从参考模型上来讲,对于工程人员或者初学者来讲,这两套参考模型并没有很大差别。

从两种模型的对比可以看到,TCP/IP模型之间有四个层次的结构。从结构上来讲他们两者是不矛盾的;

当然在很多书上,它不把TCP/IP叫做一个参考模型(reference model)。它仅把TCP/IP叫做一个协议栈(protocol stack)。叫TCP/IP相关的一些协议组成的协议栈。无论叫什么他们都是一样的,包含两个内容,第一个是TCP/IP参考模型的层次结构,第二个是TCP/IP模型的每层的协议。

Ø TCP/IP参考模型

Ø TCP/IP主要协议

2.1  TCP/IP参考模型层次

2.1.1  接入层

最下面一层叫做接入层

Ø  网络接入层从功能上来讲它对应OSI物理层和数据链路层,并实现与他们相同的功能,其中包括LAN(局域网)和WAN(广域网)的技术细节。这一层我们把它叫做承载层、数据接入层(AccessLayer)、(Carryinglayer),还把它叫做主机到网络层(Host-to-NetworkLayer)。

2.1.2  网络层

Ø  在接入层上面,也就是第二层,我们把它叫做网络层(Network Layer),主要是有IP协议来支撑的。我们也把它叫做网间网层(Internet Layer)。最佳路径的选择和数据包交换都发生在这一层。

Ø  这一层网络层的目的或者说实现的功能和OSI的第三层是一样的,是运送数据包,讲数据包送达目的地,换句话说是按照包的目的地址进行寻址的,而不在乎走的是哪个路径或者网络。这一层,TCP/IP协议里有一个特定协议叫做互联网协议(Internet Protocol)也就是我们经常所说的IP协议,在整个Internet上,这个协议是处于一个基石的位置,他提供了一种基本的端到端的可达性的保证方法。端到端可导性也就是说不管Internet有多大,一台机器到另外一台这两点之间通过IP这种协议就是可以到达。那么网络层的功能和OSI的第三层一样,包括最佳路径的选择,数据包的转发。

2.1.3  传输层

Ø  传输层负责处理有关服务质量等事项,如可靠度、流量控制和错误校正。大家斗志TCP是有重传的,就是一旦传错了,它会传第二遍,包括流量的控制,错误的校验等等,这一层不仅可以协调我们所说的可靠性,流量控等,而且可以协调传输速率的差异,这个传输速率的差异是指在传输层会有一些叫做缓冲区的实现,也就是说每台主机如果实现了IP这个协议栈,它会有一定的缓冲空间,那么从下层接到的数据会在这个缓冲的空间里边进行重组等待上传给上层应用;同样应用层发现来的数据也会在这个缓冲的空间进行组织,然后发送给网络层;也就说它提供不同服务质量,不同可靠性保证的传输服务,并且协调发送端和目标端的传输度差异。这一层也称为主机到主机层(Host-to-Host)。

2.1.4  应用层

TCP/IP协议的第四层叫做应用层,他包含了OSI的上三层的所有功能,所以在TCP/IP的协议栈里面,无论是会话表示,还是最高的应用都归位了这一层。

Ø  应用层包含会话层和表示层的功能

Ø  TCP/IP将所有应用程序相关的内容都归为一层

2.2  TCP/IP主要协议

首先应该是接入层协议,但是TCP/IP模型对于对下面一层也就是数据接入层(Access Layer),它的规定是没有的,那么TCP/IP本身,可以运行于任何现有的网络接入方法或者网络承载方法上。比如说以太的传输方法,TCP/IP可以跑在以太上面,那么令牌环,或者帧中继网络方法都可以跑TCP/IP协议。实际上TCP/IP协议栈本身并没有定义接入层或者叫承载层的协议,它是可以基于几乎任何的现有的承载方法。

  所以在整个TCP/IP协议栈里面我们最先见到是网络层。

2.2.1  网络层协议

Ø  IP协议(Internet Protocol)

²  IP是网络层最主要的一个协议,IP是保证整个TCP/IP 协议栈在网络上运用的时候可以达到端到端的可达性。所以有了IP协议, 在因特网上以太机器就可以找到另外以太机器,这是IP协议的功能或者说目的。

在网络层上有两个很重要的辅助协议,ARP协议和ICMP协议;

Ø  ARP协议(Address ResolutionProtocol,地址转换协议)

²  顾名思义它是一种地址解析协议,它所解析的是二层和三层的对应关系,IP网络他的下层是有以太支持的,找到一个目标主机,这个目标主机应该有他的IP地址,应该有它的以太地址,那么对两个地址之间,也就是一个机器在两个不同的层次上有两个不同地址,那么这两个地址之间它的对应关系和转换是有谁来负责的呢,他是有ARP来负责。

Ø  ICMP协议(Internet ControlManange Protlcol,因特网控制管理协议)

²  因特网控制报文协议,所谓IP相关控制有通知信息和错误信息的控制两种。比如说我测试一下网络的连通性,就是由ICMP协议的一部分去完成的。我可以报告目标的网络,目标的主机的不可达。

²  ICMP它是去做IP相关的控制,我们也平常把它简化叫做三层控制,也就是网络层的控制。

2.2.2  传输层协议

它提供的是面向连接的传输服务,换句话说就是先建立连接,传完东西之后再断开连接。在建立连接之后和断开连接之间,也就是在传输东西的过程中它可以保证不丢不错不乱序。也就是说为的传输可靠性。

Ø  TCP协议

²  TCP是面向连接的协议;

Ø  UDP协议

²  TCP/IP协议栈在传输层上,和TCP并列的提供了一个无连接的协议叫做UDP,它只进行数据报的发送,不建立连接和撤销,也不进行可靠性的保障工作。

2.2.3  应用层协议

TCP/IP协议在应用层的协议非常丰富。下面是几个简单和古老的协议。

Ø  Telnet协议;它是一个远程登录的协议

Ø  FTP协议; 文件传输协议

Ø  HTTP协议  超文本传输协议,主要是web的运行

Ø  SMTP协议  邮件

Ø  SNMP协议 简单网络管理协议,它适用于TCP/IP网管

大家看到的这些个协议他都是执行的上层的应用或者上层的功能。TCP/IP在应用这里是非常的丰富的。而且随着发展,有更多写协议加入,比如最近常说的VoIP,实际上就是将话音的传输,也就是传统的电话的功能作为一个TCP/IP的应用基于下层的TCP、UDP这样的协议去传输。

3  网络基本概念

这些基本概念对于参考模型来说是互通的,无论是OSI还是TCP/IP都有下面这几个基本概念,实际上他们所表达的含义是比较简单的。

Ø  服务(Service)

²  服务说白了就是一层提供的功能,比如网络层所提供的服务是什么呢?它是保证网络之间两点的可达性。

Ø  协议(Protocol)

²  它是对等层所遵循的共同标准,比如以太主机装了TCP/IP协议,另一台也得安装TCP/IP协议才能通信,协议是一种公共的,通用的标准,这种标准就是我们所说的协议。

Ø  接口(Interface)

²  接口是上下层之间功能调用的一种方式,或者说一种衔接点,一种访问点,比如应用层如何去调用传输层去传输数据呢?那么传输层要想应用提供一个标准的接口,供应用层的开发人员去调用。

²  比如说socket,socket编程接口本省就是一种接口,是一种公共的开放的,便于上层的调用。

Ø  封装(Encapsulation)

²  在协议栈上,我们知道用户数据是顺次的经过处理最后变成网络上实际传输的bit,那么在数据的处理过程中,每一步处理都会产生出一些控制信息,那么这些控制信息会加载数据前边或者后边包在一起,一起去传输,对方要利用这些控制信息去得知源方的一些处理方式,所以加控制的控制,或者说加头信息或者尾信息的过程我们叫做封装。那么去掉这些控制过程就叫做反向的封装,或者叫做解封装(Decapsulation)。

²  比如说你要发一封Email,那么你把它交给应用层的程序去处理,那么应用程序会在你写的这封邮件上面加一些控制信息,比如说接口的人是谁,发送的人是谁,优先级,主题是啥。这是应用层的处理,以此类推下面各个层次还要做处理,比如说表示层,你这个信是否加密,用什么方式加密的,是否压缩,用什么方式压缩的,这是表示层的工作。依次往下,最终形成bit在网络上进行传输。所以实际上在网络上传输的比特流,并不完全是用户的数据,很大一部分比例是这每一次协议加上的控制信息。这些控制信息本身是非常有用的,但它是一把双刃剑,一方面我们希望这些控制是完善的,另一方面我们也希望这些控制信息是简洁的。所以的信息传到对方,网络功能才能正常进行,但是这些控制信息不能过多,因为它终究不是用户的数据,它会影响到用户数据在网络上的传输效率,会占用掉一部分网络带宽和处理时间。所以如何在这两方面平时,是技术开发关注的焦点。

4  以太网简介

Ø  以太网络的结构

Ø  以太网络的MAC

Ø  以太网络的发展

Ø  以太网络的地址

Ø  以太网络的帧结构

4.1  以太网的结构

(以太的总线结构)

Ø  如图,这是一个以太的总线结构,所有的机器穿在一根先上,那么在这种情况下,以太机器发送数据,其他机器只能被动的接收。这种总线结构实际上是非常常见的,比如公司里边的以太网,通常都是星型的结构,中间一个Hub,外面有很多主机,这些主机是通过Hub进行互相的通信的;我们现在看到的总线结构它更多是一种逻辑结构,而不是物理结构。比如我们所说的星型结构,它的物理结构是星型的,但它的逻辑结构仍然如图是如图所示的总线型。所以我们分清物理结构和逻辑结构。

(星型结构的物理结构)

Ø  如图,以太网的星型结构,在物理上一个Hub作为星型的核心,无论是Server还是主机构成星型的端节点。

Ø  无论是我们所说的逻辑的总线结构还是物理的星型网络仅适用于传统以太网,并不适用于交换以太网。以太交换内容实际上也是以太基础里边比较重要的一块,下边介绍。

4.2  以太网络的MAC方法

Ø  在OSI参考模型中,在数据链路层,也是就是第二层,它分为两层,上面叫做LLC,下面叫做MAC;MAC解决的是介质访问控制的问题;也就是当多台计算机同时共享同一个传输介质的时候,也就是共享同一个链路,那会遇到问题是哪台计算机能发数据,哪台不能发,哪台先发,哪台后发;像这样的介质访问的控制是MAC层的功能。

Ø  以太网的MAC方法,简称叫做CSMA/CD((Carrier Sense Multiple Access withCollision Detection)基带冲突检测的载波监听多路访问技术(载波监听多点接入/碰撞检测)。);

如图,载波侦听,多路访问,冲突检测,实际上这三个要点描述了基本的以太网控制信道(介质)的方法。

Ø  如图所示的以流程的表示,顺次看

1.       当一个主机有数据要传输的时候,看下介质现在忙吗?信道有没有正在接收或者发出的数据,如果没有的话,那么可以发送,如果有的话,那么就不能发送;等待,知道信道空闲才能发送。

2.       那么这个发送并不是一味的发送下去,没有什么后继处理,而是要边发送边侦听冲突。为什么这样呢?因为可能同时有两台主机同时监听到了信道不忙,同时去发送数据,那么这时候就会产生冲突,那两组信号在一个信道上的叠加不等于其中任何一种,所以这个数据传输实际上是被破坏掉了,以太的网卡(这里指的是传统的以太网卡),它会边发边听,一边传输数据帧,一边听,听一下传出去的东西,听一下传出去的东西和听到的东西是否一致,如果一致那就是没有冲突,如果不一致,那就是产生了冲突。

3.       如果产生冲突,会立即停止当前的传输,也就是当前传输作废,并且发送一些干扰信号,便于另外一台机器,也就是与我冲突的一台机器尽快识别当前的冲突,尽快的作废当前的传输,然后等待一个随机的间隔时间重新去测试信道是否忙,如果不忙,进行发送并且监听,如果没有冲突传输完成,如果有冲突,停止,等待一个随机的时间再重新试;这是一个传输的流程。

Ø  很多地方用16个字来描述以太的MAC方法,就是上述的流程图。

²  先听后发,边发边听

²  冲突退回,延迟重发

当然这个流程仅适用于传统的以太网络,不适用于交换以太网络。

4.3  其他网络的MAC方法

其他网络也就是非以太的网也可能遇到MAC的问题。

Ø  TOKEN PASS

²  比如说在令牌环网络里,所有的主机构成一个环状的网络,传输介质同样是共享的,在令牌环网络,介质共享的情况,如何解决哪台先发,哪台后发,哪台能发,哪台不能发的问题,那么它采用的是令牌的方法;令牌是一个很简短的数据帧,那么这个数据帧实际上是发送数据的一个权限标志,网上只有唯一的令牌,那么得到令牌的主机可以发送数据,没有令牌的只能被动收听。令牌环网就利用这种特殊的权限数据帧,用这个令牌去控制权限的共享。

Ø  CSMA/CA

²  不同的承载方式,介质的共享方法很多,比如说在无线局域网中使用的是CSMA/CA;这个CA和CD不一样,CD是有了冲突去检测;CA是在没有冲突之前主动去避免;

(注:在802.11中对CSMA/CD进行了一些调整,采用了新的协议CSMA/CA(Carrier SenseMultiple Access with Collision Avoidance)或者DCF(Distributed Coordination Function)。 CSMA/CA利用ACK信号来避免冲突的发生,也就是说,只有当客户端收到网络上返回的ACK信号后才确认送出的数据已经正确到达目的地址。)

Ø  POLLING

²  主机轮询从机的方法,就是在网络中有个主控的机器负责MAC也就是介质访问的控制。

Ø  等等

4.4  以太网络的发展

4.4.1  传统以太网

Ø  1980年DEC、Inter与Xerox三家公司选不了第一个10Mbps以太网,该标准的名称由这三家公司的英文首字母组合起来,即DIX以太网标准,它成为了世界上第一个开放式的、多厂家参加的局域网标准。

Ø  1980年,IEEE在DIX以太网标准的基础上制定了IEEE 802.3标准,术语“CSMA/CD”简要地描述了IEEE 802.3标准的工作机制。也称为了一种工业标准

Ø  后来IOS,也就是国际化标准组织也把以太网网接纳成了一种国际标准,他的编号是8802。也就是80年代初期,以太网称为一种成熟,开放的工业标准协议。

Ø  在IEEE802.3所规定的以太网里边,主要的以太网的连接方式有三种;

(传统以太网络)

²  10base2,10表示传输速率为10Mbit/s,Base表示采用基带传输技术,2表示最大距离几乎为200米,被称为细缆网,在单个网段上最多可支持30个工作站。10base2和10base2标准使用的介质细铜电缆和10base5是粗铜电缆。它们所构成的以太网逻辑结构和物理结构全都是总线型的。也就是实际上网络,你看起来的网络是一个总线网络。

²  10BASE-T是双绞线(twisted-pair)以太网,1990年由IEEE新认可的,也就是使用双绞线实现物理上的星型结构。这里边的最大线缆长度指的主机到Hub这种网络集线器之间的最大线缆长度是100米。

²  这三种标准的网络带宽,速率都是10M,对这种10M以太网为了和后来的以太网进行区分,我们把它们叫做传统以太网。

4.4.2  高速以太网

Ø  95年推向市场的一种广泛使用的以太网络技术我们把它叫做快速以太网(Fast Ethernet)。相比传统的以太网,网络速率从10M提高到了100M;实际传统以太网络最大的两个问题,第一个它只有10M的带宽,这个速率并不算快,而同时期的IBM使用的令牌环网有16M的速率。同时期的FDDI的速率可以达到100M,所以它在带宽上不占优势。第二传统以太网是基于争抢的方法去控制介质的访问,有冲突;谁抢到谁先用,这种机制本身就浪费了很多带宽。

Ø  所以说传统以太网有两个毛病,一时带宽速率低,二是冲突多,降低了带宽利用率。这两个问题在90年代中期都得到了解决,解决带宽低的问题是高速以太,速率从10M提到了100M;解决冲突多的问题主要靠交换,交换以太解决了传统以太的冲突问题。那么在全交换的以太网上,可以说是完全没有冲突。如果你的网络上所有使用的连接的设备全是交换机,而没有集线器,那么整个网络是交换,这个网络就是全交换的,全无冲突的。快速以太和高速以太这两项技术的出现解决了传统的最主要两个问题,这使得后边以太的发展一直很顺利的。现在市场占有率,局域网达到了90%。

Ø  高速以太使用的三种标准

²  100BaseT4 使用的是4对3类非屏蔽双绞线,实现100M的传输。

²  100BaseTX

²  100BaseFX (F是光钎)也就是通过光纤实现100M2公里的传输。

Ø  90年代发展到千兆以太网

²  相对早一些的标准SX,LX,CX;SX是千兆以太的短波,LX是长波光纤标准。

²  CX标准是基于双绞线的;最大传输距离25米,通常用于机架间的连接,适用于交换机之间的连接,尤其适用于主干交换机和主服务器之间的短距离连接。

²  1000BaseT很好的兼容了10M和100M的以太网,支持100米的传输,主机到Hub可以支持100米。

4.5  以太网的网络地址

Ø  48位二进制数

Ø  分为厂商号部分(前24位)和序列号部分(后24)

²  厂商号部分(前24位)实际上是由IEEE分配的,一个厂商想要生产以太网卡,为了网卡地址不重复,不发生冲突,要向IEEE申请一个唯一的厂商号。然后厂商用后24位做标识,保证后24也是不重号,不冲突的。如果大家都遵循这一标准,那么以太地址在全球就是唯一的。

Ø  属于全球地址(Global Address)

4.6  以太网的帧结构

由于以太网的发展历史比较长,所以它的帧结构不是唯一的,以DIX标准Ethernet II为例。

(Ethernet II)

²  前导码(8个字节),或者叫做帧起始标志,通过这8个字节,使得对方主机可以辨别出一个帧开始了,

²  帧头有地址信息和控制信息地址信息主要有两个字段,一个是目的地址,一个是源地址,分别占6个字节。都是以太的48bit的以太地址,也就是从哪里来的以太帧和到哪里去,也就是源MAC地址和目的MAC地址

²  类型(Type),它标明的是以太帧里边的封装的高层的数据结构,肯定是网络层的,有可能里边封的是一个IP数据包,ARP的数据包;如果是IP数据包2个字节装的是16进制的0800,如果是其他的数据包在类型字段会有不同的标识,给出区分。

²  数据,那么可以是IP数据包,ARP数据包等等

²  校验码 整个的以太帧的CRC校验,接收网卡用于辨别是否在传输的过程中发生错误,如果发现错误,丢弃此帧。

5  以太网交换原理

Ø  以太交换的基本概念

Ø  交换机的功能

Ø  冲突域和广播域

Ø  交换机特性

5.1  缆段微化的概念

以太交换的基本概念交换机的功能冲突域和广播域交换机特性以太交换要从缆段微化讲起,缆段微化是指把一个大的以太网,拆分成多个小的以太网。

Ø  传统以太网络是10M的共享宽带的

²  10M本身不是一个很高的速率,共享带宽就更加限制了用户对这个带宽的使用,因为所有连接在同一个以太网上的用户共用这10M带宽的。

Ø  当一个网段上计算机增多时,冲突的几率增加,网络带宽利用率下降

²  当一个网络上计算机增多时,由于以太采用的是CSMA/CD的MAC方法,也就是说以太是不限制冲突,但它提供了冲突的解决办法;那么当多台计算机传输数据产生冲突的时候,同时退回,延迟随机的时间再重新到网络上进行发送。当一个网段上计算机增多的时候,冲突几率也就是随之增加,网络带宽利用率也就下降。在一个有30-4台计算机的网段上,当网络繁忙时网络带宽利用率可能下降到30%,也就是说众多计算机仅适用3-4M的带宽去传输数据。这当然是一种很不好的情况。

Ø  80年代有缆段微化的概念

²  为了解决这种问题,80年代就提出了缆段微化的概念,所谓缆段微化顾名思义就是把一个大的以太网拆分成多个小的以太网,直接的效果就是在以太网段上面,计算机的数目减少了,比如说原来有20台计算机的以太网段现在被拆成了两个部分,那么每个部分只有10台计算机,这10台计算机之间冲突的几率就会下降,那么在网络上面带宽的利用率也就会上升。

²  在理论上,每一部分10台计算机共享10M带宽,另外10台计算机也是共享10M带宽,所以整个网络的理论带宽就变成了20M,这种情况下,网络带宽增加,网络冲突减少,带宽利用率上升,这就是缆段微化。

Ø  在多个缆段之间加装网桥

²  在缆段微化之后,多个缆段之间通信是一个需求;比如网段A上的计算机要和网段B上的计算机进行通信,那么跨缆段通信需要有一个设备进行数据的转发,这个设备就是网桥。所以在多个缆段之间加装网桥是必须的。

Ø  桥是有多块网卡的计算机

²  桥是有多块网卡的计算机,桥在多个缆段之间转发数据,这种转发是智能的;桥这个计算机记录了MAC地址和桥端口的对应关系,这叫做MAC地址表。桥是按照MAC地址表根据一个以太帧中的目的MAC地址查找求得端口号进行转发的。

Ø  当通讯在同一缆段上进行时,桥不转发数据

²  当通信在同一缆段上进行时,桥不转发数据;这样能达到就达到了我们刚才所说的效果,也就是提高了理论带宽,提高了带宽利用率。

Ø  在通讯在不同的缆段间进行时,桥智能转发

²  当通信在不同缆段间进行时,桥按照按照MAC地址表根据一个以太帧中的目的MAC地址查找求得端口号进行智能地转发数据。所以说桥是一有二层智能的设备。这里指的是他可以按照MAC地址去查找转发数据。

5.2  桥和交换机

从基本原理来讲桥和交换机是两个同样功能的设备,也就是查询MAC地址表的转发,这一点上桥和交换机的工作原理是一样的。但有一点显著的不同:交换机是基于硬件的转发,可以实现更高端口密度和更快转发速率。

Ø  桥和交换机的工作原理是一样的。

Ø  交换机是基于硬件的转发,可以实现更高端口密度和更快转发速率。

以太交换的概念是在91年提出的,市场上广泛使用计算机是95年;交换机解决了以太冲突的问题,也就是解决了以太带宽利用率的问题,所以把一个共享式的以太网变成了一个交换式的以太网,这一点是非常重要的,这也是为什么以太网在局域网各种承载技术中占有主要地位。

5.3  共享以太网和交换以太网

共享以太网和交换以太网的冲突,他们的区别如下

5.3.1  共享式以太网

共享以太网是一个广播式的网络,一个广播式的网络;一台计算机发送信息,比如A发送信息给B,A的信息交给hub,hub本身没有智能,hub把信息广播出去,这样C、D就被动的接收了无用的信息。

(共享式以太网)

5.3.2  交换以太网

交换式以太网就不一样了,Switching是一个智能的设备,它查表进行转发,那么在网上可以可以进行多对通信,互不干扰,互不影响。如下图,比如机器A发送数据给B,与此同时,机器C可以发送数据给D。那么这样就达到了我们刚才所说的理论带宽增高,或者说避免了冲突这一目的。这就是交换式以太网和共享式以太网的区别。

(交换式以太网)

5.4  交换机的功能

一个交换至少做三种事情:这三种功能时交换机的主要功能。

²  地址学习(Address Learning)

²  查表转发(forwarding)

²  防止回路(loop avoidance)

5.4.1  交换机的地址学习

流程分析,在交换机刚刚启动的时候这张MAC地址表是空的,因为刚启动的交换机不知道当前的网络现状,假设这时候交换机开始有数据传输

1.       机器A发送数据在机器C,当发送的这个数据经过交换机的时候,虽然交换机不知道机器C在哪里,但它从发送的以太帧里可以发现的源地址,也就是机器A的MAC地址。由此知道A的源MAC地址是0260.8c01.1111,源端口号是E0;那么交换机就智能的学习到这个地址表项,如下图。我们暂且不管这个数据交换机该如何去做转发。

2.       下次机器B发送以太帧,交换机就可以学到机器B的MAC地址及端口号对应关系,当整个网络上所有的机器都发送过数据,那么交换机学到了所有机器的MAC地址和端口对应关系,这个时候交换机就拥有了一张完整的MAC地址表,之后交换机就可以智能转发数据了

5.4.2  交换机的转发与过滤

假设在MAC地址表完整的情况下,机器A发送数据C;那么交换机可以检查机器A发出的以太网的帧,检查里边的目的MAC地址,然后在MAC地址表中查到到目的端口,目的端口是E2端口,那么交换机就可以专门的把这个以太数据帧专门的从E2送出去,不打扰E1/E3端口,这就是所谓交换机的智能转发。

如果没有这张表,交换机不知道C的地址,那么这个时候交换机就会做类似Hub的动作,广播帧也就是flood,那么机器A发送的数据会被复制到E1、E2、E3端口,这种情况下,虽然B和D虽然接到无用的信息,但目标主机C也接到了这个数据帧。

这就是所谓的交换机的智能,他可以动态的学习网上的地址,在学习到完整的MAC表,交换机就可以转发与过滤。

转发和过滤实际是一个意思。如下图,A发送信息给C,这时候就是转发,这是不会打扰B/D,这就是过滤。

5.4.3  防止回路

防止回路loop avoidance 由分枝树协议(STP来完成的)。这个协议比较发杂放到后面专门一节做详解。

5.4.4  冲突域

当把整个网络分成多个缆段,缆段之间是没有冲突的,他是靠交换机靠桥去做只能的转发,但缆段之内是有冲突的。

冲突域是指是指一个缆段的所有的计算机构成一个冲突域。

如下图,一个Hub所连接的所有机器他们之间所采用连接方式是传统的以太方式(CSMA/CD),所以它可能有冲突,所以叫做一个冲突域。

在冲突域里,一台机器发送信息,不管是单播的还是广播的,其他所有的机器都能收到,因为Hub是做完全的复制。

5.4.5  广播域

Ø  网络中能接受任何一设备发出的广播帧的所有设备的集合。

Ø  广播域是一个更大的概念,它比冲突域要更大一些,它是指广播信息能到达的范围。比如说一台主机发送一条以太的广播信息,那么它最远所传到的地方就是这个广播域的范围。在网络中,Hub中继广播是没有问题的,交换机和桥也可以中继广播,但路由器不中继广播,也就是说网络中不经过路由器,那么这种以太广播都可以无限制的传播。所以广播域是由路由器一个一个隔开的。

所以说冲突域是由交换机隔开的一个个缆段,或者说网段;而广播域是由路由器隔开的一个个网络。(这个很重要的一对概念,无论是ncne的考试中,还是在Cisco的认证考试种经常考到)

5.4.6  交换机的特性

Ø  交换机的每一个端口所连接网络都是一个独立的冲突域

Ø  交换机所连接的设备仍然在同一个广播域内,也就是说,交换机不隔绝广播(唯一的例外是在配有VLAN的环境中)

Ø  交换机依据帧头的信息进行转发,因此说交换机是工作在数据链路层的网络设备。是一个OSI模型的二层设备,他不检查IP地址只检查以太帧的目的MAC地址。

5.4.7  转发的分类

这两种转发的差别在哪里呢?直通转发转发速度快;存储转发在交换机里做了帧校验,不转发错误帧;这两种配置模式在交换机种有相应的配置命令可以配置。

Ø  直通转发(Cut-ThroughForwarding)帧从源端口进入交换机,随着帧进入的过程中,交换机就要检查目的Mac地址,在以太帧中目的MAC地址是比较靠前的一个字段,一旦查找到目的MAC,目的端口,这个帧是流过交换机的,所以在交换机里边是一个很短的固定的一段延迟。

²  转发速度快

²  延迟固定

²  转发错误帧

Ø  存储转发(Store-and-Forwarding)是交换机从源端口上接收到这个数据帧,完全接受完,做校验,发现这个帧没有错,才把这个帧转发出去。

²  转发速度慢

²  延迟可变

²  转发前校验

       在整个网络中,路由和交换是最基本的传统的概念,是学号整个网络的基础。

6  广域网简介

Ø  通信的基本概念

Ø  接入网络(访问网络)

Ø  核心网络(骨干网络)

6.1  通信基本概念

Ø  串行/并行

Ø  同步/异步

Ø  单工/半双工/全双工

Ø  TDM/FDM/WDM

Ø  电路交换/分组交换/信元交换

6.1.1  串行/并行

²  并行:硬盘连接线,打印机电缆都是并行传输方法,也就是说在同一时刻有8芯的线缆在并行的传输数据。比如图a, 8芯的电缆把1bit的数据并行的有设备1传给设备2。由于这样的线缆芯数比较多,所以他们仅适合短距离的设备之间的相对告诉的传输。

²  串行,与并行相对应的,如图2,所有的数据是顺次由设备1传到设备2的。那么这种传输相对便宜,可靠,速度要慢一些,但是适合远距离的传输。

6.1.2  异步与同步

Ø  异步传输:

²  每个被传送的字符前有起始位,后有停止位

这种起始位实际上是定位出或者说标记出一个字符起始和停止。

²  速率慢,开销大,适用于低速设备

Ø  同步传输:

²  字符组合成数据帧成组发送

²  数据帧包含一组同步字符使收发双方进入同步,一旦进入同步状态,后续的字符就可以顺次的接收。

²  传输速度快,开销小

6.1.3  单工/半双工/全双工

Ø  单工:信号只能在一个方向上进行传输,不能进行反方向传输

Ø  半双工:通信可以在两个方向上传输,不不能同时传输,步话机的通信方式,在同一时刻,只能有一个人说话,另外一个人只能听。

Ø  全双工:通信可以在双方向同时进行

6.1.4  TDM/FDM/WDM

      这三种属于信道的复用方式,那么经常会在广域链路上遇到这种情况,一个链路要被多个用户或者说多被多组传输所共享,大家如何共享这一段链路,就是下面要说的这三种复用或者说共享的方法。

Ø  时分复用(TDM:Time Division Multiplex andMultiplexer))

²  时分复用是按照时间片来进行划分,同一个时间段内用户1传输,第二个时间段内用户2进行传输,以此类推,也就是说每一个时间段分给一个用户。

(时分复用TDM)

²  如图,4个用户共享中间的广域链路,实际上每个用户绝对的占到这个链路的1/4的带宽,而不管他是不是有数据传输的需求。信道的时分复用,即便你没有数据传输的需求,轮到你的时间片的时候,我这个时序(time series)仍然保留给你,也就是带宽是分给你的。

Ø  频分复用(FDM:Frequency Division Multiplexing,频分多路复用)

²  频分复用是指在不同的频率上调制不同的信号

(频分复用FDM)

²  每个用户所占用一个信道,它是在不同的频段上的,适用于模拟信号的传输。

Ø  波分复用(WDM, Wavelength Division Multiplexing)

²  主要用在光传输设备上,光网络上 ,不同组的信号被调制到不同的光的波长上,实际上是通过光的波长去区分不同的用户对信道的复用,

6.1.5  电路交换/分组交换/信元交换

(电路交换)

Ø 电路交换最典型的例子就打电话,一个电话拨到另外一端,那么就有一条真是的,专用的物理链路,这条链路的带宽是准备为你保留的,不管你是否在说话。

Ø 这种直接的交换方式,保留了一条真是的,专用的物理链路的交换方式就做电路交换。

(分组交换)

Ø  在分组交换里边,中间的交换节点所传输的是一个个数据包。那么IP就是一种典型的分组交换网络,IP的数据包从源点传到目的地点,他们可能不是有序的,也并不是一定就占有一段的带宽,整个网络是尽最大可能或者通过某种控制的传输IP数据报,那么靠这种包去携带信息从源点到目的地点,当然这个里面可能需要一些上层控制去保证包的传输质量,保证它的可靠性这是分组交换。

6.1.6  信元交换

信元交换是专门用于ATM(Asynchronous Transfer Mode 异步传输模式)网络里面的。

(信元交换)

Ø  在ATM网络里边,源点到目的地点之间所传输的是信元(cell)。

Ø  信元是一种特殊的数据结构,它不同于普通网络所传输的帧或者包,因为大多数网络的帧或者包都是可变长的;而ATM的信元是定长的。而且是非常小的长度,只有53个字节。那么源到目的地之间所传输的这53个字节的ATM信元是靠网络上的ATM交换机去执行交换或者说执行转发。之所示设计这样一种定长的信元结构是因为不想让ATM交换机称为整个网络的瓶颈。如果交换机所交换的长度是变长的,并且结构不一,非常复杂,那么交换机往往就会称为网络的瓶颈,因为它要做复杂的处理,做转发决策然后做数据的转发。在ATM网络里边就很好的避免了这一点,所以ATM交换机可以在很短时间内做出信元转发决策然后转发信元。ATM在出来的时候,它的显著的优势就是交换非常的高效率,而且是无阻塞的,

6.2  接入网络和核心网络

Ø  接入网络是提供的一种从本地到Ineternet的一种访问的连接;包括:

²  电话接入的调制解调器

²  ADSL非对称的数字用户线路

²  Cable Modem

²  光纤

Ø  网络的核心连接,比如公司总部到分支办公室之间的连接,

²  E1口和T1专线,

²  ATM,

²  帧中继(Frame Relay),

²  X.25

Ø  如果基于承载来分

²  基于铜缆的,传统的,无论是在接入网络还是核心网络里基于铜缆的承载都是现在主流的方式。

²  基于光纤的,在核心网络里最迫切需要解决的是如何解决高带宽,所以基于光传播的网络占有重要的一部分

²  基于无线的,提供一种灵活的接入,

6.3  接入网络

6.3.1  电话网络

Ø  如何在电话网络,这种传统的模拟的网络上,传输话音所使用的网络去传输数字信号,就需要调制解调器进行数字信号和模拟信号之间的转换。通过调制解调器这种设备,我们可以使用模拟信号网络去传输计算机网络所使用的,比如Internet的信号。

n  从数字信号转变成为模拟信号,这个过程叫做调制的过程。

n  从模拟信号转变成数字信号,叫做解调

Ø  由于受限于传统模拟电话网的频率和带宽等,调制解调器所提供的速率是有限的,很低的,它的速率上不去。常见的调制解调器可以提供2.8K bps,有的能够提供33.6k bps的速率,最高56k bps。

传统的电话现在基本已经不存在了,现在大多都经过了数字化的改造,现在称为ISDN(综合业务数字网 Integrated Services Digital Network),

6.3.2  ISDN网络

Ø  传统电话网络的数字化改造

²  这样的网络的核心已经是数字的交换机,而不是模拟的交换机。

Ø  2B+D的信道结构

²  这样的网络上,每个用户,也就是一条电话线上面有2B+D的信道结构

²  2B 是指有两个传输数据的信道,每个信道有64k

²  D是一个传输控制的信道,有16k带宽

²  所以ISDN 2B+D的信道一共能提供总共144k bps的速率传输。

Ø  仍然是拨号方式,电路交换结构

²  ISDN带来的问题,虽然他的带宽较传统的电话网调制解调器的方式要高一些,但是仍然采用拨号的方式,那么他的链路的建立和撤销仍然需要一定的时间,可能比较短,1-2秒之间,但它需要一定的时间。

Ø  结合PPP等协议支持网络层数据传输

²  在ISDN和模拟电话网络所采用的二层协议往往是PPP协议,通过PPP协议,提供一个点到点的链路,可以支持网络层的数据传输,比如IP数据的数传输,这样用户就可以接入Internet上了。

6.3.3  ADSL

现在宽带常用的一种技术,ADSL(Asymmetric Digital Subscriber Line( 非对称数字用户线路))。

Ø  ADSL是利用传统电话网的高频率部分去传输数字信息

Ø  从现有铜质电话线上获取最大数据传输容量,同时又不干扰在同一条线上进行的厂规话音服务

²  从设计上来说ADSL是一种精巧的设计,但是要在设备上进行升级,因为数字的信息占用高频部分,和话音信息占用低频部分,在一条电话线上进行同时传输,那么无论是用户方还是局方都需要分离器这种设备,把话音和数字信息分开进行传输。在局方把话音传输到交换机那里是做电话的交换,把数据传到一个网络上面,是做数据的交换和传输;所以ADSL需要一些现有电话网的该做,也就是加装分离器。同时ADSL对传输的电话线也就是铜缆的质量要求是比较高的,如果质量不是很好,那么可能会造成电话经常断路,或者网络带宽达不到预期速率。

6.3.4  Cable

比起ADSL,Cable的方法使用的少一些,

Ø  利用有线电视网络未使用的带宽

²  Cable是在有线电视电缆上去做数据的传输,有线电视网本身就是一种宽带网络,每个电视频道根据不同的制式,可能会占6-8M的带宽,那么在一个有线电视网络上,并不是铜质电缆所能支持的所有带宽都分给了这些频道,你可以拿出原先看1-2个频道的带宽去传输数据信号,拿出一个频道你就可能有了6M或者8M的带宽,这个带宽在广泛了有线电视,比如小区来看,这个带宽是很高的,而且是挺便宜的,可以利用现有的网络基础去获得这样的带宽。

Ø  永远在线

²  因为不需要拨号,永远连接

Ø  电视网络的双向改造问题

²  传统的电视网络是一个纯下行的网络。无论是小区的电视中心,还是从电视台接到的信号,还是从有线电视接到的信号,通过铜质电缆下发到电视上,并没有上传的需求,所以传统电视网络进行的是单向的传送,在这个网络里边,很多放大器都是单向放大器,所以它不能反向的传输上行信号。

²  所以就有了电视网络的双向改造问题,当然改造是要花大量费用的,为了解决这个费用的问题,一些基于Cable的传输方法,结合了其他方法来共同使用,比如有些厂家就提出了所谓外回路的概念,利用电话线Model去传输上行信息,利用Cable网络去传输下行信息,这样可以达到一个费用和性能的折中。

6.3.5  FTTx+LAN(光纤到小区+局域网)

小区还有一种常用的方式就是光纤到楼或者光纤到小区,然后通过局域网的方式下到每家每户,它的主要好处是速率高,相比一些广域网的接入方法,局域网的速率是非常高的,比如十兆,百兆以太,而且成本低,比如一块以太网卡只要二三十块钱。

Ø  FTTB(Fiber to theBuilding)

Ø  FTTC(Fiber to theCurb)

Ø  只适用于居住密集地区

²  光纤到小区+局域网它的成本低是建立在规模效益的基础上的。

Ø  速率高/成本低

6.3.6  无线接入方法

无线最大限度的满足了人们对网络接入的灵活性,所以他是接入网络未来发展的方向。可无线接入的方法一些问题,最主要的问题是它的带宽低,费用比较高。

Ø  Wireless LAN

²  无线局域网技术,可以提供1M,2M,5M,11M,54M,等等这些共享速率。

²  无线速率参考文档 https://wenku.baidu.com/view/1e18e81e650e52ea5518985d.html

Ø  无线广域接入方法

²  GSM/GPRS 2.5M兆

²  CDMA/CDMA1X

²  3G/4G/5G 在一个纯的数据网络上,一个后台网络上,前端接入用户的无线数据。

无论是传统的电话网络还是新兴的无线接入网络,他们解决的实际上都是典型的最后一公里的问题,网络的最后一公里使用的是用什么技术,如何搭建的,这最后一公里往往使用户最关心的地方,也往往是整个网络的瓶颈所在。

6.4  核心网络(骨干网络)

6.4.1  E1/T1

Ø  E1/T1是广域网络专线的标准

Ø  E1,欧洲/中国标准,2.048M

Ø  T1,北美标准,1.544M

6.4.2  X.25

一种传统的广域网连接方法是X.25网络

Ø  包交换网络(几乎最早的典型的包交换网络)

Ø  X.25协议是数据设备和X.25网络之间的通讯协议

²  协议比较复杂,但是它的通讯是可靠的;X.25规定了数据设备和X.25之间的通讯协议,也就是只规定网络边缘的协议,网络核心并没有规定,X.25涉及到了OSI模型第二层第三层的功能,这里面执行了重复的可靠性的保证机制,进行反复的校验错误,回复错误这样的工作,无论是第二层还是第三层都实现了。

Ø  古老/复杂/效率低

²  X.25网络适用于古老的,质量比较差的网络,所以协议本身复杂,去适应这样的差的传输环境,这样带来的直接结果就是它运行的效率比较低下。

6.4.3  Frame Relay(帧中继)

X.25后继版本是帧中继的网络

Ø  帧交换网络

²  OSI的基本模型,帧是发生在数据链路层的概念,所以帧中继是一种纯的数据链路层网络,它仅保留了二层的功能,并且去掉了复杂的面向连接特性。

Ø  X.25的后继协议,它仅保留了二层的功能,并且去掉了复杂的面向连接的特性。

²  帧中继网络中当帧发生错误的时候,帧中继协议本身并不做这种数据的恢复,不像X.25,所以就使得这个协议运转比较高效,这种校验恢复的工作交给上层协议去完成。

6.4.4  ATM

AsynchronousTransfer Mode异步传输模式,

Ø  采用虚电路的面向连接的传输

²   

Ø  定长的53字节信元简化了交换设计,

²  简化了交换机的设计,提高交换速率,减少瓶颈的发生

Ø  更好的传输质量控制机制

²  兼顾了实时多媒体信息的和非实时的数据信息的传送,他有很好的质量保证的机制,所以它能一方面保证音频视频流不会因为打的数据流或者说一个稳定的带宽需求而产生延迟,另外它会尽最大可能的去保证这种速率传输的高速率。

Ø  第一个能跨越局域网和广域网环境的技术

²  ATM网在95年推出市场的时候号称它是第一个能跨越局域网和广域网环境的技术,在广域网可以采用ATM技术,另外还有ATM到桌面的说法,也就是说你的PC上也可以安装ATM网卡,那么如果广域网是ATM,局域网也是ATM,就可以执行执行这种端到端的实时信息和数据信息的质量控制,完整的质量控制,能过获得ATM所有优点,当然这只是一个很好的想法,没有实现,ATM到桌面现在已经很少有人提到了,到桌面,现在已经是以太网的天下,虽然以太在传输质量保证,可靠性方面不如ATM,但是它的优点是速率进展非常快,十兆百兆千兆而且成本低。所以最终竞争以太赢了ATM。

7  IP协议

IP协议,是整个网络的基石,也是很重要的一个部分

参考《TCP/IP权威教程》44页第三章,网络互联协议

7.1  IP地址

IP地址从类别来分,分为有类、无类,IP地址是一个32位的二进制数

Ø  有类地址

Ø  无类地址(掩码,超网)

Ø  IP地址紧张的解决方法(保留地址,IPv6)

Ø  ARP的功能

Ø  ARP的实现

Ø  Cache的问题

Ø  RARP和IARP

7.1.1  IP地址基础

Ø  32位的二进制数

Ø  常表示成点分十进制的形式

²  也就是把8个二进制数写成一个10进制数,这样8位二进制数转换过来可能是从0-255之间的一个数

²  例如:202.113.16.118(这是一台主机)

Ø  分为网络号和主机号两部分

²  这个和IP寻址是密切相关的,为什么分为网络号和主机号呢,因为IP地址是一个两级地址,也就是在一个IP网络里要找到一个目标主机,必须要有两级寻址,一级寻址是找到目标主机的网络号,换句话说是找到目标网络,然后再在这个网络里找到目标主机。

Ø  特殊IP地址

²  主机部分全0:网络号

²  主机部分全1:广播地址

u  主机号全是0是一个特殊的IP地址,指代当前整个网络,并不是一台主机;如果给出一个IP地址,网络部分是正常的,主机部分是全0的,假设是202.113.16.0,那么它指代的是是一个网络,而不是具体一台主机

u  于此对应,如果主机部分全为1,那么它指代的是一个广播地址,如202.113.16.255 最末一部分全为1,那么他指代的是本网的所有主机,也是就说做一个本地的广播

Ø  有类(Classful)地址和无类(Classless)地址。

²  他们区别是有类按照类别来划分网络,而无类地址是按照掩码来划分网络的。所以有类和无类这两种地址实际上它们的区别就在于在一个地址中它是如何去区分网络部分和主机部分。

²  有类地址是按照类别区划分网络和主机的对应关系,哪部分是网络号,哪部分是主机号是按照类别来划分的

²  无类地址是按照掩码来划分的。

7.1.2  有类地址

有类地址完全是按照类别去区分的

部分

W(0-7)

X(8-15)

Y(16-23)

Z(24-31)

A类

8bit

8

8

8

网络地址

主机地址

B类

8bit

8

8

8

网络地址 

主机地址

C类

          8bit       

8

8

8

网络地址

主机地址

Ø  A类:在32个bit的地址中,前8bit代表网络,后24bit代表主机。

Ø  B类:前16位是网络地址,后16位是主机地址

Ø  C类:前24位的网络,8个bit的主机

Ø  如果你采用有类地址的方式,我只是看到你的地址,知道它的类别,就能判别出一级寻址用哪些东西和二级寻址用哪些东西

Ø  有类地址的类别

整个IP网络是两级寻址,一级寻址需要通过一些手段,或者说利用一些地址就是网络地址,二级寻址需要用到主机地址;作为网间连接设备如何去区分一级用什么,二级用什么,在有类地址这种情况下是按照类别来换分的,整个地址空间,有类地址总共有五个类别,ABCDE,

       其中ABC类是主机地址,D类用于组播,E类用于研究和实验

地址
类型

引导位

W的范围

地址结构

可用网络

地址数

可用主机

地址数

A类

0

1-126

网 主 主 主

126(27-1)

16777214(224-2)

B类

10

128-191

网 网 主 主

16384(214)

65534(216-2)

C类

110

192-223

网 网 网 主

2097152(221)

254(28-2)

D类

1110

224-239

组播地址

E类

1111

240-

研究和试验用地址

Ø  A类地址:引导位即32位中的第一个bit为0;如果32个bit,最前一个bit为0,它的首字节应该是1-126之间的,1-126之间的之间的地址,它的地址结构是8bit网络号,24bit主机号,它可以使用的网络数126个,它可以用的主机数1600万多个,也就是224-2,之所以减掉两个是因为头一个全0的地址,后最末一个全1的地址,分别被用于广播和网络号。

Ø  B类地址:以此类推,引导位,也就是32位中的前两位是1 0;它的首字节是128-191之间,它的地址结构16bit网络地址和16bit主机;网络数16384(214)个,在每一个网络里边,可用的主机数是65534(216-2)台主机。

Ø  C类地址:引导位是1 1 0,首字节的范围是192-223之间,地址结构是24位的网络号,8bit的主机号

例如 202.113.16.118 就属于一个C类网络,因为它的首字节为202,202在192-223中,因为他是C类网络,所在在地址结构中,202.113.16代表网络号,而最后一个字节118是主机号。在Internet上,见到这样一个IP的目标地址,就可以按照它去进行寻址,第一步找到目标网络,第二步找到目标主机。

Ø  有类地址的优点:按照类别去划分地址,我拿到这个IP地址,自然就知道他是什么类别,也就知道它的两级寻址结构是是什么样子。

Ø  缺点:不够灵活,比如一个单位需要30个计算机的网络,那么你也得给他一个C类的网络,即便一个C类网络中可以容纳256台主机,不能少,因为没有更小的划分方式,必须全网的进行分配,只能一个一个网络去换分,那么这样灵活性就差一些。

7.1.3  无类地址

与有类地址相对应的是无类地址。无类地址的灵活性就好的多了因为它的主机和网络的分割关系是不固定的。

Ø  主机和网络的分割关系不固定

² 不见得非得按照类别去换分整字节的这种分割关系去划分网络;分割关系是可以挪动的。那么具体哪一部分主机号,哪一部分是网络号,这到底是怎么划的,这要取决于掩码。

Ø  获取划分的情况必须参考掩码(Mask)

² 无类地址必须要配合掩码才能得知它地址中它哪一部分是网络,哪一部分是主机。

Ø  掩码用来确定IP地址中的网络和主机和两部分的分割关系。其格式和IP地址相同,也是一组32位的二进制数。

² 掩码本身也是一个32位的二进制数,前面有一些1,后面有一些0.

Ø  掩码中位“1”的部分所对应是IP地址中的网络地址部分,为“0”的部分所对应是IP地址中的叫做主机部分。

所以我们拿到一个IP地址,在无类的情况下,必须要同时得知它的掩码,才能分辨出在这个IP地址中,哪一部分是网络号,哪一部分是主机号。所以说IP地址在无类情况下必须配合掩码进行使用,那么当我们把这种划分关系怎么挪,不是固定的,怎么一个移动方法,有两种主要方法;一种是子网,一种是超网。

7.1.3.1  子网(subnet)

Ø  有类地址网络和主机的划分向右移动,就叫子网(subnet),

Ø  更多的网络,每个网络内更少的主机,

Ø  便于节约IP地址,解决主机划分过多的问题。

在刚才的情况,比如我们刚说的C类网络,例如202.113.16.0,标准情况下,他是一个24位的网络号,8位的主机号,在这种情况下,如果网络和主机的换分关系向右移动,那么所构成的我们就叫做子网,因为向右移动,它使得网络部分更长,而主机部分更少,也就是说我们实现了更多的网络,每个网络里更少的主机。

解决问题是我们刚才所说的比如企业里边只要30台主机的问题。也就是你这个企业里边只需要30台机器,只要30个IP就够用了,我可以不分给你一整个的C类的地址,我给你只是C类网络的一部分,我把这个这个划分关系向右移,这样就能够划分出更多的网络,更够分给更多的公司,每个单位有更少的主机,这种子网典型的好处就是节约IP地址。因为我们把一个C类网络划分多个子网,分给更多的单位,不同的网络去使用。

7.1.3.2  超网

Ø  有类地址网络胡主机的换分向左移动

Ø  更少的网络,每个网络内更多的主机

Ø  便于减轻骨干路由器的压力

与子网相对应的是反方向的划分方法,也就是把传统这种有类情况下的网络不是向右,而是向左移动,这样造成更少的网络,每个网络里更多的主机,把更多的bit划给网络部分,所以主机更多,网络的个数更少,这种划分主要的好处就是减轻骨干路由器的压力,在路由器里边,每一条IP网络,也就是每一个网络在路由器里会是一个条目叫路由项目,按照这个项目去决策转发,如果网络非常多的时候,那么如果路由器的压力是很大的,我们把更多的网络聚合起来,使得这个网络更大,每个网络里边容纳主机更多,这样,路由的条目少,路由器的压力就更小一些。

7.1.4  二进制数和十进制数的转换

7.1.5  子网举例

(子网举例)

Ø  如图,IP地址:193.1.1.0/24

Ø  /24表示它的网络部分为24个bit,它是一个标准的C类网,在这种网络里边,我们把它划分子网, 那么就是把就传统的网络和主机的划分关系向右移动,使得网络号的部分变长了,比如我们移了3位,就表示不同网络,8个不同情况,而剩下来的5个bit,最大程度可以多少台主机呢,就是25-2 也就是30台主机。

Ø  在这种情况,我们把一个C类的网络划分成8个子网络,每个子网里可以容纳30台主机,但这不是一种传统的有类的方式,这是一种的无类的方式,必须配合掩码来使用,这个掩码里我们要表示出一种信息,这种信息是什么呢?就是网络部分为27位,而主机部分为5位,那也就是上图所示,27个1和5个0的组合。把27个1和5个0转化成为10进制的掩码形式就是255.255.255.224

Ø  把主机和网络的划分关系,从标准的C类情况下,向右移动了3位,那么有8种不同子网情况。如图,前面的3个字节,也就是193.1.1是一样,我们把它写成10进制的形式;

有3个加粗的bit,从000到111,这几个实际上是子网部分,它是占用了我们先画出来的那些子网号的位置,

那么剩下00000,也就是5个0,是主机位置,那么按照特殊IP,主机部分全0,它指代的是网号,所以,现在,我们把Subnet 0的网号写在第一行上,相应的转成10进制就是193.1.1.0,现在的子网掩码㔻24位,而是挪了3位,变成27位。这种子网的换分节约了IP地址。

7.1.6  超网举例

这种超网(Supernet)的情况下,我们是多个网络聚合成一个,比如说哦我们有多个网络,200.25.16.0到200.25.31.0,那么是16个C类的网络,这16个网络有没有共同点呢?是有的,就是他们的前20个bit写成10进制的情况十一摸一样的,200.25.16.

那么从21bit到第24bit是不一样的,从0000-1111,16种情况,如果聚合成一个网络的话,也就是前面一样的部分,20个bit拿出来,把后边所有不一样的部分,包括主机部分的8个bit,包括不一样的部分,我们刚所说的4个bit,一共12个bit全把它作为主机号,也就是前面20个bit作为网络号,后边12个bit作为主机号,那么我们现在所构成的就是Suppernet超网,把这个网络写出来就是200.25.16.0;但子网掩码不是24位,而是20位。

7.1.7  IP地址紧张

《TCP/IP权威教程》的56页3.1.5

解决方法:

Ø  Subneting

² 划分子网本身是一个节约IP的方法,但是它并没有产生新的IP,可以多划分子网,比如上述子网举例中所说的划分8个子网分给8个不同的部门,但实际上并没有产生出新的IP,只是把原有的IP使用的更加经济,也就是更加节约了。所以他是一个治标不治本的方法。

Ø  Reserved IP Address

² 保留IP地址,它是说规定了一些专网地址(私网地址),在不同的单位可以重复的使用,前提是不连到Internet上

²  因为不同的地址可以重复使用,所以IP地址的数目确实是增加了,它是一种相对治本的方法。这就是为什么一直喊IPv4地址即将耗尽了,但直到现在IP地址依然没有耗尽就得益于这种保留IP地址这项技术的使用。

Ø  IPv6

² IPv6增加了IP的地址空间,它把地址的空间扩大了几倍,终极解决了IP耗尽的问题。

7.1.7.1         保留IP地址

Ø  在整个IP地址里有三个小段被拿出来作为保留使用,

²  其中有一个A类地址,10.*.*.*;10这个网路是A类网络。

²  有16个B类地址,172.16.*.*- 172.31.*.*,一共16个B类地址

²  256个C类地址192.168.0.* - 192.168.255.*

Ø  那么这样三段的地址空间中拿出来作为使用的或者说保留的来使用,所为这个保留是指这些地址不会出现在Internet公网上,它是给你企业里边用的,在私有网或者专有网里边用的,A企业可以用,B企业也可以用,之所以不会发生问题,是因为这些IP不直接连接到公网上,所以多个企业使用公共的地址,或者说同样的地址,那么这样就节约了IP;比如一个企业有成千上万台机器,那么你不需要去申请一个A类地址,你用10这个网段就足够了,因为10这个网段上理论上可以容纳1600万台。这是一个很大的数字

7.1.7.2  公网连接手段

作为私网,当你使用IP保留地址的时候,一个很重要的问题就是你要有公网连接手段,企业里边使用了保留的地址,当你想让Internet的时候,那么就要有一些手段,主要有一下三种方法

Ø  NAT(Network AddressTranslation)

Ø  PAT(Port Address Translation)

Ø  Proxy

Ø  NAT(Network Address Translation)

n  作地址翻译,当你把数据包传出私网的时候,它作私网地址到公网地址的一个映射,或者说叫翻译;当外边的数据传回来的时候,做反向的映射或者说翻译;

n  实际上就是在在网络边界进行公网地址和私网地址的转换。当把数据传出时,做私网地址到公网地址的翻译,公网的数据传回时,做公网到私网的翻译。

Ø  PAT(Prot Address Translation)可以做的不是一对一的,而是一对多的这种转换,他把一个内部地址的一个端口号,也就是它把多个内部地址的每个上面的端口号翻译成外部的一个公共地址的多个端口号,在公网占上它只占用少量IP;而在私网内部,能为多个IP进行服务。

Ø  Proxy 代理 ,典型代理一个台是有两块网卡的计算机,从私网网卡接受请求,然后从公网网卡上转发到公网上。

总而言之,这三种方法都没有把私网和公网直接连接起来,都没有使得保留ip地址直接放到公网上使用。但是可以进行公网和私网之间的访问。即节约了IP地址,又保证了五连互通。

8  ARP协议

8.1.1  ARP协议功能

Ø   地址解析协议(ARP)

Ø   目3 →目2

ARP是地址解析协议的简称,叫做Address ResolutionProtocol,它的功能只有一句话,而且非常明确的一个功能,就是目标三层地址到目标二层地址的变换。

当我们想访问一台目标主机的时候,通常是由它的IP地址,可是一个IP数据包是不能直接在实际的网络,或者说物理网络上进行发送的,所以在一个网内,我知道对方是的IP是192.168.0.1;但我们并不能用这个IP去做物理网络的寻址,因为物理网络是以太网,以太网有它自己的网卡地址,也就是物理地址,有它自己的实现机制,它是不认这个IP的;

那么在发送这个IP数据的时候,遇到问题是什么呢,就是怎么样从这个IP地址把它查询或者说变换得到一个以太地址,那么这就是ARP这个协议的功能,他把三层的目标地址解析成为目标二层地址,便于数据包封装成帧在物理网络上进行传送。

8.1.2  ARP协议的实现

Ø   在IP → Ethernet的典型环境中

Ø   广播 + Cache

ARP是如何实现的呢?如上,这种典型的环境中,通常这种IP到以太的这种环境中,三层是一个IP网络,二层是一个以太网络;ARP的实现方法是广播+Cache。

首先说的是广播,假设我有一个iP地址,192.168.0.1,我没有它的物理地址,或者说以太地址,网卡地址,怎么办呢,我通过ARP协议在网上广播一下,你们哪一台机器是192.168.0.1,所有人都听见了这个广播,但是仅有192.168.0.1给出一个ARP的回应,我就是,我的IP地址是192.168.0.1,并且我的网卡地址,也就是MAC地址是什么什么什么。这样源主机就可以通过这个广播获得一个我们叫做绑定关系,获得了目标主机IP地址和网卡地址的绑定关系。

这个绑定关系我不是用一次就完了,我把它放在Cache里边,也就是放在内存里边,下次我在想去找192.168.0.1,就可以不需要区广播了,我在自己Cache里查下表就知道目标主机的IP地址和MAC地址或者说物理地址,网卡地址是多少。

       那么实际上通过这种广播+Cache这种方法就实现了IP地址也就是三层地址到以太地址,二层地址它们之间的变换。广播+Cache是ARP最核心的部分,也是它的基理。

8.1.3  ARP流程举例

Ø   如图,假设A级器想和C机器进行通信;也就是A机器要知道C的网卡地址,也就是目标主机的网卡地址,MAC地址。

²  首先A机器查找自己的ARP Cache,查找已有的记录,发现没有目标主机的MAC地址,发现没有。

²  那么第二步就是我就要发广播,发广播问4个IP,你的物理地址是多少,在这个广播里边,实际上不仅要问C的物理地址,在广播消息的同时,A会把自己的IP和MAC地址这种绑定关系加到这个广播里边,C得到了这样一个广播,当然B也得到了,B发现这个东西不是问我的,所以B不去处理。

²  C发现这个ARP是问我的,那么C把A的IP和MAC地址绑定关系加到自己的Cache里边

²  并且回应A的消息,也就是告诉A我的MAC地址是多少

²  那么,现在A就得到了回应,A把C的IP和MAC这种绑定关系存在自己的Cache里边,

²  然后使用这个MAC地址进行封帧进行发送。

在这个流程里边,你会看到,实际上经过了一次流程,A的缓存里边有了C的信息,C的缓存里边也有了A的信息,这是因为A在发送ARP请求的的时候,把自己的IP和MAC地址的绑定关系也放到了这个请求里边一并发送。它能使得这个协议的效率更高。

从通讯的基本程序来看,通讯基本往往都是双向的,可能现在A要发送数据给C,那么过一会儿可能C就要发送数据给A,通过一套流程,A和C把对方的信息都加入自己的缓存里边,这是一种很高效,很经济的做法。

8.1.4  Cache的问题

但从理论上看,这种广播+Cache是一种很好的设计。你先广播,通过广播获得绑定关系存到Cache,那么以后就可以查Cache了,但实际实现起来有一定的麻烦。

       首先Cache是否和现在的网络状况保持一致,这是不一定的,对方的网卡能换一块呢,那么你这边存在Cache就不再是正确的,所以Cache要处理一些问题。

Ø   Cache分为静/动两种

²  静态是管理员手动添加的,一成不变的,

²  动态是从广播学习来的,它是会变的,既然会变那么就设计寿命的问题,他多长时间变一次。

Ø   动态Cache有寿命的问题

Ø   不同系统的动态Cache寿命不同

²  在Windows里边可能是2分钟,或者10分钟,也就是我学来的一次ARP绑定关系,最长能用10分钟,十分钟过了,我就要重新去学习,因为怕他失效,怕它过期。各种各样的Unix,类Unix系统里边通常都是十分钟也就是600秒。在各种交换机或者路由器里边,各个不同厂家的ARP Cache缺省寿命也是不同的。

Ø   Cache问题影响系统的调试

²  其实各种缓存都是一样的,它会提高系统的效率,但是它也提供了系统的复杂性,因为你自己缓存的这些东西,并不一定和网上现在有的保持一致。所以提高系统的这种复杂性。

²  Cache的问题,对系统的调试影响也很大,比如说对方换了一块网卡,在你本机Cache没有过期的情况下,你有可能还在用的老的MAC地址,也就是你有可能用老的MAC地址去和对方进行通讯,这个通讯就不能进行。那么必须把自己的Cache情况,重新广播,学习到新的Cache才能进行正常的通讯。

8.1.5   ARP命令

无论Windows上还是Linux上,也就是各种各样的系统上,都有ARP这个命令,ARP是显示本机的ARP状况,

ARP-a 显示本机的ARP表,如下,每一行就是一个ARP Cache项目。比如下看到的第一条,看到的,如果我的电脑传输数据到路由,就不需要广播,找到192.168.31.1,那么久就可以后边的MAC地址去封帧,去进行通讯。

ARP命令有很多参数,详看帮助命令行帮助。

 

atoutekiMacBook-Pro:~tao$ arp -a #显示所的绑定系,

xiaoqiang (192.168.31.1)at 64:9:80:9:f5:b2 on en0 ifscope [ethernet]

? (224.0.0.251) at1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]

? (239.255.255.250) at1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]

8.2  RARP

Ø   源2 → 源3

Ø   系统启动时查找自己的IP地址,以便初始化协议栈

Ø   由于存在BOOTP,DHCP等协议,RARP使用较少。

RAPR这个R指的是Reverse,是反向地址解析协议(Reverse Address Resolution Protocol),它的功能和ARP是相反的,它的功能是把源的二层地址也就是物理地址MAC地址转查询获得源的三层地址,也就是IP地址 这个过程,。

这个过程在什么地方用呢,在系统启动的时候,比如我这台机器启动,我自己没有IP地址,在这种情况下,我就要动态的获得一个IP,我把自己的MAC地址广播到网上,网上有ARP Sverver,它查找我的IP地址,并且反馈给我IP,这样我就获取到了一个IP地址,这样,我就可以初始化我的协议栈,进行我的启动流程。

但这个协议已经很少用了,因为,有一些后继协议,比如BOOTP,他除了能够分配IP之外,还能给出启动映像文件的路径,比如你这台机器是无盘工作站你的操作系统文件的网上的路径。

比如DHCP,现在常用常听到的,它不仅能够给出这种IP地址,还能动态的分配IP地址,无论是BOOTP还是DHCP,他们实际上是RARP的一个超集,功能更加强大了,所以现在DHCP这个协议使用的比较广泛了,而RARP。

8.3  IARP

Ø   目3 →源2

Ø   在Frame Relay网络中使用

Ø   由于Frame Relay 的DLCI号码是本地地址,所以解析的结果也是源端的二层地址。

IARP 反向地址解析协议。 (Inverse AddressResolution Protocol);它是把目标的三层地址转换成源的二层地址。像这样一种转换只在帧中继网络中使用,因为在帧中继网络里没有一个全局MAC地址的概念,它的二层地址,就是数据链路层地址都是本地的。DLCI即数据链路连接标识(DataLink Connection Identifier)都是本地的,所以解析的结果不能解析到对端的二层地址,只能解析到本端的二层地址。IARP是一个复杂的操作,在后边帧中继中详解,此处略。

9  ICMP协议

ICMP (Internet Control Messages Protocol)顾名思义,他是一个因特网信报控制协议;这个协议我们通常把它叫做三层控制协议,或者IP控制协议,也就是和IP相关的控制功能,在这个协议里实现了。

Ø   ICMP协议的功能

Ø   几种类型消息的举例

9.1  协议功能

Ø   基于IP进行传输

n   ICMP是一个基于IP进行传输的协议,这个协议本身,它是会被封装到IP数据包里边去进行传输,

Ø   IP的控制协议

n   它有IP层的很多控制功能,比如一些通知消息,一些错误告警消息,都是通过ICMP来进行发送的。

Ø   有许多类别的消息

n   协议的基本功能,它有很多的类别,也就是这么多控制消息,是通过同一个协议进行发送的。所以在ICMP协议里边,类型就是最重要的。所以它有一系列的类型号去规定消息的类型。

n   比如发送给你一个类型为8这么一个消息号,它是一个我的Echorequest,那么你接到Echo request之后,应该回给我一个类型为0的消息,也就是Echo Reply。像这些就是类型号实际上是ICMP功能的分类。

详见《TCP/IP权威教程》第70页,40类消息

9.2  ICMP消息类别举例

9.2.1  Echo Request/Reply

Ø   网络连通性测试

Ø   ping命令基于的下层协议

Ø   类型号8/0

这是一对消息,这对消息做什么呢,就是我传给你一些数据,你再把它返回来,实际他可以做网络连通性测试,比如各个系统上常见的ping命令,那么ping消息本身就是基于这一对ICMP消息来实现的。

     ping的完成细节实际上是给你发一个Echo Request,一个请求消息,希望你回应一个Echo Reply,一个回应消息;那么有了请求有类回应,我如果发送一个请求能接到回应的话,表示这个网络是通的,至少在IP这个层面上,它是通的,因为ICMP这个协议本身是基于IP的。ICMP是封装在IP数据包里进行发送,如果ICMP数据包能够到达对方再回来,那么IP数据包到达对方再回来也一定没有问题。所以则是ICMP做这种网络连通性的测试。

9.2.2  目的不可达消息

Ø   目标网络不可达

Ø   目的主机不可达

Ø   目的协议不可达

Ø   目的端口不可达

Ø   类型号为3

一台机器发送一个数据不见得一定能够到达目的,一旦发现到不了,传输不到目的地,中间的这些网络连接设备可以把这些传输不到目的地的这些数据扔掉,但是你不能直接扔掉,你还要向源主机发送一个告警消息,或者说是控制消息,告诉源主机,你发那个数据到不了,我已经把它扔了。

       这种到不了的消息其实在各个层面上都有可能发生,比如目标网络不可达,你这个IP地址规定的网段都找不着。

       目标主机不可达,也就是说找到这个网,但是这里边没有这台机器,或者这台机器没开机。

       目标协议不可达,你要找的这个机器里边,根本没装你要找的这个目标协议。或者协议端口不可达,也就是上面找不到这个应用。

       实际上多种层面的不可达全都是通过目标不可达消息来进行发送的,这个类型号是3。当然这么多种类型不可达如何去区分,需要有一个代码;所以在这个不可达这个一个大类下又有多少种不可达,具体的不可达,具体的到底为什么给你扔掉了,是哪一种不可达致使您当前的数据被扔掉了,这种不可达代码详见《TCP/IP教程》71页。

实际上这是一种很重要的控制信息,是源主机知道我发送的数据没有到达目的,为什么被扔掉。

9.2.3  源抑制

Ø   解决目的或者中继节点的拥塞问题

Ø   类型号为4

源抑制(Source Quench)解决的是中继或者目的节点的拥塞问题。实际上可以理解为像一个流控的机制一样,如果源主机发送数据太快,目的主机工,作的速度太慢,以至于目的主机来不及接收源主机发送过来的信息,比如IP包,我发的这台机器发的比较快,我收的这台机器收的比较慢,来不及接受处理,这样实际浪费大量的网络带宽,这倒不是一个可靠性的问题,因为丢掉的东西,上层可以做重传,可是你传过去的消息才被丢掉,它来不及处理,影响了网络运转效率。为了解决这个问题,ICMP做了源抑制消息。

那么目的主机在来不及接受来不及处理这种情况下,可以向源主机发送一个源抑制消息,源主机每接到这个ICMP源抑制消息,他就会把发送速率降低一点,直到降到接不到源抑制消息。

那么实际,你看到源抑制消息好像源和目的之间的这种握手的信息,使他们速率能够匹配起来,使得传过去的信息,对方都能处理,不要浪费网络的带宽。

9.2.4  路由重定向

Ø   通知源主机最佳路径信息的变化

Ø   类型号为5

重定向消息,它的类型号是5,比如说这种情况,你网络上有两个路由器,你的主机在发送信息的时候指向了一个缺省路由器,比如你发送给路由器A,路由器A你替我去处理这个消息,去做转发。路由器A是很智能的,他能判断出路径好坏,它会说走我这里实际上不合适,你应该第一条发给路由器B,由它去转发更加好一些。

       那么这个时候,路由器A就会发送给源主机一个ICMP的重定向消息,以后类似这样的事情别再找我了,你找路由器B更好一点。

9.2.5  TTL超时信息

Ø   TTL超时,路由器丢弃数据包后对源主机的错误通知消息

Ø   Traceroute(Tracert)基于的下层协议

n   Taceroute命令,Windows系统是tracert,这个命令可以显示出从源主机到目的主机每一跳的路径,显示出一跳一跳的路由器的IP地址。

n   Traceroute命令的实现基于的原理就是靠TTL超时消息,如何得知每一个路由器的IP地址是多少,traceroute会先发一个数据包,在这个数据包里边TTL设为1,那么吓一跳的路由器接到这个数据包会把这个值置为0,那么这个数据包就会被扔掉,并且会给你一个ICMP消息,那么traceroute命令就会通过分析出来吧IP数据包扔掉的路由器的IP是多少。由此获得了第一个路由器的IP地址,以此类推,traceroute会发下一个数据包,它把TTL设为2,一条条的,我顺次的把TTL设成3,4,5……,以此源主机就知道第一台路由器的IP是多少,第三次第四台……直到目的地点。

n   traceroute和ping命令一样,是一个很好的调试工具,他可以让你直到IP数据包从源到目标经由了哪条路径,也就是经过了哪些路由器。

Ø   类型号为11

在IP数据包的头里边,有一个字段叫做TTL,它是指生存周期,通常在发送一个IP数据包的时候,我们都要置一下TTL的值,这个最大8个bit,所以置成255,没跳过一个路由器这个值会减一,当它减成0之前到达对方主机,那么什么事儿都没有,如果它没有到达目的地就减成0了,也就是当它跳到某一个路由器就减成0 了,这就是TTL超时的情况。我们说这个数据包在网上生存的时间太长了,他已经超时了,那么减到0这台路由器会丢掉这个数据包,发送一条TTL超时的消息,告诉说,你这个数据包在网上泡的时间太长了,我已经把它扔了。

      TTL这个设计从根本上避免了IP数据包在网上无限循环的问题,假设一个IP数据包,在网上没有发生,比如路径发生错误的时候,一个循环路径,它会无限在网上转起来,无限循环下去,这种情况是不好的,所以要避免这种情况,所以设定这种超时的机制,初值为255,过一个路由器减一,一般不可能出现这种,最大情况255个路由器, 这么长的路径才到达目的地点。那么出现循环的时候可能就会出现到减到0了,还没有到达目的地。

9.2.6  IP包头错误

Ø   IP包头错误,丢弃后对源主机的错误通知信息。

Ø   类型号为12

在传输的过程中,有可能IP数据包头发生了错误,那么这个错误是对方无法解析你这个IP数据包,比你这个数据包扔掉了,那么扔掉这个数据包的机器会给源主机发送一条消息,说你这个IP数据包头发生了错误,类型号为12.

刚所说的ICMP,和前面所说的IP,ARP,这三个协议都是工作在网络层,他们实际上TCP/IP在IP这一层或者网络层最重要的协议,也是整个网络运行的基础。

参考《TCP/IP权威教程》第三章网络互联协议的前半部分。

10  IP路由原理

Ø   IP数据包头的结构

Ø   IP路由的基础

10.1  IP头结构

下层发过来的数据,IP要进行封包的操作,所谓封包就是OSI参考模型中encapsulation,叫做封装,封装实际上是一个叫控制的过程,加控制信息,加头信息的过程。

    IP的封装,也就是把上层数据封装成IP数据包,被加了20个自己的头信息,也就是控制信息。

Ø   首先有4个字节的版本号,目前我们使用的都是IPv4,所以在这个地方放的是4。

Ø   紧跟着版本号后边放的是头长度,这个头长度也就是以4字节为单位,也就是32bit为单位的头长度,通常情况下,IP头总共有个20个字节, 所以在这里边,每四个字节为一个单位,头长度是5.

Ø   节写来的8个bit是服务类型,叫TOS(type of service),IP设计这个字段实际上是为对服务类型进行区分,有一些高优先级的服务,包会优先传一些,有一些低优先的等等。但实际在IP去实现的时候,这个字段使用的是非常少的。针对IPv4来说;那么IPv6有一个显著的优势就是对服务类型划分更加强,更加好一些。

Ø   再往下,有16bit的总长度,因为总长度有16个bit,所以在理论上来讲一个IP数据包最大的长度可以最大到65535,也就是64k的数据包。

第二行:

Ø   标识,这个是网上唯一用来区分数据包的

Ø   包分段标识,所谓的这个包分段,包自然就是IP包了,分段呢segmentation,有些时候一个大的IP包无法通过一个小的承载方法,那么这个时候就需要用到包分段。

Ø   举个例子,假如说一个IP数据,它的长度是2k,可是一个以太帧最长不能超过1.5k, 我们经常把以太帧不能超过1.5k这件事情说成以太网的MTU为1.5,( Maximum transmission unit最大传输单元)。怎么办,ip内置有包分段的功能(package segmentation),一个大的ip包会被拆成两个小段,放到两个以太帧里变去进行传输,那么每个以太帧的长度都不大于1.5k,为了适应下层承载的MTU的要求,IP数据包可以进行自身的数据包的拆分。那么包分段标识这个16个bits里边就是放的数据包拆分他所用到的一些信息。

Ø   生存时间 8bits实际上就是上面所讲的TTL字段,最大可以是255,最小可以是0,数用于控制IP数据包不在网上无限循环的传输。最大255,次减到0了,我就把你扔掉。

Ø   协议,8bits,在ip头里有protocol,协议字段,它是为了指明IP包所封装的上层协议是什么,比如TCP,UDP协议,像TCP协议,他在包头中的协议号为6,像UDP协议同样包抱在IP包里头中的协议号是17,到了对方之后,对方的网络层接到了这样的IP数据包,就可以根据这个协议号做出处理,比如看到是6,IP数据包里装的肯定是TCP数据,交由上层TCP处理程序去处理。那看到的协议号是17,这里边装的肯定是UDP协议的数据,那么交由上层的UDP程序去处理。

Ø   校验信息,16bits,提供一个IP包的校验。

Ø   源IP

Ø   目的IP地址

这两行实际上IP端到端传输的两端IP地址,源和目的。这一点看起来比较简单,标识一个从哪来到哪儿去,但实际上这个字段和路由非常相关,整个路由,IP路由从基本上来讲,理论来讲它是靠目的IP地址去进行寻址的,中间的互联路由这些路由器它看到IP包里的目的IP地址,然后根据目标IP地址,找到目的IP地址里边的网络号和主机号,进行两级寻址,把这个数据包送到目的地点。

Ø   所以IP是一个包交换的网络,每个路由独立的按照每个包的地址去做路由的判断,去做数据的转发,这个IP包本身并不规定传输的路径。这当然是从理论上来讲,IP新技术可能跟今天讲的可能会有不同。从理论上来讲,网络上这些中间互联设备,也就是中间这些路由器是靠目的IP地址,也就是依据目的IP地址做数据的转发。

Ø   下边有一些可选信息,optional的字段后边跟的就连着数据部分。

10.2  路由工作方式

Ø   IP的路由器,路由routing这个东西,它是指什么?

²  首先,我们知道网络层的功能,它是做网间的寻址和转发,也就是网络层他做的网与网之间连接、寻址和转发等等这些工作。

²  那么路由就是特指这网间这种操作,如何在网与网之间进行数据转发。

²  路由器就是特指网间连接的这种设备,也就是网与网之间连接的设备,它叫路由器。那么网与网之间连接的,所要做的所有的工作,我们把它总结成为那么叫做路由。

²  在路由器这样的设备里边,为了做路由,它会维护一张表格,这就是我们常说的路由表,routing table;在路由表里边会有很多的项目,每一个项目代表了一个目标网络的寻址方法。

Ø   举例

如图,这当然不是一个真正的路由表,这只是从理论上举一个例子,

²  那么第一项,凡是去10.120.2.0的IP数据包吓一跳走哪里呢,从E0端口出去到一个其他的路由器,

²  凡是去172.16.1.0的IP数据包从S0出去到达一个新的路由器

²  那么现在实际上是不同的网络在路由表里就规定了它的不同的寻址方法,或者说不同的吓一跳地址,即不同的转发方式。

Ø   所有这些路由表里边的项目,某一些叫做connected,直连的,也就是我这个机器一启动,就知道直接和我相连的网络是什么,它的配置是怎么样的,是不是活着的,IP地址的网段是多少;这叫做直连网络。

Ø   另外一些路由表中的项目是动态学习到的,通过一些协议学习到的,这种叫做learned,学习。无论是直连的还是学习到的,在路由表中都是在路由表中一项,每个网络一项。

Ø   当有IP数据包到达路由器的时候,那个这个路由器会查表;查到IP数据包所要去的目的地址所在的网络,表里边这项规定如何做转发,那么就按规则转发这个IP数据包。

Ø   所以说路由器的工作方式其实很简单,就是搞一张表,把所有网上的网号都记在这张表里边,来了IP包就按照这张表转发到相应的地点。如果每一台路由器都维护这样一张表,每个路由器中的表项也都是正确的话,那么数据包就会一跳一跳,经过一系列的路由器由源主机到达目的主机。

Ø   那么整个Internet工作的方式,网间网工作,路由是一个基石。

10.3  路由的分类

学习到的路由被分为动态的和静态的,静态是人为配置,动态的是路由器之间互相交换信息,主动学来的,他们各有自己的应用场合,优缺点也是不一样的。

Ø   静态路由

n   人工培植

n   在很少或者只有一个路由时有用

n   经常用于缺省路径

n   可能会增加管理负担

Ø   动态路由

n   由路由协议依据网络变化自动修改路由信息

ü   静态路由由于它是人为配置的,它的路由往往在正常情况下是最优的,因为,人的头脑选的肯定优于计算得来的。但是静态往往带来比较大的配置压力,当有3-5路由器连接起10-20个网络,在这种情况,你静态的配路由,你可能还配得了。当在很多路由器的情况下,本身就是一种管理负担,挨个配路由就变得不现实。而且这种静态配置不适应网络动态变化;静态配置的路径好,确实在正常运转的情况下是好一些,但是当网络拓扑发生变化的时候,有可能某条路径断掉了呢,如果人工不去敢于,他就不会迂回的找到一条新的路径,那么就不能到达目的地。所以说灵活性会差一些。所以经常用于少量路径的情况下。

ü   动态路由器,是路由器运行一种算法,通过路由之间相互交换信息获得路由表,不是人工配的,动态获取到的路由表,它和静态的优缺点正好是相反的。它是一种灵活的能够自动适应网络拓扑变化。它的缺点就是不同的路由可能有不同算法,有可能找到最优的路由,也有可能找到次优的路径,甚至不好的路径,这取决于网络的拓扑和你具体所采用的算法。

10.4  路由的要素

一个路由包括两件最主要的事情,路径选择和数据转发,它是路由器两项是路由器最主要的要素,也是路由器的最主要的工作。

Ø   路由选择(Path Determination)

n   制作路由表的工作,

n   路径选择是什么?无论你通过静态还是动态的方法计算出路由表,那么网上的每个目标网络,你有一种路由方式,你知道怎么去转,这是路径选择。

n   路径选择,做这张表是一个高智能的工作,你必须执行一些算法,大家互相交换信息,计算出来这个表,而且不同的算法计算的路径可能不一样,是好是坏,有些算法计算的最优路径,有些计算的路径可能差一些。

Ø   数据转发(Data Switching)

n   查路由表做转发的工作

n   也就是已经有了路由表了,来了IP包之后,我根据IP包的目的IP地址,查表,找到转发的方法,把数据包转出去。

n   数据转发,这是一个需要性能的工作,就是看谁转的快。

后边讲三层交换和路由交换的时候,实际上把这两项工作并不放在同一个路由器上去做,而是把某些工作,需要智能的放在高智能的路由器上去做;而把一些需要性能工作,放到高性能的,也就是放到交换机上去做。这样把路由和交换的优势结合起来。

11  IPv6简介

Ø   IPv6优势

Ø   IPv6地址

Ø   IPv6地址前缀

Ø   IPv6数据包格式

IPv4地址紧张的问题,解决办法,第一个是换分子网,也就是subnet,使得地址的利用更加经济和高效,第二个是采用保留IP地址的方式,保留IP地址能使得不同的单位在他们的私网里边采用保留的IP,这样IP能够重复利用,可以解决IP地址紧张的问题。第三种解决IP地址紧张的方法,就是IP第六版。

现在在Internet上普遍使用的是IP第四版,它的一个明显的特征是地址位是一个32bits长度。最大支持地址空间是232,

IPv6在解决地址空间紧张的问题,就是它的地址空间被扩大了

11.1  IPv6的优势

Ø   支持更大的地址空间

n   在IP里边地址由32位变为了128位,也就是理论上说由2128个地址可以被分配或者说被使用,这样从目前来看是一劳永逸的解决了地址紧张的问题,这是IPv6的一个主要,最大的优势,也是我们采用IPv6的一个重要原因。

Ø   基于前缀的地址类型

n   不同的地址有不同的前缀,前缀是固定,那么地址类型就可以很轻易的区分出来

Ø   支持接口自动配置

Ø   支持服务类型的区分

n   Class of Service

Ø   改进了组播的支持

n   IPv4也支持组播,IPv6改进了对组播的支持,在组播上做得更好一些。

Ø   内置的认知加密机制

n   IPSec,IP安全协议,在IPv6中是内置的

Ø   提供了几种IPv4到IPv6的升级方式

11.2  IPv6地址

Ø   如图,202.113.16.118,是一个典型的IPv4地址,它是32位二进制数,被写成了4个十进制数,每个数字是从0-255之间,那么像这样地址,所能表示的最大地址空间是232,也就是4个G的样子,

Ø   IPv6的地址是128位的地址,如果写成刚才点分10进制的形式,就太长了,所以写成冒号分割的16进制的方法。以太网的写法和这个是相似的,只不过以太网的地址只有48位。

Ø   每一个冒号所分开的16进制数据它有4位,也就是这4位16进制数,实际上是16位2进制数;那么我写这样8组这样16位2进制数,就可以表示128位二进制数,中间用冒号隔开。

这个地址写起来经常是很繁琐的,比如,有些冒号之间的是全0,16个二进制的0,在这个时候我们可以有一个简单的写法,把4个连续十进制0缩写成一个0去表示它,这样写法就比较简单了,那么同样,我们也可以把多个前导的16进制0省略掉,比如0001我们把所写成1,0800,我们缩写为800,如下,从地址上,其实没有任何区别,只是便于描述的一种方法:

l  FE80:0000:0000:0000:0001:0800:23e7:f5db

l  简写: FE80:0:0:0:1:800:23e&:f5db

在上述基础之上,还可以进一步简写,因为IPv6地址里边经常有一串零这种情况,比如现在举例的地址,有连续三组16进制的0,当遇到这种连续都是0的情况我们就可以进一步缩写,也就是两个连续的冒号可以替代这中间的所有的0;

l  简写: FE80::1:800:23e&:f5db

Ø   为了不引起二义性,在整个地址中,连续出现两个冒号这种情况只能有一次。

11.3  IPv6地址分类

Ø   unicast

n   这是指单播,当IPv6单播地址的时候,它指代的是一台主机的一个端口,当我们用这个地址进行通讯,也就是进行数据传输的时候,目标地址,也就是目标接收地址也就是这一台主机

Ø   multicast

n   组播地址,IPv4中也有,这个地址所表示的并不是一台主机,而是一组计算机,一组计算机有一个公共的地址,当我把这个地址作为IP数据包的目的地址的时候整个这一组计算机都会收到这个IP数据包。

n   在IPv4中还有一种叫广播Broadcast,指代网络上所有的计算机,实际上它是组播的一种特殊形式,在广播形式的组播里边,所有网络上的计算机都会收到你这个IP数据包。

Ø   anycast

n   IPv6新定义的一种,任意播,在IPv6中,这种形式是一种比较特殊的一种形式,简单的来说它是一种特殊的单播地址,但它同时分配给,也就是这个地址同时分配给多个主机上的接口,当多个主机有着共同anycast地址的时候,那么网络转发设备,比如路由器,它会把目标地址位anycast地址的IP数据包转发给任意任意符合符合这个地址的主机。

n   到底转发给谁,取决于一些策略,比如谁离得最近,谁的带宽最高等等。

n   给IP的传输提供了更好的灵活性。

n   参考《TCP/IP权威教程》第388页。

11.4  IPv6地址前缀

IPv6是靠类别,也就是前缀来区分地址的,那么前缀有很多种方式,

Ø  0000 0000 Reserved

8个0,这里边写的二进制,不是16进制,这个IP地址是Reserved,保留的

Ø  0000 001    Reserved for NSAP

这个是为NSAP保留的,

Ø  0000 010     Reserved for IPX

这个是为IPX 也就是Novell NetWare的协议所保留的

Ø  001 Aggregatable Global Unicastaddress 可聚合的全球单播地址,等同于2000::/3

²  这个是使用的非常普遍的一种地址形式。

²  实际上主机的单播地址,unicast往往就是从001这个地址段分配出来的,

²  比如 APNIC 亚太互联网信息中心,它所拥有的IPv6地址范围是,2001:0200::/23

2001,前边这16个bits,注意它是16进制的数,这16个bits实际上它的前3bits符合 可聚合的全球单播地址它的首3bits为001这种要求,那么后边的20bits是特定的,加起来,也就是相当于前面23个bits;这些地址前缀所决定的IP地址,把它分配给APNIC,然后由他去下分给亚太地区的国家,再下分给不同国家的NIC,然后再分配给不同企业和个人来使用。

所以001开头的这样的IP地址前缀是层级结构的,和IPv4类似,是可聚合的去全球单播地址。

       6tao4Tunnel2002::/16     IPv6和IPv4在转换时所使用的隧道的地址。

       如果一个二进制数,前缀是001的话,他翻译成16进制数进制数应该2或者3的地址。

Ø  另外有些IPv6的地址前缀,比如这种组播的地址,比如本地链路单播的,本地站点单播的等等地址。

11.5  IPv6的数据包格式

Ø  左边是IPv4的数据包格式,右边是IPv6的数据包格式;可以看到IPv4的数据包格式比较复杂,里边有很多的字段代表很多含义,有一些字段并不是常用的,它也包括在IPv4的头中,比如Fragment,但IPv4的数据包发生分组,或者分段的情况的时候,我们用Fragment,也就是分组字段去标识几段之间的关系;当然大多IPv4数据包是不分段的,当不分段的时候,Fragment这个字段还有什么用处呢,说实话它就没什么用处了,这是空着的。也就是有16bits,也就是2个字节的信息是不用的,也就是空着传过去,这显得比较浪费一些。

Ø  在IPv6数据包中这种情况得到了很好的改进,

Ø  首先Vera,版本号,和IPv4一样,占用了4个bits,写6表示是IPv6的数据包

Ø  后边是Class 优先级字段,实际上用于服务类型的区分,它区分的是Class of Service的概念,也就是服务类型,这有点像IPv4中所实现的差别服务,也就是不同的流有不同的服务类型,服务类型放在Class这8个bits里边。

Ø  再往后是Flow LabelS 流标志,IPv6中引入了流的概念,从特定的源发送到特定的目的这样的一系列的报文叫做一个流;对一个流我们可能有特殊的处理方法,比如当前流是个高优先级的流,下一个流是一个低优先级的。要求网络中间设备,比如中间的由器他对每个流做出不同的处理。

如果路由器快速的对这个流做出处理的话,我们希望在IPv6的包头里有这样一个标注,叫FlowLabel;路由器只要看到这个标志就知道它是那个流的包,就知道怎么样去处理它,不需要检查其余的报文头,所以Flow Label也是IPv6很有特色的一个地方。

Ø  有了Class 和 Flow Label这两个字段使IPv6比较适合去传输一些需要QOS的信息,需要服务质量保证的信息。

Ø  Payload Length 有效负载长度,

Ø  Next Header 下一头的指示,IPv6实际是把一个基本的头,和多个扩展的头的,比如用加密,用于认证等等,他们连接起来,然后做这种多头的可扩展的结构。

Ø  Hop Limit,跳数限制,相当于IPv4中的TTL。

Ø  Source Address (128 bits) 源地址

Ø  Destination Address(128 bits)目的地址

Ø  整个IPv6的头要比IPv4的头实际要长一些;但实际长出来的部分主要是因为IPv6的地址比IPv4占用更多的空间;总的来说总这个效率上来讲,它比IPv4要好的多。

12  TCP/UDP协议

Ø   TCP/UDP

Ø   端口号

Ø   TCP的可靠性的保障和流控

12.1  TCP与UDP

Ø   TCP和UDP都是传输层的协议;参考《TCP/IP权威教程》136页第五章

Ø   TCP和UDP,为什么要提供两个传输层协议?

因为它们提供的是不同功能的传输,TCP叫做Transmission Control Protocol 传输控制协议,它是面向连接的,可靠地,带流量控制的。什么叫面向连接呢?就是说在所有的传输开始之前要先建立连接,然后传输数据,所有的传输结束之后,要撤销连接,那么在建立和撤销连接之间,数据是可靠的。;在这里可靠地意思主要就是不丢失,不错误,不乱序,如果丢失了错误了,TCP会把数据进行重传;如果乱序了,也就是顺序改变了,TCP会负责排序。所以说TCP是一个面向连接的协议。

      

Ø  UDP,User Datagram Protocol,叫用户数据报协议;

这个协议正好和TCP相反,它是没有连接的,是不可靠的, 它有数据就直接发送,并没有建立连接,撤销连接的工作,也没有重传,排序的功能。

Ø  到第一个高层的应用是使用TCP传输还是UDP传输服务,取决于高层应用的特性。比如大家经常HTTP服务,也就是web主页的传输,它所基于的就是TCP,面向连接的。另外一些,比如SNMP,网路管理协议,他所基于的就是UDP,这种无连接的服务。

Ø  通常一个应用,一种服务,要么使用UDP,要么使用TCP,但是偶尔也有例外,比如DNS系统,域名系统,它既使用TCP端口53,也是用UDP端口53,他在不同的时候,比如域名查询的时候使用的是UDP协议,域名之间的同步经常使用的是TCP协议。

12.2  端口号

Ø  端口号,在TCP和UDP中都有的概念,port端口号,它实际上是用于应用的区分;而上面不同的应用程序在做传输的时候,都经过TCP或者UDP;那么如何去区分开,也就是到了对方,如果去区分这个TPC数据包里边所包含的是FTP数据还是Telnet数据,这是靠端口号去区分的。

(端口号)

Ø  如图,FTP,文件传输的服务,和telnet远程登录的服务,他们都是用TCP的传输去做数据传送,他们拥有不同的端口号,FTP的端口号是21,Telnet的是23。

Ø  Port,端口号实际上适用于上层应用的区分。这个项目会被封装在TCP的数据包头里边传到对方;比如对方主机当接到了一组TCP的数据,看到了里边的目标端口号21,就知道是FTP,做文件传输;如果看到的目标的端口号是23,那么就该做Telnet。

Ø   

Ø  整个端口号里边分为两个类别,一个是公用的,Well-Known Ports,叫做周知端口号;另外一种是临时端口号

n  周知端口号,它的范围1-1023,这些个端口号是用于周知的服务提供方,用于守候的端口,便于客户端来连接。比如一个Web服务器,一个HTTP服务器,它的HTTP,超文本传输协议它的端口是80,这是一个指定的号码,80这个号,如果Web服务器提供web的话,他就会在80端口上去守候,等待别人来连接,等待客户端的访问。也就是说80这个端口号是周知的,所以偶的浏览器客户端都知道,在通常情况下,WEB服务器运行在某一台机器上的80端口;当我想访问这个机器的上HTTP谢谢的时候,我就会访问它的80端口。同样访问TFP服务的时候,会访问服务器的21端口。

n  也就是说每一种周知的服务会运行在一个周知的端口上,便于客户端来这里访问,来服务器这一端访问。这是周知端口。

Ø  由于端口是用于应用的区分,在客户那一方,它也需要端口号,客户那一方的端口我们把它叫做临时端口。临时端口通常是大于1023的值。

n  实际上客户有IP和端口号,服务器也有IP和端口号;在一个数据的传输过程中,在客户和服务器之间实际上是建立了一个传输层的管道,有客户的IP+端口定义了管道的一端;服务器的IP和端口定义了管道的另外一端,如果两端都定义了,那么这个管道是唯一的,在这个管道里就可以用来传输用户的数据。

Ø  与端口号经常提的叫socket,套接字,socket如果直译它是插座的意思,socket和port很多时候指的是类似的东西。

n  但实际,socket更常用于编程的时候,它并不是一个协议的内容,它只是一个程序程序设计的接口,具体来说是传输层程序设计的接口。

n  一个socket是一个三元组,这个三元组包括:协议,本地的IP地址,本地的端口号。那么有这样一个三元组就可以唯一的决定管道的一端,这个实际上是为编程人员提供方便,编程人员在调用TCP和UDP的时候,就可以用标准的socket公共的接口来调用,而不需要关心TCP和UDP的下层服务是如何提供的。

12.3  TCP的连接建立和数据传输

12.3.1  TCP的连接建立

TCP的连接建立,连接撤销和它的窗口机制,所有这些都是TCP的可靠性保证相关的。

在前面所讲的,TCP和UDP的区别的时候,我们讲到TCP是一个面向连接的服务,而UDP是一个无连接的服务。

TCP有可靠性保障的功能,这种可靠性保证分为两个部分:

Ø  一部分就是在传输建立和撤销的时候,做可靠性保证。

Ø  另外一个部分是在传输过程中的,传数据的时候做可靠性保证。

这两部分可靠性保证是如何实现的,我们先看下TCP建立和撤销连接它的可靠性保证,例如,TCP连接的建立,

(TCP连接的建立)

Ø  如图,TCP连接的建立,那么这个连接需要三步的过程,我们经常把它叫做三步握手three-way handshake。

Ø  当主机A想和主机B建立连接的时候,那么主机A 向B发送一个Synchronize信号,也就是SYN同步信号,表示我有这种建立连接的请求,

Ø  主机B接到了这个Synchronize信号之后,要给主机A一个回应,也就是ACK,Acknowledge,表明我同意建立这个连接,并且同时向A说我也有建立连接的请求,也就是主机B发给A的信息,除了有队A的回应ACK之外,还有自己的请求,也就是SYN,Synchronize

Ø  那么A要对B的请求再做一次回应,也就是它给B发送的最终的第三步信息里边也会带ACK的信息。

Ø  实际上三部握手保证了两个流程。A向B发Synchronize得到了Acknowledge,B向A也发Synchronize,也得到了Acknowledge。这样,双方的建立是确切的可靠地,也就是两房都会得到确认之后才会建立连接。这样就保证了连接建立的可靠性,这叫做三步握手(three-way handshake)

Ø  那么在这个握手的过程中,除了给出Synchronize,Acknowledge这种同步和应答的消息之外,还会有一些序列号的传递,比如A在做同步的时候告诉B,Seq,也就是Sqquence号等于100,也就是告诉B说我现在传送数据是从100这个号开始的,或者说从100开始来计数的;B告诉A 说Seq=300,我是从300开始计数的。那么在这种情况下,你可以想象,A从这个过程往后,它所发送的数据会是第101个字节,102个字节……因为它从100开始计数。而B给A发的数据会是301个字节,302个字节,因为它是300开始计数的。也就是A和B在建立连接的过程中,除了有这样的请求应答之外,还会告诉对方,我初始的序列号是多少,Seq是多少。

Ø  和Synchronize所并列的是Acknowledge,Ack的号码,那么B给A的ack代码是101,A给B的应答号是301,从这两个数据上,我们就是可以看出ack在TCP协议中是如何使用的。ACK实际上是对对方传送数据的一个应答,也是对方下一个传送数据的期待。

Ø  A对B说,我现在发送的数据是第100个字节,或者说我们两个从第100个字节开始计数,B通过ack=101,通过这样一个信息,告诉A,我期待你的下一个数据它的序列号应该是101。那么同样,B告诉A说,我是从300开始做初始的计数,A告诉B说,我是从301开始期待,或者说我期待你的下一个字节序列号是第301个。

Ø  所以说TCP这套连接建立的过程可以很好的建立一种可靠的传输,或者叫初始这种传输,这里边涉及到了Syn,同步的控制信息,涉及到ack,应答的控制信息,这是连接建立时的可靠性。

12.3.2  TCP的数据传输

Ø  如图,红色表示A传出的数据,绿色表示B传输的数据。

Ø  顺次看,首先,A Send 1,发送第一个TCP数据,并且告诉对方Windowsize = 3,也就是窗口的大小等于3;Window和Send都是A,也是就是发送源一方的控制信息。Window size = 3,表示A方,我的缓冲区还是3这个么大,也就是最多可以接收3个数据,我现在发给你的Send 1是第一个数据。

Ø  往下,第二个,第三个数据,窗口大小不变,实际上A把数据123三个数据给了B,那么B,现在对A做出应答,Acknowledge,ACK 3,也就是我期待的下一个数据是第三个数据,A其实刚才自己已经把自己的第三个数据送出来了,为什么还要期待3呢,这里,有可能A送出的第三个数据丢掉了,也就可能接收到的是错误的信息,所以B还向A要第三个数据,并且告诉A,我的Window size=2,也就是我最大还能接收2个数据,从现在开始我还有两个缓冲区的接收你的信息。A接到了B 的请求以后,它会重新传送第三个数据,并且告诉对方Window size = 3。也就是说我这边缓冲区还有3,并且我把第三个数据重新发送给你。由于B告诉我它的Windowsize = 2,也就说他最多只能容纳两个数据了,所以A发送了Send 3,和Send 4 两个数据。B现在告诉A,我期待你的下一个数据是5,这里边隐含的意思是,你刚才发的3,4我已经收好了,我现在期待第5个。Window size还是2,怎么样变成了2呢,因为你不断接数据的时候,上层应用会不断从你的缓冲区中把数据拿走,所以缓冲区会空出来,本来B刚才已经接受到了2个,Window size应该是0了,但是上层应用拿走了两个,所以又空出来两个,所以还是2。

Ø  通过改变窗口的大小可以获得端到端的流量控制。也就是主机A和B之间这种窗口的机制,也就是靠Window size的机制去控制它们之间的流量。实际窗口大有大的好处,小有小的好处。如果窗口越小的话,那么重传的来的越及时,但是反复的应答信息要多,延迟更大。如果窗口大的话,可能重传来的不及时,滚回的更多,但是这种等待应答的延迟会更小。

Ø  在TCP的头信息中,也就是控制信息中,有三个是比较重要的,第一个是Sequence Number号,序列号;第二个是Acknowledg,应答号;第三个是Window size(缓冲区的大小);通过这三个号码的组合作用,实际上一方面保证了传输的可靠性,另外一个提供了流量控制的功能。

12.4  UDP协议

Ø   无连接的,不可靠

Ø   仍然有端口号机制,可以做应用的区分

UDP协议和TCP协议处在同一层次上,它只有端口号的机制,可以做应用的区分,但是它没有连接的机制,所以刚才所说的TCP那序列号,窗口,应答号,包扣三段握手的机制,UDP都是没有的,它是很简单的一个协议,只是提供了一个端口,让双方作出应用的区分就可以了。

13  应用区分和可靠性保障

Ø   TCP/UDP协议头结构

Ø   其他层次的协议区分

Ø   其他层次的可靠性保障

13.1  TCP协议头结构

Ø  在TCP协议头中,最前的两个字段是源端口号,目的端口号,关于端口号port,它是做应用区分的。如何去标识上层的应用,在TCP的头里边是靠源端口和目的端口这两个字段。

Ø  下边有两个头字段,一个是序列号Sequence number,SYN这是用于发送方的计数,

Ø  一个是应答号,Acknowledge number,ACK这是用于接收方的确认应答。

Ø  再往下,是以4字节为单位的头长度,一些保留字段,一些控制位。

Ø  控制位这里边有6个bits,包扣syn,ack这些都是在控制位里边的控制bit,

Ø  再往下是一个16bits的2进制数,这是一个窗口号,用于做流量的控制,

Ø  下面有校验信息,有紧急数据指针,还有一些可选项。

Ø  在20字节的标准头后边有可选项,和应用数据的部分。

Ø  可以看到TCP协议的头有20个自己。IP协议头,它的标准头长度也是20个字节。也就是说在应用数据之前,在传输应用数据的时候,在打这个IP数据包,这个包的前边有IP头20个字节,还有TCP头20个字节,加起来也就是40个字节的控制信息。后边会提到TCP/IP的头压缩,在配modem的时候,它会问你TCP/IP头压缩是否开启,头压缩所针对的就是这40个字节的TCP/IP头。

13.2  UDP协议头结构

(UDP头结构)

Ø   UDP头结构非常简单,因为它没有TCP协议的控连接制,也就是它没有面向连接的控制,可靠性保证自然也就没有了,所以头信息就变的简单一些了。

Ø   UDP的前两个字段仍然是源端口号和目的端口号;上面讲了UDP虽然没有可靠性的保障,但是仍然可以做应用的区分。

Ø   下面是UDP数据的长度和校验信息。在校验信息这里,UDP所校验的并不仅仅是UDP头的数据,好包括IP头,UDP下一层IP头的一些信息。从这一点可以看出UDP和IP是一种紧密的绑定关系。这也可以看出,TCP/IP协议并不完全符合OSI RM标准的要求,并不是像OSI RM那么样在各个层之间定义了一种非常清晰的结构,和上下层之间的调用。

Ø   在TCP/IP协议栈中,TCP/UDP/IP这几个协议通常是绑在一起由系统来实现的。并不存在一个厂家的UDP和其他厂家的不一样,这样保证了协议之间的互操作的能力。

13.3  其他层次的协议区分

在上面讲到的TCP/UDP连个协议的功能的时候,特意提到了两点,一个是协议区分,一个是可靠性保证。这两个功能其实并不是传输层协议所专有的,在其他许多层次上,你也能看到这两项功能。

首先协议区分它是一种相对公用,通用的东西,那么你这边有多种不同的应用协议,都放在TCP里边,去用TCP去进行传输,比如说你有HTTP的数据,你有FTP的数据,Telnet的数据等,他们都用TCP协议去进行传输,那到了对方我自然有了区分的需求。我的知道TCP数据包里边哪一个装的是HTTP数据,哪一个是TFP数据,我有应用协议区分这种需求。

其实下次协议也有类似的需求,比如说你TCP的数据,UDP的数据都装在IP的数据包里进行传输,那么对方再收到这个IP数据包的时候,它也有区分的需求,我的区分一下,哪个包里边装的TCP数据,哪个包里装的是UDP数据。

以此类推,IP,IPX,ARP包都在以太网上进行传输,那么作为以太的目标主机,他也要区分一下,哪个以太包里装的IP数据包,哪个装的IPX数据包等等。

也就说在不同的层次上协议区分这件事情都是需要的,都有这种需求,不同层次上的协议区分是靠标识符去完成的。比如我们前面所讲的传输层的协议,也就是四层协议,他要去做应用层的协议区分是靠port,这个端口号来完成的。如上所说的周知端口的概念,比如HTTP它的周知端口号是80,当任何一个TCP的数据送过来,它里边的目的端口号是80,访问服务器上的80端口,缺省情况下,他所访问到的都是HTTP的服务。那么我就可以通过80去区分开里边装的是什么样的高层协议数据。如果是21,那么说明他想访问的是FTP的数据。

在TCP或者UDP里边是靠port,端口号去区分上层的应用协议。

在网络层的IP协议里边是靠什么区分TCP/UDP/ICMP等等这些封装在IP数据包里的数据呢?他是靠IP头中的一项,叫做protocol,也就是协议这一项。那么IP头里边protocol这个代码是8bits,也就是从0到255,其中6表示TCP,17表示UDP,1表ICMP(InternetControl Messages Protocol 因特网报文控制协议),那么现在,对方的主机主需要接到IP数据包的时候,判断一下它的protocol字段是6还是17,就知道IP包里所封装的数据上层应该交给TCP相关程序去做处理还是UDP的相关程序去做处理。这是在IP这个级别上,它是靠protocol去做区分的。

再往下,对于以太网,以太帧头是用什么去区分三层的,网络层的协议呢?也就是数据链路层中以太这种传输方法它是靠以太中的一个type号,类型字段。在以太中 的类型字段是一个16 bits的2进制数,我们把它写成16进制的形式,当这个类型字段表示为0800的时候表示以太帧里装的是IP数据包,8137表示以太帧里装的IPX数据包,0806表示装的是ARP的数据。

有关协议的区分实际上是一个很通用的概念,任何上层到下层都需要一个区分的标识符,这也是我们在OSI RM中所提到的服务访问点的概念,我都需要一个区分的标识符去区分下层的数据里到底装的是哪个上层协议的数据。

这个区分从应用层到传输层,从传输层到网络层,从网络层到数据链路层他们使用的是不同的标识,分别使用的是port号,protocol号,type号去做区分的。

13.4  其他层次的可靠性保障

Ø   应用层:TFTP

Ø   传输层:TCP

Ø   网络层:X.25

Ø   承载层:许多无限传输方式

Ø   在哪层实现可靠性保障取决于性能和可靠性要求。

在前边将传输层协议的时候,讲到,TCP是有可靠性保障的,而UDP是没有的,那么通过UDP所传输的那些数据,并不是说他们绝对不需要可靠性,比如UDP上层有TFTP,简单文件传输协议,还有SNMP,简单网络管理协议,这些协议,他所传输的数据并不是错了没关系,虽然它基于的是UDP传输协议是没有可靠性保证的,那么这个错误处理,可靠性保障是在其他层次上去做处理的。

几乎任何层次都可以做可靠性保证,取决于你对性能和和考星的要求。比如不同协议做可靠性保障的方式不同。

Ø   应用层:像在应用层,TFTP 简单文件传输协议,它本身就有可靠性保证的功能。在应用层里边,TFTP在文件传输的时候它会自己做每一个数据块的校验,传来一个数据块,我会校验一下他是否正确,如果正确才接下一个数据块。TFTP在应用里边做这种校验和应答的服务,所以它就不需要下载去提供可靠性保证。

Ø   传输层:TCP可以做这种可靠性保障的工作。在网络层IP是一个尽最大可能传输的系统,也就是我尽最大的可能把数据传输到目的地,如果传输不到,或者说传输错误了,IP本身并不做报错或者纠错的工作,因为IP上面有TCP,是靠TCP去处理。

Ø   网络层:但是和IP平行的,其他网络协议有一些是有这种可靠性保证的功能的,回去做应答,纠错重传等等,比如X.25,它是一种相对古老的广域网协议,X.25所向的承载层介质是非常差的,比如传统的电话线,它产生错误的几率是很高的,在这种情况下,X.25数据包本身,多个X.25设置之间传输X.25数据包的时候,它本身有一种可靠性保证能力,会去纠错,会去做重传。

Ø   承载层,通常承载层没有这种可靠性保证能力,但这并不是绝对的,比如在很多无线传输方法上,因为无线传输要过空中链路,而空中链路极易受到干扰,传输可靠性是很差的,所在在这种情况下,无线承载,比如GSM等等,他会做自己的可靠性保证,它会做编码,交织等等。

Ø   那么TCP/IP的层次一共就有这四个层次,也就是承载、网络、传输和应用。在每一个层次都可以看到有可靠性保障实现的实例;到底在一个具体应用上,或者在一个具体协议层次上,传输的可靠性在哪个层次上去实现呢,很多时候是一种权衡,是平衡性能和可靠性的要求。

Ø   实际上在你所面向下层网络越差的情况下,比如说无线的网络,这种情况下,我们倾向于第一层也就是承载层去做可靠性保障,因为它带来的性能更高一些。网络传输越好的情况下,我们越倾向于高层去做可靠性保障,这样性能更高一些,因为当网络的差的时候,最好做分段的,不要做端到端的可靠性保障,性能高。而网络可靠性非常不错的时候,那么这种分段的应答,重传会带来额外的延迟,这样性能反而会被降低。所以在实际的应用中,在哪一层做这种可靠性的保障,是取决于性能和可靠性的要求。

实际,网络设计是一个很灵活的过程。

14  DNS协议

Ø   名字空间

Ø   域名服务器

Ø   DDNS

Ø   其他目录和名称协议

名字服务,Domain Name Service,它是一种什么样服务呢?它是将机器的名字变成IP地址,这样的服务。

在TCP/IP的协议中,名字(主机名)是属于应用层的概念,IP地址是网络层的概念,为了便于用户去记录主机的位置,当然记这个IP地址是非常难记的,而有一定意义的名字,用户比较好记一些,所以需要网络自动的去提供这么一种名字到地址之间的对应,也就是名字解析的问题。

实际,这种上下层之间的地址翻译,在整个TCP/IP体系中,并不只名字和IP地址之间;其他,比如IP对以太地址翻译,也是存在的,比如你拿到了目标主机的IP地址,为了在以太网上做具体的传输,你要通过ARP协议(Address Resolution Protocol)去做翻译,把它翻译成为一个目标以太地址。

无论从主机名字到IP地址,还是IP地址到以太地址的翻译,他们都是地址解析的过程,从这个意义来说,DNS和ARP有一点类似的地方。

14.1  名字空间

从Internet最初发展的时候,并不存在名字空间的问题,那时候主机的数目很少的,主机和名子之间完全是靠一个文件去做对应的。也就是有一个公共的机构,他维护一片文件,叫做host.txt 文本文件,在这个文本文件记录Internet中所有主机对IP的对应关系,那么这个文件只要保证及时的更新,我就能让整个的网络,可以让每台机器做名址解析,每新加一台机器,我就在这个文件中添加一行,不断的把这个文件发放给所有Internet网上的机器,那么这个名字解析的过程就可以完成了。

但是随着Internet的发展,这种方法的可扩展性就太受局限了,每添加一台都要在核心文件里边要添上一条记录,随着网络规模的叩打,成千上万太主机加入Internet中,这种用单一文件去维护名址对应关系的方式就变得不适用。为了使名字解析功能呢更加灵活,更加有可扩展性,制定了一个名字空间的规范。

Ø  首先有一个虚拟的根,也就说有一个根,所有的一级域名都是在根之下的,比如大家熟悉的COM,commercial的缩写,商业的命名,EDU,education,教育的缩写,教育的命名;GOV,government政府的缩写,ORG,organization组织的缩写,后边还有一些域名是是按照国家来进行分类的,比如CN,China的国别代码,FR,法国的国别代码,JP,日本的国别代码。

Ø  所以一级名字包括两类,一类是组织名字,一类是地理名字,在一级名字下面还有有二级名字。比如在COM有一个在dotraining,在CN下有一个中国内的一个二级的COM的名字dotraining。

Ø  那么整个名字空间是按照层次结构来划分的,每一个层次都有一个管理者,每一个管理者只需要维护这套层次关系,并且管理这个层次下边的名字,这就可以了。这样名字空间就更加有可扩展性。

Ø   DNS由RFC1034/1035描述

n   RFC叫Request ForComments,中文经常译为请求文档,整个TCP/IP协议栈,无论是协议栈内容,还是协议的建议都是有RFC来描述的。RFC是由IETF,也就是国际互联网工程任务组(The Internet Engineering Task Force)来进行维护的。比如IP,DNS这些协议,他们都一个RFC的编码,你可以查这个编码找到相应的文档去看协议规范的你内容。这是低一点,DNS是由哪个协议所规定的。

Ø   HOSTS文件仍然保留

n   Uninx和类Unix系统里边都还保留有hosts文件都是保留的,在名字解析的时候,主机往往进行几级名字解析,因为操作系统的不同这个解析的级别也是不同的。通常都是找到本机的hosts文件,在里边做查找,如果本机hosts找不到的话才会用DNS去做解析。

Ø   顶级域包扣七个组织代码:COM/EDU/ORG/MIL/INT/ENT/GOV

n   MIL是军事用的,这七个组织的老的传统的组织代码

Ø   顶级域还包括ISO3166定义的国家代码:从阿联酋(ae)到津巴布韦(zw)

n   国别代码是按照ISO3166所定义的标准来直接套用的。比如CN,JP都在这里边

14.2  域名服务器

名字和地址这种对应关系,它是保留在名字服务器里的,名字服务器是为客户去做名址解析这样一种设备。分为三种:

Ø   主名字服务器(primary name server)

n   主要的名字服务器,那么这种名址对应关系肯定是保存在这样的服务器里边,你做名址查询的时候,这样的服务器是会给你名址查询的结果。

Ø   备用名字服务器(secondary name server)

n   它是主名字服务器的备份,一方面他是做荣誉的备份,如果主名字服务器宕掉了,那么备用名字服务器可以去替代它的功能。

n   另外一方面和个主名字服务器之间有负载匀衡的能力,如果主名字服务器非常忙的情况,备份名字服务器也会给出回答。

Ø   仅缓存名字服务器(cache-only name server)

n   在上述主和备用名字服务器之外还有一种叫做Cache-only nameServer,仅魂村名字服务器

n   那么在名字服务器里,缓存都是会实现的一个功能,那么刚才我从远地解析出一个名字,为了下次还有别人还是查询这个名字的时候,我们更高效的给他解析,所以我会把刚才的名址对应关系缓存在本地的内存里边,缓存在名字服务器的内存里边,无论主还是备用名字服务器,他们内部都会有缓存,这样才能提高整个名字解析的效率,但是这种缓存属于附加的功能,加载主,备用名字服务器之上,那么这种Cache-only name Server它是仅用于缓存,它里边并没有名址解析的存储,它只是为了缓存来使用的,仅为了提高性能。

n   比如说你的单位有100-200台计算机,你所使用的名字服务器如果是在广域网的另外一端,那么名址查询的信息会占用你的大量的带宽,为了避免这个问题,你在本地设置一个仅缓存名字服务器,那么这个名字服务器并不做一个域的管理,而是仅用于在本地缓存查询的结果,提高整个查询的性能和网络带宽利用率。

Ø   DNS靠TCP/UDP 53端口号进行标识

n   查询通常使用UDP 53端口,一种不可靠的服务

n   名字服务器之间的同步是靠TCP 53,53是1-1024之间的一个端口号,也就是我们前面所说的周知端口号。

14.3  DDNS

Ø   动态的DNS

n   传统情况下,服务器的IP都是固定,有一台Server,它的IP的地址是固定的,它的名字自然也是固定的,所以名址的对应关系是静态的在DNS 服务器上的,假设你提出一个qq.com,他一定会被解析成192.168.1.1;一个IP地址。

n   但是现在有一些情况,我们需要用到动态的DNS,比如你的家里边是宽带上网的,你的机器是经常连接在网络上的,但是你的机器的IP地址是动态的,当你想给你动态IP的机器一个固定的名字的时候,面临一个问题,就是我怎么能把一个固定的名字解析成一个动态的IP,也就是随时更换的IP,比如你的电脑重启了那么拿到的IP就和之前的不一样了,那么这个IP怎么能和原先的名字动态的映射,而不是固定的写在DNS里边,这是一个新的需求。像许多人他提供以一种私人的服务器,往往就是DDNS,动态的DNS去做名址的解析。

n   动态DNS主要是一种动态的去更新DNS服务器中映射的方法,原先的映射是静态的,管理员手输的。现在我规定了一种协议,你可以按照这种协议,去向DSN服务器发送更新请求,把它的原来的不对的,旧的DNS对应关系变成新的正确的。

Ø   提供了客户机更新DNS服务器中映射的方法

Ø   DNS更新即刻生效,无需管理员参与

n   由于这个这种协议是自动的去请求DNS服务器,更变这种映射,所以他的更新是及时的,即刻生效的。

Ø   认证DNS更新,防止未授权的访问

n   由于是动态更新的,所以带来的问题就是安全的问题,如果任由所有客户机去更新DNS中的映射,肯定是一个安全的漏洞,我可以把一个域名指向域名所有者所不知道的一个IP地址。所以这里有个安全问题,DDNS是靠认证DNS更新来防止这种情况的。也就是动态的DNS数据包它本身要是经过认证的,这样就可以防止未经授权这个过程。

14.4  其他目录和名称协议简介

14.4.1  NIS(网络信息系统)

Ø  SUN公司的标准,主要出现在Solaris系统上、

Ø  提供在大量系统上一致的管理用户ID、组ID及其权限的方式

14.4.2  WINS(Windows网际名字系统)

Ø  Microsoft的标准

Ø  提供NetBIOS名字到IP地址的解析

Ø  Windows系统上原先所使用的基本协议是NetBIOS协议,从Windows98之后,TCP/IP协议才作为一个天然的协议加到系统中。NetBIOS本身并不支持网间的连接,他把NetBIOS的地址直接映射为机器的物理地址。所以当Windows系统加入Internet中,面对的一个问题就是这种平滑过度的问题。如何使得原先使用NetBIOS名字系统也能够使用TCP/IP协议栈,所以微软开发了WINS。他把NetBIOS的名字转化成IP地址,再利用TCP/IP协议去进行原先的NetBIOS的通讯,因为TCP/IP协议提供一种网间网的连接,所以NetBIOS基于TCP/IP之上可以进行提供这种网间的服务。这就是大家常说的NetBIOS overTCP/IP

14.4.3  LDAP(轻量目录访问协议)

Ø  X.500的简化版本

Ø  因为X.500的实现成本比较高,不适于集成到操作系统里边,所以使用LDAP这种轻量的协议。

15  其他应用层协议简介

15.1  TELNET

Ø   远程登录服务,提供网络虚拟终端(NVT)

Ø   基于TCP

Ø   大多数Telnet实现是基于文本的,用ASCII码表示字符和命令

n   模拟一种远程登录,这种服务,一般普通用户使用的机会比较少,Telnet这种服务在Unix这种使用命令行的系统上应用还是比较广泛的,配置路由器配置交换机也会用到Telnet远程登录这些网络设备去进行配置。

Ø   由RFC845/855描述

Ø   周知端口号23

以前是有这种终端设备,提供本地终端,它是系统提供给用户的一个操作界面。

(Telnet远程登录示例)

15.2  FTP

FTP 是File Transfer Protocol(文件传输协议)的英文简称;文件传输服务在Internet是非常普遍的,很多共享软件共享资料是通过FTP服务器提供共享。那么大家在下载的时候需要FTP协议去连接服务器下载这个数据,下载文档等等。

TFP本身要占用两个端口,也就是说要建立两条连接,一条连接作为控制连接,去传输控制的命令,另外一条是数据连接去传输数据,比如我们刚才所提到的共享的文档。这是FTP和其他的协议有所不同的地方。

Ø  基于TCP

Ø   文件传输服务,分为控制链接和数据连接

Ø   使用一系列文本命令控制数据传输

n   在控制链接上,所传输的是一些列文本的命令和回应,

n   在数据连接上,所传输的是实实在在的文档。

Ø   由RFC959/2228描述

Ø   控制连接的周知端口号为21

n   也就是服务器一方,等待控制连接的周知端口号是21

n   和它相对应,数据传输的周知端口号是20。

Ø   在使用FTP的过程中,大家经常听到标准模式(standard mode)和被动模式(passive mode),被动模式反转了数据连接的建立方向,也叫做防火墙友好方式。

(FTP标准模式和被动模式)

Ø  左边是FTP标准模式,在标准模式下,FTP协议是如何运作的?

n  首先客户机向服务器提交了什么,申请port2010,也就是在控制连接上,客户机向服务器说我方打开了2010端口,等待你方的文件传输。

n  服务器向客户器说port2010 OK,表明服务器认可了客户机的2010端口将来会作为文件传输的目标端口。也就是作为客户机上它打开一个2010端口,去等待服务器上传来的数据。

n  服务器的Data是向客户机的2010端口申请进行传输的。

n  这里要注意的是数据连接是服务器发起,终结点或者说目的地是客户机,而控控制连接是客户机发起,终结点是服务器。在这种情况下,相当于,在控制连接上,客户机向服务器进行请求,而在数据连接上,服务器向客户机进行请求。也就是双方都有发起请求和接受请求的工作。

n  标准模式在有些情况下不好用,主要是对防火墙不友好。另外一种叫被动模式,也叫做防火墙友好方式。

Ø  所有防火墙友好,假设在客户机和服务器之间,有一个防火墙,防火墙是网络安全设备,防火墙在默认缺省情况下,内部的机器访问外部的机器,它是云讯,而外部的访问内部的时候他是不允许的。也就说像刚才刚才所说的标准FTP模式,服务器向客户机发送这种数据连接的请求,会被服务器和客户机之间的防火墙阻隔掉。所以标准模式的FTP连接,有可能被防火墙当做外网对内网的攻击把它隔绝掉。如何做到防火墙友好的模式,只能是客户机内部向外部发起请求,所以不管是数据连接还是控制连接,都有客户机向服务器发起。

n  如图有测,被动模式流程,首先客户机询问服务器,你是否支持Passive模式,

n  服务器说Passive OK,Port1490,意思就是说我支持Passive模式,我已经打开了本地端口1490等待你的数据连接传输。

n  客户机在收到服务器的回应就知道了,服务器已经打开了1490端口,我本方,客户机打开一个端口向服务器的1490提出请求。注意,在数据连接上,现在也是客户机向服务器提出请求,这一点和标准模式相反,这就是被动模式。

n  FTP的标准模式和被动模式差别就在于在数据连接建立的方向有所不同,到底谁提出建立请求,被动模式是为了避免服务器向客户机发送这种数据连接的请求,会被服务器和客户机之间的防火墙拒绝掉的情况。在TFP软件中,会看到PASV,也就是被动模式。

15.3  TFTP

TFTP,在FTP前面加了T,就是Trivial的意思,简单的,所以他是在FTP服务的基础上进行简化,简化版本的FTP,TFTP基于的下层协议不像TFP是TCP,而是UDP,也就是它基于第四层的不可靠的传输,没有可靠性的保证,如果TFTP没有可靠性保证,他所要做的就是自身做可靠性的保障,也就是应用层的可靠性的保证。

TFTP主要用于近距离的,小文件的在高可靠性链路上的传输。比如说局域网,比如向路由器传输一个启动镜像文件,传输一个配置文件。

Ø   极其简单的文件传输协议

Ø   基于不可靠的传输,没有安全性保障

Ø   数据报文最长512字节,少于512字节认为文件结束

Ø   发送下一数据前,需得到上一报文的确认

n   换句话说TFTP自身做了一个个报文的确认

Ø   TFTP靠UDP 69端口号进行标识

15.4  SMTP

Simple Mail Transfer Protocol是一个邮件传输协议,是Internet的标准

Ø   邮件传输协议

Ø   基于文本命令、应答和数据与服务器交互

n   它是基于文本的命令和服务器交互,有向服务器有这个发送信件的请求,有应答,有信件的数据,所有的交互全都是基于文本的。

Ø   SMTP靠TCP 25端口号进行标识。

15.5  POP3

Post Office Protocol - Version 3,即邮局协议版本3,它是SMTP的功能是相辅相成的,有一定的互补性。

通常情况下,在你使用比如微软的Outlook,邮件客户端软件的时候,你的发信协议是SMTP协议,而检索,下载删除邮件使用的通常是POP3。

Ø   邮局协议版本3

Ø   提供邮件的检索、下载和删除功能

n   POP3提供的是向邮件服务器去检索邮件,下载和删除邮件,也就是现有邮件处理,提供这么一个功能。

Ø   POP3靠TCP 110端口号进行标识。

15.6  HTTP

超文本传输协议(HyperText Transfer Protocol),所以超文本,实际上它是一个带连接的文本,也就是带指向的文本,比如浏览器里边网页上浏览一些文本的时候,有一些连接,那么这些链接是指向其它文本的,那么这样在Internet就构成了由超文本互联链接的而结成的网,你可以在这个网络中进行漫游。

HTTP协议是对这种超文本传输所制定的协议。基本上,它的控制,它的应答,传输的信息基本上都是基于文本命令文本应答的。它是为传输HTML所设计的页面,

Ø  超文本传输协议

Ø  为传输HTML而设计的

Ø  无状态的协议

n  所谓没有状态,因为HTTP协议自身是不记录一个回话状态的,他所实现的是指示最简单的请求一个文件,应答一个文件。HTTP服务器它是接到了客户机对某个文件的访问请求,然后把这个文件从服务器里拿出来传给这个客户机,也就是应答这个文件的请求。仅此而已。

Ø  HTTP靠TCP 80端口号进行标识。

当然,由于网络WEB的发展,他不仅仅是一个超文本文件的载体,而且他还有超文本多媒体文件的传输,并且web逐渐变成了一种应用的平台,在这个web上,不仅是传输一些文档,还有一些应用,一些程序运行,比如java,jsp。

15.7  RTP和RTCP

多媒体文件传输的协议,RTP (Real-time TransportProtocol)实时传输协议,它里边有一些机制,包括报文的序列号,报文的时间戳,因为有了这些机制,他可以传输实时的报文。比如一些流媒体,声音的文件,比如视频的信息,这些需要实时性,需要时间保证的文件,由RTP协议去进行传输。

与RTP相配套的叫做RTCP,实时传输控制协议,它的目的是监视RTP协议的会话服务质量,因为这些流的传输对服务质量的要求是比较高的,必须要有一种控制协议,在文件数据传输的同时,传输控制信息,去监视数据传输的服务质量是否能达到当前应用的要求,比如它的丢包率是多少,它的抖动延迟是多少等等。

Ø   实时传输协议

n   传输实时报文

Ø   实时传输控制协议

n   监视RTP会话服务质量

15.8  SNMP

SNMP, Simple Network Management Protocol,简单网络管理协议的缩写。

在SNMP里边有4项是比较重要的。

Ø   被管理的节点,运行管理代理

n   第一点就是它的被管者,也就是我通过这个SNMP要管理的节点,叫被管理节点。被管节点上面会运行一个agent,也就是管理代理去执行管理的操作,那么在所有的被管节点至少有管理系统。实际上一个是管理者,一个是被管者。

n   所以有被管节点运行的代理,管理系统自然就是SNMP的核心系统。

Ø   管理系统

Ø   MIB – 管理信息数据库(ManagementInformation Base)

n   在这个库里,它把网元,这些被管理的节点,他们的一切属性,抽象成为库里的一条条记录。那么现在我对对网元的属性进行管理实际上就变成了对MIB数据库的记录进行操作。所以说MIB是一种数据结构,或者说是一个库结构。他把所有被管的属性抽象成一个管理信息数据库。

Ø   承载管理信息的协议

n   这个就是SNMP协议本身,就是在管理者和被管者之间用什么样的通讯协议去执行管理的操作。比如SNMP里规定了get,取属性;set,设置属性;等等。

16  总结:网络基础知识图解

16.1  SOI参考模型

Ø   如图,第一列是OSI参考模型,它是学习整个网络的基础,也是一个框架性的结构。在这个框架里,从功能的角度把网络划分成了7个不同的层次,那么这7层他们是有不同的分工的。

n   Physical物理层是在最下边,是做线缆上具体的bit流的传输。

n   Data link 链路层,它是做的是网络内部帧的传输。

n   Network,第三层,他所做的网络之间的数据包的传输,或者说是网间两点的端到端的可达性保证。

n   Trasport,第四层,它不仅保证能够保证这种可达性,在可达的基础上提供传输的实体,可选的可以提供可靠性的保证。

n   Session,第五层,提供的是会话的控制。

n   Presentation,第六层,提供的是数据格式的表达和转换。

n   Application,第七层,提供的是具体的应用服务。

16.2  TCP/IP RM

Ø   TCP是一种行业性的标准,他不是国际标准,但是它这个协议结构是在Internet上所普遍使用的。

Ø   协议栈的第一层,Host to net,叫接入网曾,或者承载层,基本对应OSI参考模型下两层。

Ø   协议栈的第二层,Internetwork,网间网层对应OSI RM的第三层网络层。

Ø   第三层,Trasport,对应OSI RM的第四层,叫做传输层。

Ø   最后,OSI的上三层,在TCP/IP协议栈中叫做Application,应用层。

Ø   它实现起来比OSI成本低,但是没有OSI那么严谨。

16.3  协议实例

Ø   比如在承载层的以太,以太网的结构,它的地址,物理层实现方法,访问控制,还有以太的交换等等。

Ø   在网间网层,IP协议,这是整个Internet的基石,IPv4和IPv6,ARP,ICMP

Ø   传输层,TCP/UDP

Ø   应用层,Telnet、FTP协议

16.4  互联设备

Ø   OSI在物理层,在比特流传输这一层里边,我们提到了中继器、集线器。他们所做的是信号的接续,整形,信号的放大等等。这些设备不知道信号所代表的数据含义,它们所做的工作只是把数据从介质的一段传输到另外一端。是没有智能的连接设备。

Ø   数据链路层,连接设备是网桥Bridge和交换机Switch,这两种设备有一定的智能,它们通过判断,根据数据帧中的目标MAC地址,判断的结果去进行转发,它们所判断的网卡地址,或者说MAC地址。根据MAC查询地址表,然后转发到相应的端口。

Ø   网络层,路由器,它是一个网间连接设备,它是根据三层数据包IP数据包中的目的IP地址去进行,去判断目标IP地址,去做网间的寻址。

Ø   有了中继器,集线器;桥,交换机和路由器他们就能做线缆的连接,做网段的连接,做网络的连接。也就是有了这些设备之后,Internet上端到端的可靠性就可以保证了,这也和OSI中第三层Network层的功能是相匹配的,也就说网络层端到端的可达性就可以保证。也就是网络中,到了路由器,网络层的互联设备,到了这层设备,那么端到端的可达性就可以保证了。

Ø   细致的来说,一段段的线缆有中继器和集线器互相连接构成了一个缆段或者说一个网段,Network segment。这样的缆段经过桥和交换机的互相连接,构成了一个个网络Network。 那么网络之间经过路由器的连接构成了网间网,Internet Work,或者说互联网。也就是如何从一段一段的线缆,一个个分离的介质逐渐的连接成一个完整的,可以保证端到端可达性的互联网,那么需要上述三级的连接设备。

这三级连接设备的智能是不同的,它判断的依据也是不同的,这是要区分的。

Ø   冲突域和广播域;由桥和交换机所隔绝开的一个个缆段或者网段,他们本身就是冲突域,冲突域会在缆段或者网段里发生,冲突会跨过中继器或集线器这样的设备。但是冲突不会在一个完全交换的网络里发生,换句话说交换机的端口一下会产生冲突,但是交换机的端口之间是不会产生冲突的。

n   冲突域严格的定义它,可以是交换机,桥所分隔开的一个个网段或者缆段。

n   广播域,一个本地信息最大能够走多远,它再远也远不过路由器,换句话说他只能在本地的网络中进行广播。那么对广播域下一个定义,就是:路由器所分隔开的一个个的网络是一个广播域。

所以,路由器是隔绝广播,而交换机和桥是隔绝冲突。

Ø   其他的互联设备,从网络的第四层到第七层,有网管这样的设备。网管,NetworkGateway,他所做的是高层的连接。

n   比如经常能听到防火墙网管,没有防火墙,网络的连通性一样可以保证,但是防火墙做的是一种服务的连接,它是一种安全服务。

n   比如我们还常听到邮件网关,它作邮件格式的转换,它连接的是一种高层的应用。

n   还有代理网关,他所做的是HTTP,FTP等等高层协议的书籍转发。

n   也就是说网关本身并不是保证网络连通性的,而是做服务器的连接,或者应用的连接,做应用数据的转发,他工作在第四层一直到第七层。

Ø   在互联设备中,还有一点需要提到的,就是一些市场名字和功能名字一定要区分开,不要混淆,比如Hub(集线器),但是市场也有卖SwitchHub,叫做交换式集线器,如果从网络理论上来讲,交换式集线器它是指交换机而不是集线器,市场上有这样的名字主要是他是从市场推广的角度,可以很好的体现出交换机和集线器它的向后兼容性。比如你现在有个一个Hub,你把这个Hub拆下来扔掉,换成一个Switch Hub一样可以工作。也就是说Switch Hub体现出了它这种向后兼容的能力,很好的保护了用户的投资。

Ø   同样市场上有交换机,还有三层交换机,或者叫做路由式交换机,所谓三层交换机它是工作在网络上,工作在网络层,依靠目标IP地址,去判断做转发决策。它的功能实际上是一个路由器的功能。所以而从这一点上来说,把三层交换机在网络理论中,把它看做一个路由器,而不是交换机。

Ø   在设置Linux,或者Windows他都问问你default gateway是多少,或者default ip gateway是多少,缺省网关,或者缺省IP网关,注意,这个一个历史性的名字,历史延续下来的名词,从严格意义来讲,IP层是没有gateway的,只有ip router,也就是连接IP网络的路由器是有的,对应现在所说的网络理论来说defaultgateway对应的不是网关,而是IP路由器。

16.5  地址类型

Ø   如图,在网络上,我们使用IP+Port就可以去决定Internet上的三级寻址。

Ø   在目标网络目标主机这一点上,也就是IP这一层上,还有一些其他的知识,比如DNS服务,域名服务,去完成主机名到IP地址之间的解析。

Ø   另外我知道目标主机的IP地址,如何查询到目标主机的MAC地址,是靠ARP去进行解析的。

16.6  数据单位

在不同的层次上,数据的单位是不一样的。下面有四个层次的单位是固定的,通用的。

Ø   比如,在物理层,所传输的数据单位是bit了;也就是在物理层上数据是流过戒指的,我们认为他是以bit为单位的他,它是没有数据结构的。

Ø   在数据链路层所传输的,比如以太网,所传输的是Frame,它的数据单位是帧,以太帧的数据结构,前边有一些控制信息,后面有校验信息,中间是高层的数据。

Ø   第三层在网络层上,叫做包,package,IP数据包,IPX数据包,。前面有讲过,IP数据包的头结构,里边目标IP地址,TTL等字段,这是包。

Ø   第四层,传输层所涉及到的数据结构是Segment,数据段,一个TCP的数据段,

Ø   上面具体的应用,TCP/IP协议的应用层,它的应用数据名称就不固定了,比如你访问数据库,你可以把它叫做data。访问文件文件服务器,可以叫做file ,邮件message等等。所各种应用的文件名叫法就不一致了。

猜你喜欢

转载自blog.csdn.net/a6taotao/article/details/80075599