Linux网络学习


Chapter 1. 串口通信

Table of Contents

串口通信是UNIX下一种主要的通信方式,早期的UNIX利用串口来进行输入/输出操作。现在的串口主要用于连接Modem和工控机等嵌入式设备。

术语

  • 波特率(bps),每秒位,表示串口的速度。串口通信是按bit(位)传送数据的,一次只能传送1个bit。bps定义了每秒可以传送的位数。如9600bps表示,

  • 数据终端设备(DTE),如我们的计算机。

  • 数据通讯设备(DCE),如我们的Modem。

  • RS232,串口通信标准。

串口接口有9针和25针两种,线缆连接方式有两种,一种是直联方式,如计算机到Modem的连接,DTE与DCE两头的线对是一一对应的。一种是交叉方式,也叫null-modem线,DTE的发送端要连接到DCE的接收端,DTE的接收端要连接到DCE的发送端。下面是具体的连接图:

        RS232 null modem的接法
------------------------------------------
      A端                   B端
------------------------------------------
     2(TxD)              3(RxD)
     3(RxD)              2(TxD)
     7(GND)              7(GND)
------------------------------------------

Linux下的串口设备文件是/dev/ttyS0和/dev/ttyS1,分别对应计算机上的COM1和COM2接口。使用statserial命令可以查看串口状态。

debian:~/c# statserial /dev/ttyS0 

命令正常运行后,将列出/dev/ttyS0端口的信息:

Device: /dev/ttyS0

Signal  Pin  Pin  Direction  Status  Full
Name    (25) (9)  (computer)         Name
-----   ---  ---  ---------  ------  -----
FG       1    -      -           -   Frame Ground
TxD      2    3      out         -   Transmit Data
RxD      3    2      in          -   Receive  Data
RTS      4    7      out         1   Request To Send
CTS      5    8      in          1   Clear To Send
DSR      6    6      in          1   Data Set Ready
GND      7    5      -           -   Signal Ground
DCD      8    1      in          0   Data Carrier Detect
DTR     20    4      out         1   Data Terminal Ready
RI      22    9      in          0   Ring Indicator

在串行通信中,数据是一位位串行传送的,发送端和接收端每次都只能发送或接收一位数据。串行通信可以分为同步通信和异步通信两种方式。两者的差异主要在通信两端的时钟信号是否使用一信号源。

  • 在同步通信中,发送端和接收端使用同一时钟信号。该时钟信号可由任一端提供,也可使用外部的时钟源。时钟频率可以固定,也可定期变更。所有要传输的位都与这个时钟同步,即每个要传输的位都是在时钟跳变(上升沿或下降沿)之后的一个规定时间内有效。接收端也利用相同的时钟来接收传输来的位。在同步传输中有开始位和停止位,用来表示一次传输的开始和结束。同步通信在电路板上或短距离传输的速度比异步传输快,但长距离传输由于需要一条额外的时钟线,同步的时钟信号容易受到现场噪音的干扰而造成通信失真。

  • 异步通信不需要时钟线同步两端的时钟,两端使用各自的时钟信号,但通信两端的时钟频率必须保持一致。每个传输的位都用一个起始位与时钟同步,用一个或多个停止位表示传输结束。异步通信是串口通信的主要通信方式,PC上的串口使用的就是异步通信方式。

    异步通信的传输数据格式有很多种,最常用的是8-N-1方式,它表示发送方以一个起始位表示传输开始,后跟8位数据,之后跟一个停止位表示数据传输结束,N表示不做奇偶校验。接收方接收到一个起始位后,就知道一个字节的传输开始了,接收方会用自已的时钟频率读取后面的8位数据,接收到停止位后就马上停止接收数据,并把接收的数据送到接收缓冲区中。

RS-232C规范

RS-232C标准是由美国EIA(电子工业联合会)和一些IT公司开发的通信协议。

电子特性:

  • 在TxD和RxD上

    • 逻辑1 = -3V ~ -15V

    • 逻辑0 = +3V ~ +15V

  • 在RTS、CTS、DSR、DTR和DCD控制线上

    • 信号有效(接通、ON状态、正电压)= +3V ~ +15V。

    • 信号无效(断开、OFF状态、负电压)= -3V ~ -15V。

小技巧

连接终端启动系统时重复出现登陆提示符无法login的问题,发生这种现象的原因,就是终端串口线没有严格按照标准Null Modem线序做,而是用了通常的普通终端线(典型的比如CISCO网络设备带的9针串口电缆)。Null Modem的线序是:

2、3对倒,7、8对倒,5直连。1、6都接对端4

普通终端线的区别就在于1、6接对端4上,都只有1接对端4,但1和6没有短接。如果要改造,就是用一根不足1厘米的线把1和6短接即可。

 

Chapter 2. 网络基础

常用网络设备:

  • 中继器。信号在线路中传输时会因衰减、干扰和失真而使信号不能长距离传输。中继器能再生信号,使信号的传输距离更远。中继器工作中物理层。

  • 网桥。当网络上的机器很多时,网络会因广播信号过多而造成拥塞。网桥可以把一个大的网络分成两多或多个小网络。广播信号只在小网络中传递。网桥有几种类型,有源路由网桥,透明网桥,转换式网桥、封装式网桥。透明网桥是最常用的一种网桥方式。透明网桥执行3种简单的功能:学习、转发和过滤。网桥一般都有两个以上的接口,连接不同的网络区域。网桥通过无目的地侦听所有接口来学习网络中每台设备的MAC地址,并把MAC地址和所在接口号记录到桥接表中。当不同区域的设备要通信时,网桥通过桥接表把数据从一个接口转发到另一个接口,从而实现两台设备的通信。当同区域的设备要通信时,网桥通过查看桥接表发现在同一区域(接口),网桥就不会转发该数据,数据被过滤掉了。透明网桥的学习、转发和过滤功能对于用户来说都是不可见,透明的。网桥工作在数据链路层。

  • 路由器。也叫网关或中介系统,用以连接不同子网,指示到达不同子网的路径。路由器是工作在网络层的。

  • 交换机。可以理解为多端口网桥,每个与交换机端口连接的设备就是一个独立的广播域。

