这是偶99年翻译的SUN的网络管理员(SA-387)的东东(2)

发表于:2007-06-08来源:作者:点击数: 标签:
呵呵,两章两章贴,可以灌点水, 这不算无耻吧,呵呵,大家别生气啊! 我灌。。。。 第二章网络接口和硬件 本章目标 l能够定义以下项目:以太网(Ethernet),包(packet)和最大传输单元MTU l描述以太网络地址 l能够描述以太网络的帧 l理解封装的概念 l能够理解

呵呵,两章两章贴,可以灌点水,
这不算无耻吧,呵呵,大家别生气啊!
我灌。。。。

第二章 网络接口和硬件
本章目标
l 能够定义以下项目:以太网(Ethernet),包(packet)和最大传输单元MTU
l 描述以太网络地址
l 能够描述以太网络的帧
l 理解封装的概念
l 能够理解载波检测,多路存取及冲突检测的目的
l 定义以太网的广播地址
l 会使用 netstat及 snoop命令
介绍
本章目的是来描述一个以太网络的组成,包括以太网地址,存取方式(CAMA/CD),及广播总线技术的概念。介绍以太网的构架及封装技术。同时还介绍如何使用 netstat及 snoop命令。
以太网的定义
以太网是一个局域的包交换网络,它基于一个分布式存取控制的以10MB/秒广播总线技术。它在1980年变成了工业标准,由DEC,Intel,及Xerox 共同商拓。
以太网由三个主要的元素组成:
1. 硬件方面,可在通过网络电缆连接的计算机间移动数据。
2. 以太网的包(也叫帧)。包通常被用来描述通过包交换网络发送的数据单元。
3. 以太网的存取方式协议(CSMA/CD)通常用来控制包传输。
包交换网络允许在一个网络中的结点同时进行多路通讯。
以太网络设计为总线拓朴,也就是设备连在一条单一线路上。另外,以太
网络使用广播总线技术,也就是说,每一个收发器都可以接收每一个在网络上传输的包,收发器发送每一个包到以太网的接口,判断每一个包是否已经到达了目的地。如果一个包已经到达了目的地,那么,它将继续向协议栈的上层传送。
——存取方式
局域网中的主机使用网络接口层协议来发送数据,载波检测,多路存取和冲突检测(CSMA/CD)。
CAMS/CD先确定所有设备的通讯都在同一个单一介质中发生,每一个时间只有一个传输在进行。如果两个设备在同一时间进行传输,那么冲突将被检测到,然后两个设备将会再等待一个随机的时间(很短)后再发送数据。
以太网地址
一个以太网地址是一个硬件的唯一合法地址。共有48位长,显示成12个十六进制字符,中间由:隔开。如: 8:0:20:1e:2a:3c
MAC地址由Xerox管理,前三段标志由IEEE定义的厂商,Sun System的前三位经常是8:0:20,然后由Sun公司标识后三位的字符。这种方式确保了在网络上的每一个MAC地址都是唯一的。
以太网的帧
——以太网的帧分析
以太网的帧是局域网中的数据传输单元。帧由已经定义好开始和结束的连续的二进制数列构成。以太网络则决定这些数列如何编码和网络上的主机如何检测这些编码的开始和结束。

       1-------------6  7-----------12 13-------14 15-----------------1514   last 4octets 
 序Preamble  64bits    D  addr   48bits      S Addr 48 bits  Type 16 bins       Data  (最大1500 bytes)   CRC  32 bits

局域网上的主机就使用这些信息来接收和发送数据。
——序(Preamble)
有64bit的以太网序区由0和1组成,用来进行同步。同步过程可以帮助网络接口决定以太网的帧什么时候开始。
——目标地址
目标地址区包括目标主机的以太网地址。
——源地址
源地址区是发送信息的主机的以太网地址。
——类型
以太帧的第四个区域用来描述以太网中帧的数据封装类型(如,IP,ICMP,地址解析协议(ARP),及反向ARP)
——数据
数据区从至少包含46个字节的信息到最大1500个字节的信息。网络硬件决定了一个帧中的最大的octets的数量。称之为最大传输单元(MTU)。如果用来传输的数据少于46个字节,数据将会被追加0来过到最小46字节数。
循环冗余校验(CRC)
CRC区用来进行错误检测。这个值由发送主机的帧计算,接收主机则采用和发送主机相同的算法来重新计算到达的CRC值,并进行比较。如果两个值不同,则,这个帧将被舍弃。

——封装