电路交换和分组交换

电路交换联网方式是指当我们要通信时,需要在通信双方建立一条连接电路,这个电路可以是固定的,也可以是根据需要建立的。连接电路一旦建立,双方就固定地使用该条电路通道来传送信息。电路交换的典型应用是电话系统。当打通电话后,双方就固定地占用了一条电路进行通话(信息交换),直到电话挂断。每次打电话占用的电路都可能是不同的。

分组交换联网方式不会使用固定的路径来传送信息。它把要传送的信息分割成小的信息块,经由不同的路径发送到接收方。接收方把接收的分组按一定的顺序重新组合成原始信息。

两种交换方式都各有优缺点,在设计网络时应该使用哪种交换方式呢?判断的一个重要依据是网络媒体是共享的还是专用的。对于共享的网络来说采用分组网络能更有效地利用网络媒体,使用电路交换则会长期锁定共享网络媒体资源。分组网络由于信息通道不固定,数据分组有可能会在传输中丢失,或者出现顺序出错。这时就要靠上层的网络协议提供的功能进行重发。

现代的网络,电路交换和分组交换经常相结合使用。如ADSL拔号上网,使用IP数据报携带较高层的数据,而通过电路交换的电话网络与互联网联接。

面向连接协议和无连接协议

面向连接协议需要在发送信息之前,在联网设备之间建立一条逻辑连接,如果逻辑连接建立成功则可开始进行通信。典型的面向连接的协议是TCP。

面向无连接的协议在发送信息前不需要与对方建立连接,直接发送。典型的无连接协议是UDP。

QoS

时延是网络性能的重要参数,通过QoS可以改善网络时延。QoS描述了数据在设备之间是如何传输的特性。QoS主要有以下几个特性:

  • 预留带宽。将网络接口的一部份带宽预留给某种关健应用。

  • 时延管理。

  • 流量优先权。能处理分组,使较重要的连接能比其它连接有更高的优先权。

  • 流量整形。

  • 网络拥塞避免。该特性指监控网络中特定连接,当网络中特定部份拥塞时,对数据重新选路。

Chapter 3. TCP/IP网络

TCP/IP历史

  • 1973年,为组建ARPAnet而开发了一个核心协议--TCP。但这个TCP和现时使用的TCP所代表的意思不同,这个TCP代表传输控制程序(Transmission Control Program)。

  • 现代TCP前身的第一版本写于1973年,然后修订形成因特网传输控制规范(RFC 675)于1974年12月出版。

  • 1977年3月,第二版的TCP文档发布。

  • 1977年8月,因特网和TCP/IP的开拓者之一Jon Postel发表了关于TCP状态的评论。指出早期的TCP版本试图做太多的事情,它不但作为一个主机端到端协议,也作为一个互联网打包和选路协议。他建议采用分层和模块化方法把这两个功能分开,TCP只作为主机端到端协议,创建一个新的协议作为互联网打包和选路协议。

  • 1978年,第三版的TCP文档发布,TCP正式被拆分成TCP和IP两层,形成了TCP/IP的体系结构定义。

  • 1980,现代网络使用的TCP/IP标准(第4版)正式发布。TCP/IP成为运行ARPAnet的标准协议集合。20世纪80年代越来越多的机器和网络使用TCP/IP协议连接到不断发展的ARPAnet上,最终形成了(Internet)因特网。

TCP/IP四层结构

TCP/IP是一个四层的协议系统,分别是:

  • 应用层(Telnet、HTTP),协议的最顶层,负责处理各种网络应用程序的细节。

  • 传输层(TCP、UDP),主要为两台主机上的应用程序提供端到端的通信。

  • 网络层(IP、ICMP),处理网络分组在网络中的活动,如分组路由。

  • 链路层(ARP,RARP),协议的最低层,通常包括操作系统中的驱动程序和网卡,主要处理比特流信息。

 