EthernetHeader InternetHeader TransportHeader   Application data CRC
                           |-----------Transport  segment-----------------|
             |--------------------------------Internet Datagram--------------------|
             |----------1500-byte maximum transter unit of data--------------|
|----------------------------------------------------Ethernet frame--------------------------------|

——最大传输单元(MTU)
最大传输单元是一个给定的物理网络中数据可以传输的最大数量。以太网的MTU由硬件指定。对于以太网的物理接口,MTU是1500字节,对于loopback接口来说,MTU的值为8232。Loopback接口是一个用来和本地主机通讯的假想设备。
——封装的概念
当发送数据到网络中的另一个结点时,数据从应用层向物理层传送。每层都要在数据最前面增加一个控制信息,也就是头,头信息用来确保数据正确的发送。
在每一层都增加头信息,这个过程称为封装。当数据被接收时,进行反向的过程。在数据向上层传输的过程中,每一层都脱掉它的头。
以太网地址
——发送信息
在网络中进行通讯,可以使用两种以太网地址。
l Unicast Address
以太网中的一个主机向另一个主机发送信息可以使用Unicast Address,单独的以太网地址被一对一的用来进行Unicast传输。
l 广播地址(Broadcast Address)
一个主机在网络中向所有主机发送信息,使用广播地址,也就是ff:ff:ff:ff:ff:ff,
当以太网的帧接收到目标主机的地址时,网络接口层才会让信息向上一层传去。
相关的网络命令
/usr/sbin/snoop
snoop命令在网络中捕获包并且显示包的内容。在后面的几章中将继续讨论有关于snoop命令的功能。
例如:
l 检查广播包
#snoop broadcast
Using device /dev/ie  (promiscuous mode)
Skunk  -à128.50.255.255  RUSERS  C
Zebra  -à 128.50.255.255  RUSERS  C

l 打印详细的广播包的头信息
#snoop –v broadcast
Using device /dev/ie  (promiscuous mode)
ETHER: --- Ether  Header ----
ETHER:
ETHER:
ETHER: Packet 1 arrived at 11:33:4.02
ETHER: Packet size = 130 bytes
ETHER: Destination=ff:ff:ff:ff:ff:ff, (broadcast)
ETHER: Source = 8:0:20:75:8b:59, Sun
ETHER: Ethertype= 0800 (IP)
注意:当有网络流量并且流量符合搜索条件时,snoop命令只显示输出情况。

/usr/bin/netstat
使用netstat –i 命令来显示网络接口状态。
例如:
#netstat -i 

Name Mtu Net/Dest   Address   Ipkts   Ierrs  Opkts  Oerrs Coll  Queue
Lo0 8332 loopback   localhost   5248   0    5248     0    0  0
Le0 1500 128.50.0.0  bear   77553  4    39221  2   2103  0

Name——接口设备名称
Mtu ——最大输出单元
Net/Dest——网络号,这个区涉及到文件/etc/inet/networks,将在以后讨论。
Address——接口的IP地址,这个区涉及到文件/etc/inet/hosts
Ipkts/Ierrs——显示输入包和错误
Opkts/Oerrs——显示输出包和错误
Collis——在这个接口的冲突数量
Queue——等待传输的包数量
总结
 在本章中我们已经学过:
l 定义以下项:以太网络,包,及最大传输单元(MTU)
l 描述以太网络的地址
l 描述以太网的帧结构
l 描述封装的概念
l 描述CSMA/CD的存取方式
l 描述一个以太网的广播地址
l 使用命令 netstat和snoop

 醉里方休 回复于:2003-06-25 15:34:43
上个世纪的东东啊!第一章呢?

 solstice 回复于:2003-06-25 15:36:21