OSI参考模型各层功能介绍

  • 物理层。它是OSI参考模型的最低层,缩写为PHY。物理层接收和发送的都是0和1,不理会具体的报文内容。物理层负责完成以下工作:

    • 硬件规格参数定义。包括电缆、连接器、无线电收发器、网络接口卡等。

    • 编码和信令。将计算机或设备的比特转换成能经网络发送的信号。

    • 数据传输和接收。

    物理层与数据链路层紧密相关,有些数据链路层的功能也会由物理层实现。

  • 数据链路层。以太网、令牌网、光纤网、802.11无线网、ATM、SLIP和PPP就是以数据链路层技术来划分。数据链路层常被划分为两个子层:逻辑链路控制(logical link control,LLC)和媒体访问控制(media access control,MAC)。数据链路层负责的工作如下:

    • 逻辑链路控制。实现网络上本地设备之间逻辑链路的建立和控制所需的功能。为网络层提供服务,隐藏数据链路层其余细节。

    • 媒体访问控制。网络使用一条共享媒体(如一根网线)来传输数据,为避免冲突,需对如何使用媒体进行访问控制。如以太网使用CSMA/CD方法进行媒体访问控制,而令牌环网通过令牌传递来实施控制。

    • 数据成帧。把网络层数据报封装成可以在物理层发送的帧。如以太网的以太帧。

    • 寻址。每台网络设备都有一个全球唯一的硬件地址,这个硬件地址也叫MAC地址。链路层协议负责MAC地址寻址。

    • 差错检测和处理。数据帧的CRC检验经常都是基于帧内容计算出来,然后再包括进帧中。

    • 物理层标准。物理层和数据链路层是密切相关的。一个物理层的需求,通常是链路层标准中描述的某一特定技术的一部份。物理层硬件和编码的要求是由链路层使用的技术指定的。

  • 网络层。网络层处理网络之间的路由选路,负责把网络联接成互联网。网络层执行的工作如下:

    • 逻辑寻址。如IP地址寻址。

    • 选路。处理不同来源的报文,确定它们需发送的目的地,也就是以太网中路由器实现的功能。

    • 数据报封装。接收上层报文,添加网络层首部封装成数据报(也叫分组)。

    • 分片与重组。在发送报文时,如果分组的长度超过了数据链路层要求的长度,则要负责把报文分片,形成较小的分组再发送。接收方在网络层负责把分片的分组重组。

    • 差错处理和诊断。

  • 运输层。负责高层应用程序进程间之间的通信。主要执行以下特定功能。

    • 进程级寻址。区分不同软件进程,使不同软件可在同一主机上可以使用相同的网络层协议。如TCP/UDP的端口机制。

    • 多路复用和分解。在发送方,使用进程级地址,复用多个应用程序待运输的数据,将它们组合成一个要发送的单一数据流。在接收方,从接收的数据报中分解出数据,把每项数据发送到相应的应用程序进行接收。

    • 分片和重组。与网络层一样,运输层也会根据网络层的要求对数据报进行分片,在接收方再对分片的数据报进行重组。

    • 连接建立、管理和终止。

    • 确认和重传。发送设备每当发送数据时都启动一个定时器。如果收到数据,接收方返回一个确认报文给发送方表示传输成功。如果在定时器超时时发送方还没有收到确认信息,则重传数据。

    • 流量控制。控制发送数据的速率,防止接收方来不及接收数据。可检测并处理发送方和接收方之间速率的不匹配问题。

  • 会话层。从这层开始的协议主要关注软件应用问题,不关心网络的细节和互联网的实现问题。会话是两个应用程序之间的持久性逻辑连接,该连接使它们可以在持续时间内交换数据。会话层负责建立和管理会话。会话层协议其实是一组应用程序接口或API,常见的API包括TCP/IP套接字、远程过程调用(RPC)和NetBIOS等 。开发者可以使用TCP/IP套接字创建TCP应用程序,而不需知道TCP/IP工作的细节。

  • 表示层。该层处理数据的表示,它并不总是需要的,有些通信可以不需要它。下面是表示层处理一些特殊类型的数据问题的应用:

    • 转换。同一网络上有多种不同类型的计算机,如PC、Mac、大型机等。每个都有许多不同的特性和不同的数据表示方法(字符集)。表示层隐藏了机器之间的差异。

    • 压缩。为提高数据的吞吐率可在表示层进行压缩(解压缩)。

    • 加密。可执行某种类型的加密(解密),保证数据的安全。如ssl就是与表示层关联的一种加密方法。

    由于表示层不是必须的,所以第七层也可以和第五层直接通信。

  • 应用层。参考模型的最高层,是网络应用程序所使用的层,实现特定的网络应用。应用层协议有很多,如:HTTP、FTP、POP3、DHCP、SNMP等。

OSI模型上三层的区别不是非常清晰,TCP/IP模型直接就把这三层归并成应用层。

Table 3.1. OSI模型各层次总结表

层次
主要功能
处理数据类型
范围
常用协议和技术

物理层
编码和信令;物理数据舆;硬件规范;拓扑和设计
比特
在本地设备之间发送的电信号或光信号
物理层的大部份技术列在数据链路层

数据链路层
逻辑链路控制;媒体访问控制;数据成帧;寻址;差错检测和处理;定义物理层需求

本地设备之间的低级数据报文
IEEE802.2,LLC,以太网,令牌环,FDDI和以CDDI,IEEE802.11,ATM,SLIP和PPP

网络层
逻辑寻址;选路;数据报封装;分组和重组;差错处理和诊断
数据报/分组
本地或远程设备间的报文
IP,IPv6,IP NAT,IPsec,ICMP,IPX,DLC,路由协议(RIP、BGP等)

运输层
进程级寻址(TCP端口);多路复用/分解;连接管理;分片和重组;确认和重传;流量控制
数据报/报文段
软件进程间通信
TCP,UDP,SPX,NETBEUI

会话层
会话创立、管理和中止
会话
本地或远程设备间的会话
NetBIOS,套接字,命名管道,RPC

表示层
数据转换;压缩;加密
用户数据
应用数据表示
SSL,SHELL和重定向,MIME

应用层
用户应用程序服务
用户数据
应用程序数据
HTTP,DNS,DHCP,SNMP,FTP,SMTP,POP3

数据报文传送过程

相邻层之间通过接口进行通信,发送方由高层到低层逐层封装数据,接收方由低层到高层逐层解包数据。如果接收方与发送方位于同一网段,则不需进行路由选路,不经路由设备直达接收方。如果通信双方不在同一网段,如我们访问互联网,则需进行路由选路,经过若干路由设备。报文经过路由设备时进行的处理过程是这样的:在路由设备的物理层接收报文,然后向上传递到数据链路层、网络层。在网络层路由设备会判断报文的目的IP地址是否是本地网络,然后将报文重新打包下发到数据链路层和物理层发送出去。在这个过程中网络层的目的IP地址始终保护不变,数据链路层的MAC地址更改成本地目的主机的MAC地址或下一个路由器的MAC地址。这个过程图示如上:

image

PPP协议

PPP是现时最流行的第2层广域网技术之一。PPP的成功导致派生协议的发展,如以太网上的PPP(PPPoE),ATM上的PPP(PPPoA)这些派生协议将PPP作为一层放在现有的数据链路层技术上。PPP主要组件有三个:

  • PPP封装方式。PPP的主要工作是获取上层报文(网络层报文,如IP报文),将其封装后传输给物理层进行发送。PPP基于HDLC使用的成帧方法。PPP的帧被设计成很小并且只包含一些简单的字段,从而得到带宽利用率和处理速度的最大化。

  • 链路控制协议(LCP)。LCP负责设备之间链路的创建、维护和终止。在链路创建前通信两边会进行协商认证,在这个过程中会使用挑战握手鉴别协议(Challenge Handshake Authentication Protocol,CHAP)和口令鉴别协议(Passowrd Authentication Protocol,PAP)等鉴别协议。链路配置管理过程中还会用到PPP压缩控制协议(Compression Control Protocol,CCP),这PPP加密控制协议(Encryption Control Protocol,ECP)。

  • 网络控制协议(NCP)。PPP能封装多种类型的第三层数据报,对应不同的NCP。如用于IP数据报的互联网协议控制协议(Internet Protocol Control Protocol,IPCP)。还有支持ipx的(IPXCP)、NetBIOS帧的NCP。