第三章 ARP和RARP
目标
通过本章学习,你将会掌握:
l 定义地址解析
l 能描述获得目标主机的以太网地址的过程
l 能够描述系统启动时的网络配置过程
l 能够描述用来配置网络接口的配置文件和脚本
介绍
本章的目的是来描述局域网中的主机如何通过网络地址来发送信息。解释获得目的地址的机制,和系统如何自动配置网络接口。
Address Resolution
——以太帧的封装
我们先回忆一下在数据被发送之前如何被封装到一个以太帧的过程。以太帧由地址信息段,数据段,数据类型段及错误校验段组成。
发送数据的主机必须完成帧的各个段的填写。发送主机了解它所要发送的数据,所使用的网络和传输协议,并能自动的计算一个CRC。
然而,发送主机还没有目标主机的地址……
IP头,是以太帧中的数据段的一部分,它必须包括源主机地址和目标主机地址的信息。发送主机最初通过本地数据库文件 /etc/inet/hosts来获取本机地址。
发送主机通过参考目标主机的 /etc/inet/hosts 文件或通过一个网络表(hosts,如果命名服务允许的话)来获得目标主机的地址。
发送主机完成了以太帧头的源和目标地址段。源地址很容易获取,因为它永久性的存在于本机的系统内核列表中(system kernel table)。
以太帧就要准备全了,所缺的就是目标主机的MAC地址了。
发送主机使用地址解析协议(Address Resolution Protocol(ARP))来获得目标主机的MAC地址。
地址解析协议(ARP)
ARP是一个在网络层和网络接口层建立地址连接的过程。主机用它来准备一个网络传输信息单元。
——ARP 列表(ARP Table)
ARP列表存于内存中,它存放那些被频繁请求的地址。准备传输的帧每次调用目标主机的地址时,都要查阅ARP列表。
——ARP请求(ARP Request)
如果一个MAC地址不存在于ARP列表,发送主机将它解析成一个IP地址。发送主机在本地网上发送一个广播类型的ARP请求来获取这个主机地址,与这个IP地址相符的主机响应它的MAC地址。
例如:
#snoop –v arp
Using device /dev/le (promiscuous mode)
Ether: -------------  Ether Header  -------------
Ether:
Ether: Packet 1 arrived at 16:15:29.64
Ether: Packet size=42 bytes
Ether: Destination=ff:ff:ff:ff:ff:ff, (broadcast)
Ehter: Source =8:0:20:75:6e:6f, Sun
Ether: Ethertype=0806(ARP)
Ether:
ARP: ---------  ARP /RARP Frame --------
ARP:
ARP: Hardware type = 1
ARP: Protocol  type =0800 (IP)
ARP: Length of hardware address = 6 bytes
ARP: Length of protocol address = 4 bytes
ARP: Opcode 1 (ARP Request)
ARP: Sender’s hardware address=8:0:20:75:6e:6f
ARP: Sender’s protocol address =128.50.1.2, bear
ARP: Target hardware address=?
ARP: Target protocol address= 128.50.1.5, skunk

在这个例子中,请求主机向子网上所有使用广播地址为ff:ff:ff:ff:ff:ff的主机广播ARP请求。
包类型是一个ARP请求,它包括属于目标主机skunk(Tartget protocol address)的被请求的MAC地址(Target hardware address)。
——ARP 应答(ARP Reply)
在子网上的每个主机都接收到ARP的请求包,只有匹配目标IP地址的唯一一台主机才给源MAC地址一个应答。

#snoop –v arp
Using device /dev/le (promiscuous mode)
Ether: -------------  Ether Header  -------------
Ether:
Ether: Packet 1 arrived at 16:15:29.64
Ether: Packet size=60 bytes
Ether: Destination=8:0:20:75:6e:6f,    Sun
Ehter: Source =8:0:20:75:8b:59, Sun
Ether: Ethertype=0806(ARP)
Ether:
ARP: ---------  ARP /RARP Frame --------
ARP:
ARP: Hardware type = 1
ARP: Protocol  type =0800 (IP)
ARP: Length of hardware address = 6 bytes
ARP: Length of protocol address = 4 bytes
ARP: Opcode 2 (ARP Reply)
ARP: Sender’s hardware address=8:0:20:75:8b:59
ARP: Sender’s protocol address =128.50.1.5, skunk
ARP: Target hardware address=8:0:20:75:6e:6f
ARP: Target protocol address= 128.50.1.2, bear
ARP:
在这个例子中,应答主机发送这个ARP应答包给目标主机bear在同一子网。
包类型为ARP Reply,它包括发送主机的硬件地址,8:0:20:75:8b:59
而请求主机则使用这些信息来更新它的ARP列表。
——ARP应答缓存
请求主机接受一个ARP应答,并把它存放在一个由系统内核进行管理的临时ARP列表中,一个应答ARP请求的主机也同进更新它的请求主机的IP地址和MAC地址。
完整的入口映射IP地址到硬件(MAC)地址。不完整的入口则只包括IP地址。完整的入口有一个TTL值,是一个时间段,如果在这个有效的时间内,ARP列表的入口不能被使用,则,这个入口将被自动舍弃。
主机使用ARP列表中的这个信息来向目标主机发送包,可以避免再次向网络发送一个ARP广播包。
——ARP表管理
arp 命令显示和控制ARP表中的IP地址到MAC地址的映射的入口情况。
例如:
*要查看ARP表中的所有入口,可以:
# arp –a

Net to Media Table
Device IP Address Mask Flags Phys Addr
Le0 skunk 255.255.255.255 08:00:20:75:8b:59
Le0 bear 255.255.255.255 SP 08:00:20:75:6e:6f
Le0 zebra 255.255.255.255 U
Le0 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00
各字段的意义是:
l Device——网络设备(接口)
l IP Address——请求的IP地址
l Mask——应用的子网掩码,这将在后继章节讨论
l Flags——ARP入口的状态,以下是几个常用的状态列表:
* S——一个被永久保存的入口
*P——一个已发布的入口
*M——这是一个多址传输的入口,多址传输将在下一节介绍
*U——不可被解析或不完整的入口
* 要查看一个特定的ARP表入口,可以:
# arp hostname
hostname 可以是一个主机名,也可以是一个主机的IP地址。
*要增加一个永久性的ARP表入口,可以:
# arp –a hostname ethernet_address
它创建了一个永久性的入口而不管ARP表的默认的TTL值,手工填加一个ARP列表可以减少ARP 的广播包,并可以在一个负载很重的网络(如子网的路由器在极为繁忙的骨干网上进行IP包转发)有效的降低网络流量。
*要增加一个临时的ARP入口,可以:
# arp –s hostname ethernet_address temp
3到4分钟后,这个入口会死掉。
*要增加一个已发布的ARP入口,可以:
# arp –s hostname ethernet_address pub
当一个主机应答另一个主机的ARP请求时,使用一个已发布的ARP入口。这是一个很有用的选项在一个不能对ARP请求进行应答的交互式环境。这个入口将永久保存下去除非使用temp关键字在命令中。
*要删除一个ARP入口,可以
# arp –a hostname
hostname可以是一个主机名也可以是一个主机的IP地址。
*从一个文件增加一个ARP入口,可以:
# arp –f filename
文件中的入口应该这样被显示在表中:
hostname  ethernet_address  [temp] [pub]
网络接口配置
正确的配置主机的网络接口对网络连接是非常重要的。主机使用ARP更新网络接口,去监听接收和发送信息。
——接口配置
Solaris系统环境使用本地或网络数据库自动配置主机的网络接口。这个进程是系统启动过程的一部分,并通过系统内核进行管理,也就是:init进程,和它的配置文件/etc/inittab,关联到系统运行级别的脚本。

     /kernel/unix
         |    1.系统从UNIX内核启动,它所运行的其中一个进程是/sbin/init
    /sbin/init
         |  2./sbin/init 进程读取配置文件 /etc/inittab。它运行其它脚本/sbin/init
     /sbin/rcs
         |  3./sbin/rcs脚本设置系统为单一用户模式,包括/etc/init.d/rootusr
    /etc/init.d/rootusr
4./etc/init.d/rootusr 脚本配置以太及loopback接口,另外,把/usr文件系统作为只读系统挂接。
——/etc/init.d/rootusr
文件/etc/init.d/rootusr脚本在系统启动的单一用户阶段执行,
调用文件/etc/hostname.interface和/etc/hostname。文件/etc/hostname.interface标识网络接口的主机名,文件/etc/inet/host标识主机的IP地址和主机名。命令ifconfig参考这些文件来配置网络接口和各自的IP地址。
即使在单用户的模式下,网络接口仍然监听,接收和发送帧。
主机bear的文件/etc/hostname.le0的内容:
#cat /etc/hostname.le0
bear
主机flipper的/etc/inet/hosts文件内容:
# cat /etc/hosts
127.0.0.1 localhost loghost
128.50.1.2 bear