PPP操作只有三步:

  • 链路创建与配置。链路创建由LCP协议发起,通信双方要对管理链路操作的各种参数达成一致,并在需要时调用其它支持协议,如鉴别、加密和压缩等。一旦建立起链路,将调用适当的NCP用于在该链路上承载第三层技术。这是PPP操作最复杂的一步。

  • 链路操作。使用建立的PPP链路发送数据报。发送端的PPP封装第三层数据报,再向下交付给第一层发送。接收端物理层接收发送的PPP帧,剥去其PPP首部,再将数据报传送给第三层。

  • 链路终止。当任一方不通信时就终止该链路。

PPP链路从创建到死亡不同阶段示意图:

image

PPP标准包括有很多RFC,具体看原文。

 

PPP核心协议

链路控制协议(LCP)、网络控制协议(NCP)和PPP鉴别协议(PAP、CHAP)是PPP的核心协议。在PPP协议族中,LCP最为重要,它负责PPP的整体成功运作,并且在PPP链路的每个阶段进行配置、维护链路状态和终止链路。LCP报文交换过程如下:

---------------------------------------------------------------------------
         发起方                                     响应方
---------------------------------------------------------------------------
    初始化LCP配置   ----Configure-Request--->  处理LCP配置
                                               |
    完成LCP配置     <---Configure-Ack---------- |

    鉴别和NCP配置   <----------------------->  鉴别和NCP配置
                                               
    响应应答测试    <-------Echo-Request-----  发起环回测试
               |
               |-----------Echo-Reply------->  证实链路操作

    发送和接收数据  <----------------------->  发送和接收数据  

    终止链路        <---Terminate-Request---   关闭链路请求   
           |
           |------------Terminate-Ack------->   终止链路

-----------------------------------------------------------------------------             

由于LCP位于第二层,所以我们把LCP报文称为LCP帧。共有11种不同的LCP帧,对应3个链路阶段分成三组。链路配置有4种LCP帧类型,链路维护有5种,链路终止有2种。

LCP链路配置

链路配置又是LCP最重要的工作,在链路创建过程中,通信两端通过交换LCP帧以协商链路运行条件,整个过程如下:

image

  • LCP链路配置从发送方向接收方发起一个Configure-Request帧开始,该帧包含了与对端协商的配置选项。有6个配置选项:

    1. 最大接收单元(MRU),指定希望链路使用的最大数据报长度。

    2. 鉴别协议,指定希望链路使用的鉴别协议。

    3. 质量协议,指定希望链路使用的质量协议。

    4. 幻数,用来检测环回链路和连接中的其他异常。

    5. 协议字段压缩,在PPP帧中使用压缩的协议字段(8bit),正常是16bit。

    6. 地址和控制字段压缩,压缩PPP帧中地址和控制字段。

  • 接收方收到Configure-Request后,根据配置选项的内容有以下三种响应。

    • 如果所有选项都可接受,则返回一个Configure-Ack帧(确认),完成协商。

    • 如果选项有效能够协商,但接收方不接受这些选项所设置的值,则返回一个Configure-Nak帧(否定确认)。该帧包含接收方不接受的每个配置选项的副本。

    • 如果选项无效且不能协商,则接收方返回一个Configure-Reject帧。该帧包含不能协商的选项副本。

    Configure-Nak和Configure-Reject的区别在于,前者表示不接受选项值但可以再协商,后者表示不接收,没有协商的余地。如:发送方尝试协商使用PAP鉴别协商,但接收方想使用CHAP,则返回Configure-Nak,如果接收方根本就不支持鉴别,则直接返回Configure-Reject帧。接收方收到一个拒绝后,还可以重新尝试一次新的Configure-Request协商。

LCP链路维护与链路终止

一旦LCP协商成功,LCP则会把控制权交给适当的鉴别和NCP协议。链路创建成功进入打开状态,以下这些帧用来维护链路。

  • Code-Reject(编码拒绝)和Protocol-Reject(协议拒绝)帧:当收到无效帧时,这些帧用来提供反馈信息。无效帧的产生主要是由于一个无法识别的LCP编码或一个损坏的协议标识产生的。

  • Echo-Request(回显请求)、Echo-Reply(回显回答)和Discard-Request(丢弃请求)帧:这些帧用以测试网络。

发起关闭的设备发送一个Terminate-Request报文。另一个设备回复Terminate-Ack报文。终止请求是一个不能拒绝的请求。

NCP--网络控制协议

PPP虽然是为承载IP数据报而设计的,但PPP也可为多种类型的网络层协议承载数据。这种能力是通过网络控制协议(NCP)实现的。NCP协商所有对于特定网络层协议的参数,每条LCP链路可以运行多个NCP。常见的NCP有:PPP网际协议控制协议(IPCP)、PPP网间分组交换控制协议(IPXCP)、PPP NetBIOS帧控制协议(NBFCP)。

NCP的操作过程与LCP类似,每个NCP也要执行链路创建、维护和终止三个过程。所使用的报文也与LCP一样,有Configure-Request、Configure-Ack、Configure-Nak、Configure-Reject、Code-Reject、Terminate-Request、Terminate-Ack等报文。

-----------------------------------------------------------------------------------
          发送方                                           接收方
-----------------------------------------------------------------------------------
   LCP链路创建与鉴别   <---------------------------->  LCP链路创建与鉴别

   发起IPCP配置         ----IPCP Configure-Request-->  处理IPCP配置请求
                                                        |
   结束IPCP配置        <----IPCP Configure-Ack----------|

   IP数据传送          <----------IP数据------------>  IP数据传送

   关闭IPCP链路请求    -----IPCP Terminate-Request-->  终止IPCP链路
                                                        |
   终止IPCP链路        <----IPCP Terminate-Ack----------|
-----------------------------------------------------------------------------------

鉴别协议

PPP协议族最初定义了两种鉴别协议:PAP和CHAP。当设备两端建立了一个LCP链路后,就会使用鉴别协议发送一连串的鉴别报文,以验证链路发起者的身份。

PAP是一种非常简单的鉴别协议,鉴别过程只有两步。第一步发送Authentication-Request(鉴别请求)报文,报文中包含用户名和密码。第二步是接收方检查用户名和密码,如果接受则返回一个Authentication-Ack报文,否则返回一个Authentication-Nak报文。PAP鉴别最大的缺点是使用明文方式经链路传送用户名和密码,窃听者可以截取用户名和密码信息。PAP也没有对任何的安全攻击提供保护,客户端可以无限制地尝试不同密码,直到发现正确的密码为止。

CHAP不通过链路传送密码,它使用了三次握手的技术进行鉴别。三次握手的过程如下:

  1. 挑战。鉴别者生成一个Challenge的帧并发送给发起方,该帧包含没有实质意义的Challenge文本串。发起方收到Challenge报文后,通信两端就拥有了相同的Challenge文本串。

  2. 响应。发起方使用它的密码来加密Challenge文本串,然后将加密的Challenge文本串通过Response报文返回给鉴别者。

  3. 成功或失败。鉴别者对Challenge文本串执行与发起方相同的加密过程,如果得到的结果与Response报文中发送过来的加密Challenge文本串一致,则知道发起方使用的加密密码与鉴别者使用的加密密码是一致的,鉴别成功。鉴别成功就返回一个Success报文,否则返回一个Failure报文。

Note

IEEE802.11无线联网使用的共享密钥鉴别技术也是与CHAP的三次握手一样的。

PPP特色协议

上面介绍了PPP三种核心协议,这些核心协议是PPP的基础。其实PPP还有一些实用的特色协议,如链路质量监测、数据压缩和加密、多链路协议和带宽分配协议等。使PPP的功能更强大,适用性更好。下面一一介绍一下。

链路质量监测

PPP的链路质量监测(Link Quality Monitoring,LQM)可以分析两台设备间的链路质量,LQM使用LQR(链路质量报告)方法跟踪链路的统计信息,并周期性地发送相关报告。在使用LQR之前,需建立LQR,建立LQR的工作在链路创建阶段作为协商基本链路参数的一部份,由LCR完成。打开链路的设备通过在Configure-Request帧中包含质量协议配置选项来请求链路监测。配置选项还指定了报告周期,指定请求设备希望接收到报告的最大间隔时间。如果协商成功,则LQR开始起作用。

LQR通过计数器记录各种链路统计信息,当发送报告计数器到期时,就会产生一份链路质量报告,以链路以PPP帧发送出去。该PPP帧使用特定的PPP协议字段(0xC025)。当建立LCP时,计数器归零。记录的统计信息有:

  • 发送和接收帧的数量

  • 发送和接收帧的字节数

  • 发生差错的数量

  • 丢弃帧的数量

  • 生成的链路质量报告的数量

压缩控制协议(CCP)和压缩算法

PPP串行链路的速度较慢,改进的方法是对数据进行压缩。压缩控制协议(CCP)负责协商和管理在PPP链路上使用的压缩。压缩算法是实际执行数据压缩和解压缩的算法。CCP与NCP类似,是一个轻量级的LCP,它在LCP链路间创建一个CCP链路的压缩连接。一旦创建成功,则可在两台设备间发送压缩的帧。

PPP协议字段中的特殊值0x00FD表示该帧已压缩过,当压缩用在多条链路上时,链路进行独立压缩,并使用一个不同的值表示:0x00FB。

加密控制协议(ECP)和加密算法

鉴别完成后,PPP不会再对传输的数据提供安全保护,在链路上传送的是明文的数据。所以对于密秘的数据要在传送前进行加密。ECP负责协商和管理在PPP链路上使用加密,加密算法执行数据的加密和解密。与CCP类似,ECP是LCP的子集。

ECP配置选项与加密算法对应表

------------------------------------------------------------------
    ECP选项类型值            定义的RFC                加密算法
------------------------------------------------------------------
       0                      -                        专用
       2                      2420                    3DESE
       3                      2419                    DESE-bis
------------------------------------------------------------------

ECP选项1表示DES算法,定义在RFC 1969中,被选项3代替。

PPP协议字段中的特殊值0x0053表示该帧已经过加密。当在多链路下,各条链路的加密是独立进行的,并使用一个不同的值表示:0x0055。

多链路协议(MP)

PPP允许把多条低速链路合并起来,建立一条高速链路。通过带宽分配协议(BAP)可向链路中添加和删除链路。带宽分配控制协议(BACP)允许设备配置它们希望使用的BAP方式。BACP中唯一的协商配置选项就是Favored-Peer(受惠对等方)选项,它用于确保当链路上的两台设备试图同时发送相同的请求时不出问题。如果设备两头都支持BAP,则BACP协商成功,激活BAP。

PPP协议帧格式,看原文。

以太帧结构

以太网的最小传输单位是以太网帧,每个以太网帧的物理长度必须在46--1500字节之间。以太帧的组成示意图如下:

image

基本概念

TCP和UDP采用16bit的端口号来识别应用程序,如telnet应用的端口号是23,HTTP应用的端口号是80。1~1023之间的端口号对应的应用服务由IANA分配和管理。在Linux中,1~1023之间的端口只能由root用户使用。在客户端可以使用临时端口号与这些标准端口号通信。当客户端要与服务器连接时,客户端会临时分配一个端口号,通过这个端口客户端程序就可与服务器端的标准服务器端进行通信。大多数据TCP/IP实现分配的临时端口号是1024~5000。5000以上的端口号为其它服务预留的。在Linux系统的/etc/services文件中可以查到所有常用的服务器端口号。

什么是MAC地址,电脑通过网卡连接网络,每块网卡都有一个独一无二的48位地址,为方便记忆,我们把这些地址写成6组以冒号分隔的的十六进制数字,如:00:20:E0:C1:0F:F6。前3组是网卡制造商的标识码,由IANA分配。这种地址我们称它为介质访问控制器地址(MAC地址,Media Access Controller Address)。在网络通信中,最终是使用该地址来标识每台电脑的。