反向地址解析
——反向地址解析协议
——无盘系统
无盘系统就是没有本地硬盘。它们使用网络接口和网络服务(NFS)来存取文件/etc/inet/hosts。
一个无盘系统初始化必须使用反向地址解析协议(RARP)来获得它的IP地址。RARP是一个在网络接口层和网络层建立地址链接的过程。ARP的调用过程是已知的目标主机IP地址和未知的MAC地址。RARP则反向这个过程,即,由一个已知的MAC地址开始到一个未知的IP地址。
——启动系统(JumpStart System)
JumpStart System是一个简单的无盘客户端,他们依赖于另一个主机提供服务来安装。JumpStart客户使用RARP从服务器上开始安装进程。
——RARP 请求
一个RARP请求是由一个启动的无盘客户端产生的一个广播包。
例如:
# snoop –v rarp
Using  device /dev/le (promiscuous mode)
ETHER: ------- Ether Header -------
ETHER: Packet 1 arrived at 16:29:55.70
ETHER: Packet size = 64 bytes
ETHER: Destination = ff:ff:ff:ff:ff:ff, (broadcast)
ETHER: Source =8:0:20:75:8b:59, Sun
ETHER: Ethertype = 8035 (RARP)
ETHER:
ARP: ---------- ARP/RARP Frame --------
ARP:
ARP: Hardware type = 1
ARP: Protocol type = 0800 (IP)
ARP: Length of hardware address = 6 bytes
ARP: Length of protocol address = 4 bytes
ARP: Opcode 3 (REVARP Request)
ARP: Sender’s hardware address = 8:0:20:75:8b:59
ARP: Sender’s protocol address = 255.255.255.255, BROADCAST
ARP: Target hardware address = 8:0:20:75:8b:59
ARP:    Target protocol address = ?
ARP:
在这个例子里,无盘客户端由发送者的MAC地址8:0:20:75:8b:59来标识,并由RARP的广播请求包中的请求它的IP地址信息开始它的启动过程。
服务器bear和客户端在同一子网,它被配置来监听和响应客户端的RARP请求。
——RARP应答服务器
一个RARP应答包由同一子网上的被配置为应答RARP请求的主机产生。服务进程 in.rarpd响应RARP请求。它必须由root用户运行,并且是支持无盘系统的服务器的启动的一部分。
精灵进程根据MAC到IP地址的映射产生了一个RARP应答。它使用本地数据库(/etc/inet/host和/etc/ethers)或者网络列表(ethers和hosts)来创建一个应答。启动的机器必须在数据库中列出:in.rarpd,来定位它的IP地址,否则,in.rarpd将不会响应。
——RARP应答
例子:
# snoop –v rarp
ETHER: ------------ Ether Header  ----------
ETHER:
ETHER: Packet 2 arrived at 16:29:58.78
ETHER: Packet size = 42 bytes
ETHER: Destination = 8:0:20:75:8b:59, Sun
ETHER: Source   =8:0:20:75:6e:6f, Sun
ETHER: Ethertype = 8035 (RARP)
ETHER:
ARP:
ARP: ------------ ARP/RARP Frame  ----------
ARP: Hardware type = 1
ARP: Protocol type = 0800 (IP)
ARP: Length of hardware address = 6 bytes
ARP: Length of protocol address = 4 bytes
ARP: Opcode 4 (REVARP Reply)
ARP: Sender’s hardware address = 8:0:20:75:6e:6f
ARP: Sender’s protocol address = 128.50.1.2, bear
ARP: Target hardware address = 8:0:20:75:8b:59
ARP: Target protocol address = 128.50.1.5, skunk
ARP:
继续上一个过程,RARP应答服务器bear返回一个RARP应答包给无盘客户端的物理地址(8:0:20:75:8b:59)并返回客户的IP地址,128.50.1.5
客户端继续它的无盘启动过程。
——维护in.rarpd 服务器
如果一个无盘客户服务器第一次进行设置时,在服务器上启用以下的客户脚本来执行:
# /etc/init.d/nfs.server start
如果客户不启动,进行以下检查:
*执行 snoop –v rarp 在同一子网的第三方机器上,如果不能看到无盘客户站的RARP请求,则可能是网络的硬件有问题。
*如果可以看到无盘客户端的RARP请求,但不能看到服务器端的RARP应答在客户的启动服务器上,检查以下项目:
*检查 /etc/inet/hosts文件(或者NIS/NIS+等)的客户主机名和IP地址。
*检查 /etc/ethers 文件中的客户主机名和MAC地址。
*检查 in.rarpd进程是否启用。
总结
*能描述在一个局域网上主机如何使用和获取MAC地址来发送信息
*描述自动网络配置进程
*描述配置网络过程中,文件和脚本的使用
*用ifconfig 命令来配置网络接口

 solstice 回复于:2003-06-25 15:37:07
老大,第0章和第一章在上一个贴子里啊!

 南非蜘蛛 回复于:2003-06-25 15:57:22
99年就这么强了,我还在念大学拿,郁闷

 solstice 回复于:2003-06-25 16:13:13
我倒,吱猪这么年轻,
唉,偶已经是老东东了,
翻译的东东也是老东西了!

原文转自:http://www.ltesting.net