什么是IP地址,每台联网的电脑都需要有一个唯一的IP地址标识,就好象我们家的门牌号码一下。IP地址全长32bit,分成四组,每组8bit,中间用点号分隔,如:192.168.0.1。IP地址可以手工分配,也可以由电脑自动分配。手工分配的IP地址是固定不变的,叫静态IP地址。由电脑通过DHCP服务器自动分配的IP地址是不固定的,叫动态IP。动态IP一般在网络较大的环境下使用。电脑自动维护一个IP地址池,当客户有需要时从这个IP地址池中临时租用一个IP地址来使用。使用动态IP能有效减少网管员的维护工作量。

特殊的IP地址

  • 0.0.0.0

    表示默认的网络和主机的集合。

  • 255.255.255.255

    广播地址,代表本网段的所有主机。

  • 127.0.0.1

    本机回环地址,主要用于测试本机网络功能。

  • 224.0.0.1

    组播地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。

  • 169.254.x.x

    当动态获取IP地址的主机不能从DHCP服务器正常取IP时,电脑就会自动指定一个169.254.x.x地址。

  • 10.0.0.0~10.255.255.255、172.16.0.0~172.31.255.255、192.168.0.0~192.168.255.255

    私有地址,只能用于企业内部。保留这此地址是为了区分Internet地址和企业内部网地址,避免内部网连接Internet时造成IP地址冲突和混乱。私有地址是不能和Internet直接连接的,如果内部网要连接Internet,需进行私有地址到公共地址的转换(NAT)。

Note

对于一台网络主机,它只能接收到目的地址是广播地址、组播地址和本机地址的数据包。

IP地址伪装(IP masquerading,也称为IPMASQ)技术允许私有网络中的一台或多台没有公共IP地址的计算机与Internet通信。充当IPMASQ服务器的电脑相当于一个网关,私有网络中的电脑对外网来说是完全不可见的。外网看到的只是作为IPMASQ服务器的IP地址。因为当私有网络需与Internet通信时,数据包会被发送到IPMASQ服务器,IPMASQ服务器会改写数据包的IP报头使它们看上去就好象全部出自IPMASQ服务器。当外部的应答数据包到达时,IPMASQ服务器首先反转对刚才外出数据包的IP报头所做的改写,再把它们转发给相应的内部电脑。从而实现内部私有网络对Internet的访问。

网络地址转换(NAT,Network Address Translation)是另一种应用范围更广的技术,具有NAT功能的网络设备能把某个IP空间里IP地址转换为另一个IP地址空间里的IP地址。它与IP伪装技术的主要区别是:NAT技术可以把某个内部网络里的每一个IP地址分别转换成独立的外部IP地址。另外,当转换后,外部地址也可以访问内部地址。

IP报文头

image

各字段说明:

  • 版本(Version)。字段长度4位,标识IP报文的版本号。常用版本号是4(IPv4),二进制值为0100。

  • 报头长度(Header length)。

IP子网划分

为了有效利用IP地址和减少网络广播风暴,我们可划分子网。我们知道,TCP/IP网络的IP地址是由网络地址和主机地址组成,网络地址标识网段,主机地址标识主机,同一网段的主机可互相通信,不同网段的主机要通过路由设备才能互相通信。IP地址的长度为32bit,以8bit为一组,中间用点号分隔形成一个4组的IP地址格式,一般我们的把IP地址写十进制的形式,如:192.168.0.2。这里讨论的是IPv4的IP地址,这是我们现时在用的IP地址格式,最新的IPv6是128bit的。IPv6的提出是为解决IPv4地址空间不足的问题的。这里我们暂时不讨论IPv6的内容。192.168.0.2这样的IP地址哪部份属于网络地址,哪部分属于主机地址呢?这就要通过子网掩码来确定了。子网掩码的格式和IP地址一样,长度也是32bit。当IP地址和子网掩码地址按位"and"操作后,具有相同地址值的就属于同一网段,而这个相同的地址值就是网络地址,另外一部份就是主机地址。

IP地址是结构化的,分为以下五类:

  • A类:0.0.0.0 --- 127.255.255.255,默认子网掩码为255.0.0.0,共有126个有效网络,每个网络可有16777214台有效主机。为什么我们强调有效地址和有效主机呢?这是因为全0和全1的网络地址和主机地址都是保留使用的。A类地址的二进制数首位恒为0,最小值为:00000000=0,最大值为:01111111=127。

  • B类:128.0.0.0 --- 191.255.255.255,默认子网掩码为255.255.0.0,共有16382个有效网络,每个网络可有65534台有效主机。B类地址的二进制数首位恒为10,最小值为:10000000=128,最大值为:10111111=191。

  • C类:192.0.0.0 --- 223.255.255.255,默认子网掩码为255.255.255.0,共有2097150个有效网络,每个网络可有254台有效主机。C类地址的二进制数首位恒为110,最小值为:11000000=192,最大值为:11011111=223。

  • D类:224.0.0.0 --- 239.255.255.255,默认子网掩码为255.255.255.0。

  • E类:240.0.0.0 --- 247.255.255.255,默认子网掩码为255.255.255.0。

我们上面提到的192.168.0.2这个IP地址就是c类地址,默认的子网掩码是255.255.255.0,网络地址是192.168.0,主机地址是2,所以192.168.0.10,192.168.0.11等IP都属同一网段。通过借用主机地址的高位可以扩展子网数。以C类地址为例。

---------------------------------------------------------------------------------------------------
           二进制掩码                  十进制掩码            子网状态
---------------------------------------------------------------------------------------------------
11111111.11111111.11111111.00000000 | 255.255.255.0   |  默认子网掩码,可包含有254台有效主机
11111111.11111111.11111111.10000000 | 255.255.255.128 |  2个子网,无有效子网
11111111.11111111.11111111.11000000 | 255.255.255.192 |  4个子网,2个有效子网,每个子网62台有效主机
11111111.11111111.11111111.11100000 | 255.255.255.224 |  8个子网,6个有效子网,每个子网30台有效主机
11111111.11111111.11111111.11110000 | 255.255.255.240 |  16个子网,14个有效子网,每个子网14台有效主机
11111111.11111111.11111111.11111000 | 255.255.255.248 |  32个子网,30个有效子网,每个子网6台有效主机
11111111.11111111.11111111.11111100 | 255.255.255.252 |  64个子网,62个有效子网,每个子网2台有效主机
----------------------------------------------------------------------------------------------------

全0和全1的子网号是不能使用的。所以有效子网数是要从总子网数中减2的。主机号为0的IP地址代表网络地址,主机号全1的IP地址代表广播地址,这两个地址不能分配给电脑使用的,所以有效主机数要从总主机数中减2。

B类地址的子网掩码列表:

---------------------------------------------------------------------------------------------------
           二进制掩码                  十进制掩码            子网状态
---------------------------------------------------------------------------------------------------
11111111.11111111.00000000.00000000 | 255.255.0.0     |默认子网掩码,可包含65534台有效主机
11111111.11111111.10000000.00000000 | 255.255.128.0   |2个子网,无有效子网
11111111.11111111.11000000.00000000 | 255.255.192.0   |4个子网,2个有效子网,每子网16382台有效主机
11111111.11111111.11100000.00000000 | 255.255.224.0   |8个子网,6个有效子网,每子网9180台有效主机
11111111.11111111.11110000.00000000 | 255.255.240.0   |16个子网,14个有效子网,每子网4094台有效主机
11111111.11111111.11111000.00000000 | 255.255.248.0   |32个子网,30个有效子网,每子网2046台有效主机
11111111.11111111.11111100.00000000 | 255.255.252.0   |64个子网,62个有效子网,每子网1022台有效主机
11111111.11111111.11111110.00000000 | 255.255.254.0   |128个子网,126个有效子网,每子网510台有效主机
11111111.11111111.11111111.00000000 | 255.255.255.0   |256个子网,254个有效子网,每子网254台有效主机
11111111.11111111.11111111.10000000 | 255.255.255.128 |512个子网,510个有效子网,每子网126台有效主机
11111111.11111111.11111111.11000000 | 255.255.255.192 |1024个子网,1022个有效子网,每子网62台有效主机
11111111.11111111.11111111.11100000 | 255.255.255.224 |2048个子网,2046个有效子网,每子网30台有效主机
11111111.11111111.11111111.11110000 | 255.255.255.240 |4096个子网,4094个有效子网,每子网14台有效主机
11111111.11111111.11111111.11111000 | 255.255.255.248 |8192个子网,8190个有效子网,每子网6台有效主机
11111111.11111111.11111111.11111100 | 255.255.255.252 |16384个子网,16382个有效子网,每子网2台有效主机
----------------------------------------------------------------------------------------------------

从上面的示例中我们可总结出子网数、主机数和掩码三者间的规律。只要数子网掩码的子网位中1和0的个数就可以算出子网数和主机数了。假设1的个数为M,0的个数为N。则2的M次方减2就是有效子网数,2的N次方减2就是有效主机数。通以上规律我们可以很快写出A类地址的子网掩码表,我这里就一一列举了。

VLSM和CIDR

VLSM(Variable Length Subnet Mask)即是可变长子网掩码,在RFC 1878中定义。通过VLSM我们可以在一个子网里再细分多个小子网,每个小子网的主机数又可以不同。使子网分配更灵活高效,节省IP地址资源。我们把192.168.2.0/24分成不同具有不同掩码长度的子网,每个子网里的主机数也不同。

WAN link: 2x -2 >= 2 x=2:
Subnet mask : 255.255.255.1111 1100    /30
Building A : 2x -2 >= 25 x=5
Subnet mask : 255.255.255.1110 0000    /27 
Building B : 2x -2 >= 50 x=6
Subnet mask : 255.255.255.1100 0000    /26
 

我们划分的时候从需要ip多的组到需要ip少的组.

有两个62个主机的子网

192.168.2.0/26    
192.168.2.64/26   

有三个30个主机的子网

192.168.2.128/27  
192.168.2.160/27  
192.168.2.192/27  

有一个2个主机的子网
192.168.2.224/30  

CIDR即是无类别域间选路,它是对IP寻址功能的补充。能把一块IP地址聚合成一个带前缀的IP地址范围,减少路由条目。如192.168.61.8/20,表示前20位是网络地址。而不是默认的24位。现在的internet都使用CIDR进行IP路由的。要使用CIDR必须满足两个条件,一是聚合的IP块有相同的高位;二是聚合的网络地址数必须是2的n次方,如2个,4个,8个,16个等。下面演示如何把一块IP地址聚合成一个IP子网。我们有一组C类的子网,192.168.1.0/24---192.168.8.0/24。为了使我们有更直观的认识,我们把IP地址中第三组的值化成二进制形式。

192.168.00000001.0   --- 192.168.1.0/24     
192.168.00000010.0   --- 192.168.2.0/24
192.168.00000011.0   --- 192.168.3.0/24
192.168.00000100.0   --- 192.168.4.0/24
192.168.00000101.0   --- 192.168.5.0/24
192.168.00000110.0   --- 192.168.6.0/24
192.168.00000111.0   --- 192.168.7.0/24
192.168.00001000.0   --- 192.168.8.0/24
网络地址的前20位都是相同的,我们可把这些子网聚合成192.168.1.0/20子网。在路由器上只需一条路由项即可。

小结:CIDR聚合是把网络地址的一部份转化为主机地址,VLSM子网划分把主机地址的一部份转化为网络地址。CIDR聚合使子网掩码变短,VLSM划分使子网掩码变长。CIDR(无类别域间选路)和VLSM(可变长子网掩码)是互相配合工作的。VLSM是掩码的设计方法,而CIDR是支持VLSM的路由协议。使用CIDR后,0子网也变成有效子网号,但必须在路由器上用ip subnet-zero命令开启。

TCP和UDP的选择

tcp和udp各有优势,在选择协议时,以下参考意见可能对你有所帮助。

如果以下内容是你需要的,则请选择TCP。

  • 你需要一个可靠的数据传输,以确保你的数据能完整无缺地到达目的地。

  • 你的协议需要不止一个请求和服务器的回答。

  • 你要发送较多的数据。

  • 初始连接出现短暂的延迟是可以接受的。

如果以下内容是你需要的,则请选择UDP。

  • 不太关心数据是否到达或不太关心数据到达的顺序是否正确。

  • 你的协议只包括基本请求和回答。

  • 你需要尽快建立网络会话。

  • 只传输很少的一部份数据。UDP限制一个数据包最大不超过64KB。

TCP建立和断开的过程

在建立TCP连接时,要经过著名的三次握手过程。

  1. 第一次握手:client端首先向server端发送一个SYN包,值为1。这是第一个封包,告知server端client端想与server建立TCP连接;

  2. 第二次握手:server端接收到client端发送的SYN包后,会回复一个SYN/ACK包,SYN值加1,ACK值随机产生。告知client端server端已收到client端发送的SYN包;

  3. 第三次握手:client端收到server端答复的SYN/ACk包后,又会回复一个ACK,ACK值是server端发送来的SYN/ACK包中的ACK值加1。告知server端client端已收到SYN/ACK包。到此为止,三次握手完成,client端和server端可以开始传送数据。

下面是TCP三次握手图示:

      client                server
       |                     |
       |--------SYN--------->|
       |                     |
       |                     |
       |<-----SYN+ACK--------| 
       |                     |
       |                     |
       |--------ACk--------->|
       |                     |
       |                     |

断开TCP连接,要传送四个封包。比建立TCP连接时多了一次。主要原因是,断开TCP连接是在client端和server端分别发生的。

  1. 例设第一个封包由client端发送,则client端会发送一个FIN封包,值为1。告知server端client端要结束连接。

  2. server端收到client端发送的FIN包后,知道client端已完成数据的传送要请求断开TCP连接。server端会发送一个ACK包给client端。告知client端server端已知道正常收到FIN包。

  3. server端把未传送完的数据传送给client端后,也会给client端发送一个FIN,告知client端server端已完成数据传送,可以断开TCP连接。

  4. client端收到server端发送的FIN封包后,会向server端回复一个ACK包,表示已确认server端的FIN封包。至此,TCP连接断开。

TCP断开连接的四个步骤:

      client               server
       |                     |
       |                     |
       |--------FIN--------->|
       |                     |
       |                     |
       |<-------ACK----------|
       |                     |
       |                     |
       |<-------FIN----------|
       |                     |
       |                     |
       |--------ACK--------->|
       |                     |

Chapter 4. 无线网络

无线网络可以使我们摆脱网线的束缚,实现自由自在,随时随地在线的梦想。同时又有低成本、快速移动、灵活配置等优点。本章介绍无线网络的基础知识和最新的发展动态。

现时流行的无线网络技术有ZigBee、bluetooth、Wi-Fi、WiMAX。下面对这些无线网络技术进行简单的介绍。

  • ZigBee技术是一种低成本,低功耗,低速率,短距离传输的无线通信技术,它的标准号是802.15.4。它具有以下特点。

    • 近距离,ZigBee网络的传输距离一般介于10-100米之间,通过增加RF发射功能后,可扩展到1-3公里。

    • 低速率,最大传输速率是250Kbps。

    • 低功耗,2节普通5号干电池可使一个ZigBee节点工作长达24个月或几年,相比较,蓝牙只能工作数周,Wi-Fi只能工作数小时。低功能耗的特性使ZigBee成为无线嵌入式系统的主要技术之一。

    • 短时延,从睡眠转入工作状态只需15ms,节点连接进入网络只需30s。相比较,蓝牙需要3-10s,Wi-Fi需要3s。

    • 稳定可靠,ZigBee的MAC层采用talk-when-read的碰撞避免机制,确保数据传输可靠稳定。

      安全,ZigBee提供数据完整性检查和鉴权功能,在数据传输中提供三级的安全性。第一级是无安全方式,第二级是ACL方式,第三种是采用高级加密标准(AES)提供对数据的保护。

  • bluetooth。蓝牙是一种支持设备短距离通信(一般是10m之内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。蓝牙的标准是IEEE802.15,工作在2.4GHz 频带,带宽为1Mb/s。

  • Wi-Fi(读音:waifai),全称是Wireless Fidelity。Wi-Fi使用2.4GHz频段,覆盖100米左右的区域。通过无线网卡和无线AP组成Wi-Fi无线网络,标准号是802.11x。802.11b的最大速度是11M,802.11g最大速度达到54M,现在的增强技术可以把802.11g的最大速度提高到108M。

  • WiMAX(Worldwide Interoperability for Microwave Access,即全球微波互联接入),WiMAX是Wi-Fi的接班人,标准号是802.16x,WiMAX全面兼容Wi-Fi。WiMAX具有更远的传输距离(50公里),更宽的频段选择以及更高的传输速度(70M)。

  • TD-SCDMA(时分同步码分多址接入),中国大陆独自制定拥有自主知识产权的3G标准。

  •  

Chapter 5. 交换机

Table of Contents

Cisco IOS登录
CLI功能简介
启用Web管理界面
ROM监控系统
常用Cisco交换机介绍
交换式网络设计
配置Supervisor Engine
配置2层接口
交换表
端口选择
配置3层接口
VLAN和Trunking技术
创建VLAN
Trunking技术
VTP
私有VLAN
STP生成树协议
VLAN ACL
ARP操作
在交换机上配置DHCP服务器

Chapter 6. PIX防火墙

Table of Contents

入门
ASA安全级别
基本配置
PPPoE拔号配置
NAT
访问控制列表--ACL
Turbo ACL
icmp ACL
PDM
VPN
IKE
CA
LAN to LAN VPN
easy remote VPN
远程访问VPN
远程连接PIX
命令授权
posted @ 2009-07-30 10:00  辛勤耕耘  阅读(996)  评论(0编辑  收藏  举报