第六章 linux网络基础.docx
- 文档编号:23385188
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:22
- 大小:137.54KB
第六章 linux网络基础.docx
《第六章 linux网络基础.docx》由会员分享,可在线阅读,更多相关《第六章 linux网络基础.docx(22页珍藏版)》请在冰豆网上搜索。
第六章linux网络基础
第六章Linux网络基础
6.1Linux网络结构的特点
Linux在服务器领域已经非常成熟,其影响力日趋增大。
Linux的网络服务功能非常强大,但是由于Linux的桌面应用和Windows相比还有一定差距,除了一些Linux专门实验室之外,大多数企业在应用Linux系统时,往往是Linux和Windows(或UNIX)等操作系统共存形成的异构网络。
在一个网络系统中,操作系统的地位是非常重要的。
Linux网络操作系统以高效性和灵活性而著称。
它能够在PC上实现全部的UNIX特性,具有多任务、多用户的特点。
Linux的组网能力非常强大,它的TCP/IP代码是最高级的。
Linux不仅提供了对当前的TCP/IP协议的完全支持,也包括了对下一代Internet协议IPv6的支持。
Linux内核还包括了IP防火墙代码、IP防伪、IP服务质量控制及许多安全特性。
Linux的网络实现是模仿FreeBSD的,它支持FreeBSD的带有扩展的Sockets(套接字)和TCP/IP协议。
它支持两个主机间的网络连接和Sockets通信模型,实现了两种类型的Sockets:
BSDSockets和INETSockets。
它为不同的通信模型提供了两种传输协议,即不可靠的、基于消息的UDP传输协议和可靠的、基于流的TCP传输协议,并且都是在IP网际协议上实现的。
INETSockets是在以上两个协议及IP网际协议之上实现的。
掌握OSI网络模型、TCP/IP模型及相关服务对应的层次对于理解Linux网络服务器是非常重要的。
6.2TCP/IP四层模型和OSI七层模型
表6-1是TCP/IP四层模型和OSI七层模型对应表。
我们把OSI七层网络模型和LinuxTCP/IP四层概念模型对应,然后将各种网络协议归类。
表6-1 TCP/IP四层模型和OSI七层模型对应表
OSI七层网络模型
LinuxTCP/IP四层概念模型
对应网络协议
应用层
应用层
TFTP,FTP,NFS,WAIS
表示层
Telnet,Rlogin,SNMP,Gopher
会话层
SMTP,DNS
传输层
传输层
TCP,UDP
网络层
网际层
IP,ICMP,ARP,RARP,AKP,UUCP
数据链路层
网络接口层
FDDI,Ethernet,Arpanet,PDN,SLIP,PPP
物理层
IEEE802.1A,IEEE802.2到IEEE802.11
1.网络接口
网络接口把数据链路层和物理层放在一起,对应TCP/IP概念模型的网络接口。
对应的网络协议主要是:
Ethernet、FDDI和能传输IP数据包的任何协议。
2.网际层
网络层对应LinuxTCP/IP概念模型的网际层,网络层协议管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达目的机器。
这一过程中,IP和其他网络层的协议共同用于数据传输,如果没有使用一些监视系统进程的工具,用户是看不到在系统里的IP的。
网络嗅探器Sniffers是能看到这些过程的一个装置(它可以是软件,也可以是硬件),它能读取通过网络发送的每一个包,即能读取发生在网络层协议的任何活动,因此网络嗅探器Sniffers会对安全造成威胁。
重要的网络层协议包括ARP(地址解析协议)、ICMP(Internet控制消息协议)和IP协议(网际协议)等。
3.传输层
传输层对应LinuxTCP/IP概念模型的传输层。
传输层提供应用程序间的通信。
其功能包括:
格式化信息流;提供可靠传输。
为实现后者,传输层协议规定接收端必须发回确认信息,如果分组丢失,必须重新发送。
传输层包括TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议),它们是传输层中最主要的协议。
TCP建立在IP之上,定义了网络上程序到程序的数据传输格式和规则,提供了IP数据包的传输确认、丢失数据包的重新请求、将收到的数据包按照它们的发送次序重新装配的机制。
TCP协议是面向连接的协议,类似于打电话,在开始传输数据之前,必须先建立明确的连接。
UDP也建立在IP之上,但它是一种无连接协议,两台计算机之间的传输类似于传递邮件:
消息从一台计算机发送到另一台计算机,两者之间没有明确的连接。
UDP不保证数据的传输,也不提供重新排列次序或重新请求的功能,所以说它是不可靠的。
虽然UDP的不可靠性限制了它的应用场合,但它比TCP具有更好的传输效率。
4.应用层
应用层、表示层和会话层对应LinuxTCP/IP概念模型中的应用层。
应用层位于协议栈的顶端,它的主要任务是应用。
一般是可见的,如利用FTP(文件传输协议)传输一个文件,请求一个和目标计算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。
常见的应用层协议有:
HTTP,FTP,Telnet,SMTP和Gopher等。
应用层是Linux网络设定最关键的一层。
Linux服务器的配置文档主要针对应用层中的协议。
TCP/IP模型各个层次的功能和协议如表6-2所示。
表6-2 TCP/IP模型各个层次的功能和协议
层次名称
功能
协议
网络接口
负责实际数据的传输,对应OSI参考模型的下两层
HDLC(高级链路控制协议)
PPP(点对点协议)
SLIP(串行线路接口协议)
网际层
负责网络间的寻址、数据传输,对应OSI参考模型的第三层
IP(网际协议)
ICMP(网际控制消息协议)
ARP(地址解析协议)
RARP(反向地址解析协议)
传输层
负责提供可靠的传输服务,对应OSI参考模型的第四层
TCP(控制传输协议)
UDP(用户数据报协议)
应用层
负责实现一切与应用程序相关的功能,对应OSI参考模型的上三层
FTP(文件传输协议)
HTTP(超文本传输协议)
DNS(域名服务器协议)
SMTP(简单邮件传输协议)
NFS(网络文件系统协议)
6.3TCP/IP提供的主要用户应用程序
1.Telnet程序
Telnet程序提供远程登录功能。
2.文件传输协议
文件传输协议(FTP)允许用户将一个系统上的文件复制到另一个系统上。
3.简单邮件传输协议
简单邮件传输协议(SMTP)用于传输电子邮件。
4.Kerberos协议
Kerberos是一个受到广泛支持的安全性协议。
5.域名服务器协议
域名服务器协议(DNS)能使一台设备具有的普通名字转换成某个特定的网络地址。
6.简单网络管理协议
简单网络管理协议(SNMP)把用户数据报协议(UDP)作为传输机制,它使用和TCP/IP不同的术语,TCP/IP用客户端和服务器,而SNMP用管理器(Manager)和代理(Agent),代理提供设备信息,而管理器管理网络通信。
7.网络文件系统协议
网络文件系统协议(NFS)是由SUNMicrosystems公司开发的一套协议,可使多台计算机能透明地访问彼此的目录。
8.远程过程调用
远程过程调用(RPC)是使应用软件能与另一台计算机(服务器)通信的一些函数。
9.普通文件传输协议
普通文件传输协议(TFTP)是一种缺乏任何安全性的、非常简单落后的文件传输协议。
10.传输控制协议
传输控制协议(TCP/IP中的TCP部分)是一种数据可靠传输的通信协议。
11.网际协议
网际协议(IP)负责在网络上传输由TCP/UDP装配的数据包。
12.网际控制消息协议
网际控制消息协议负责根据网络上设备的状态发出和检查消息,它可以将某台设备的故障通知到其他设备。
6.4端口号分配
TCP和UDP采用16b的端口号来识别应用程序。
那么这些端口号是如何选择的呢?
服务器一般都是通过知名端口号来识别的。
例如,对于TCP/IP实现来说,每个FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(普通文件传输协议)服务器的UDP端口号都是69。
任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。
这些知名端口号由Internet号分配机构(InternetAssignedNumbersAuthority,IANA)来管理。
到1992年为止,知名端口号介于1~255之间。
256~1023之间的端口号通常都是由UNIX系统占用,以提供一些特定的UNIX服务,也就是说,提供一些只有UNIX系统才有的,而其他操作系统可能不提供的服务。
现在IANA管理1~1023之间所有的端口号。
Internet扩展服务与UNIX特定服务之间的一个差别就是telnet和rlogin,它们二者都允许通过计算机网络登录到其他主机上。
telnet是采用端口号为23的TCP/IP标准,且几乎可以在所有操作系统上进行实现。
相反,rlogin最开始时只是为UNIX系统设计的(尽管许多非UNIX系统现在也提供该服务),因此在20世纪80年代初,它的端口号为513,客户端通常对它所使用的端口号并不关心,只须保证该端口号在本机上是唯一的即可。
客户端口号又称做临时端口号(即存在时间很短暂),这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着,其服务就运行。
大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。
大于5000的端口号是为其他服务器预留的(Internet上并不常用的服务)。
我们可以在后面看见许多给临时端口分配端口号的例子。
大多数Linux系统的文件/etc/services都包含了人们熟知的端口号。
为了找到telnet服务,可以运行以下语句:
“greptelnet/etc/services”。
表1-3是一些常用TCP服务和端口。
表6-3 常用TCP服务和端口
TCP端口
服务名
功能
7
echo
echo字符(用于测试)
9
discard
丢弃字符串(用于测试)
13
daytime
日期服务
19
chargen
字符生成器
21
ftp
文件传输协议(FTP)
22
ssh
安全shell
23
telnet
远程登录
25
smtp
电子邮件
37
time
时间服务
42
nameserve
TCP名字服务
43
whois
NICwhois服务
53
domain
域名服务(DNS)
79
finger
用户信息
80
http
WWW(万维网)
110
pop3
邮局协议3(POP3)
111
sunrpc
SUN的远程过程调用(RPC)
113
auth
远程用户名认证服务
119
nntp
网络新闻传输协议(NNTP)
143
imap
交互式邮件访问协议
443
https
用SSL加密的HTTP
512
exec
在远程UNIX主机上执行命令
513
login
登录到远程UNIX主机(rlogin)
514
shell
从远程UNIX主机获得shell(rsh)
515
printer
远程打印
1080
socks
SOCKS应用代理服务
2049
NFS
TCP之上的NFS(NFSoverTCP)
6000~6001
X
XWindow系统
UDP为运行于同一台或不同机器之上的两个或多个程序之间传输数据包提供了简单的、不可靠的连接。
“不可靠”意味着操作系统不保证每个发出的包都能到达,也不保证包能够按序到达。
不过UDP是尽力传输的,在LAN中UDP通常能达到100%的可靠性。
UDP的优点在于它比TCP的开销少,较少的开销使得基于UDP的服务可以用TCP10倍的吞吐量传输数据。
UDP主要用于SUN的NFS、NIS、主机名解析和传输路由信息。
对于有些服务而言,偶然丢失一个包并不会带来太大的负面影响,因为它们会周期性地请求一个新包,或者那些包本身并不是很重要。
这些服务包括who、talk和一些时间服务。
表6-4是一些常用UDP服务和端口。
表6-4 常见UDP服务和端口
UDP端口
服务名
功能
7
echo
在另一个数据包中返回用户的数据
9
discard
什么也不做
13
daytime
返回日期
19
chargen
字符生成器
37
time
返回时间
53
domain
域名服务(DNS)
69
tftp
普通文件传输协议
111
sunrpc
SUN的远程过程调用(RPC)
123
ntp
网络时间协议(NetworkTimeProtocol,NTP)
161
snmp
简单网络管理协议
512
biff
新邮件提示
513
who
收集关于用户登录到同一子网的其他机器的广播
514
syslog
系统日志工具
517
talk
发送talk请求
518
ntalk
一个“新”的talk请求
520
route
路由信息协议
533
netwall
写每个用户的终端
2049
NFS
网络文件系统协议(NFS)
6.5Linux的TCP/IP网络配置
Linux从一开始就是为网络而设计的。
它内置了以前仅在高端企业产品中才可见到的成熟功能。
然而,尽管拥有这些强大的能力,Linux网络的配置却远没有Windows网络的配置复杂。
诸如Webmin、redhat-config-network和YaST允许执行图形化的配置;诸如ifconfig和route允许通过控制台或脚本查看和修改网络参数;诸如netstat允许查看单独的网络连接,并显示它们与运行着的进程的关系。
6.5.1Linux的TCP/IP网络配置文件
除非另行指定,RedHatLinux系统中大多数配置文件都在/etc目录中。
配置文件如表1-5所示。
表6-5 配置文件
配置文件名称
功能
/etc/gated.conf
gated的配置,只能被gated守护进程所使用
/etc/gated.version
gated守护进程的版本号
/etc/gateway
由routed守护进程可选择地使用
/etc/networks
列举机器所连接的网络中可以访问的网络名和网络地址。
通过路由命令使用,允许使用网络名称
/etc/protocols
列举当前可用的协议,请参阅网络管理员指南和联机帮助页
/etc/resolv.conf
在程序请求“解析”一个IP地址时,告诉内核应该查询哪个名称服务器
/etc/rpc
包含RPC指令/规则,这些指令/规则可以在NFS调用、远程文件系统安装等中使用
/etc/exports
要导出的网络文件系统(NFS)和对它的权限
/etc/services
将网络服务名转换为端口号/协议,由inetd、telnet、tcpdump和一些其他程序读取,有一些C访问例程
/etc/xinetd.conf
xinetd的配置文件,请参阅xinetd联机帮助页。
包含每个网络服务的条目,inetd必须为这些网络服务控制守护进程或其他服务。
注意,服务将会运行,但在/etc/services中将它们注释掉了,这样即使这些服务在运行也将不可用
/etc/hostname
该文件包含了系统的主机名称,包括完全的域名,例如
/etc/host.conf
该文件指定如何解析主机名。
Linux通过解析器来获得主机名对应的IP地址
/etc/sysconfig/network
指出NETWORKING=yes或no,由rc.sysinit读取
/etc/sysconfig/network-scripts/if*
RedHat网络配置脚本
/etc/hosts
机器启动时,在查询DNS以前,机器需要查询一些主机名与IP地址的匹配信息,这些匹配信息存放在/etc/hosts文件中。
在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址
6.5.2网络配置工具
在安装Linux发行版本时,需要配置网络。
你或许已经有一个来自初始配置的活动eth0,这个配置对于当前的使用也许足够,但是随着时间的推移你可能需要做出更改。
下面将介绍与IP网络相关的不同配置项,以及使用这些配置项的文件和工具。
1.手动修改配置文件
手动配置是最直接的方式,熟练的Linux用户在平时维护系统的时候更喜欢使用手工配置,因为手工配置有很多优点:
①熟悉命令之后,手工配置更快速,并且不需要重新启动;
②能够使用配置命令的高级特性;
③更容易维护配置文件,找出系统故障;
④能更深刻地了解系统配置是如何进行的。
2.使用Linux命令
虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。
Linux是一个由命令行组成的操作系统,其精髓在于命令行,无论图形界面发展到什么水平这个原理是不会变的。
Linux网络设备操作命令包括ifconfig,ip,ping,netstat,route,ip,arp,hostname和arpwatch。
3.Webmin
Webmin在Networking下的NetworkConfiguration中提供了一组网络配置工具。
你可以配置单独的接口,并调整它们的当前设置或已保存的设置。
还可以配置路由和网关、DNS客户端设置,以及本地主机地址。
编辑好所有的配置之后,可以单击“ApplyConfiguration”来应用它们,不必重新启动系统。
4.不同发行版本中的工具
每个发行版本都有它自己用于配置网络设置的工具。
应该参考特定发行版本的文档来确定要使用的工具。
每种工具都提供了与Webmin工具基本相同的配置选项。
其中有些版本可能提供特定于该发行版本的选项。
RedHatLinux使用system-config-network工具,如图6-1所示。
图6-1网络配置界面
6.5.3配置网络接口
1.网卡的选择
一般来说,2.4版本以后的Linux可以支持的网卡芯片组数量已经很完备了,包括著名厂商,如Intel,以及使用广泛的RealTek、Via等网卡芯片都已经被支持,所以使用者可以很轻松地设定好他们的网卡。
但是由于Linux发行版本众多(目前超过188个),使用前最好先查看Linux发行版本的文档。
以RHEL5.0为例,这个设备列表在Ethernet-HOWTO文档中。
另外最直接的方法是查看目录/lib/modules/release/kernel/drivers/net,其中release是内核版本,可以使用命令“uname-r”获得,对于RHEL5.0内核版本是2.6.18-5EL。
[root@localhost]#ls/lib/modules/2.6.18-8.el5xen/kernel/drivers/net/
3c59x.kodummy.konetconsole.kor8169.kotg3.ko
8139cp.koe1000ns83820.kos2io.kotlan.ko
8139too.koe100.kopcmciasis190.kotokenring
8390.koepic100.kopcnet32.kosis900.kotulip
acenic.kofealnx.kophyskge.kotun.ko
amd8111e.koforcedeth.koppp_async.kosky2.kotyphoon.ko
b44.koifb.koppp_deflate.koslhc.kovia-rhine.ko
bnx2.koixgbppp_generic.koslip.kovia-velocity.ko
bondingmii.koppp_mppe.kostarfire.kowireless
cassini.komyri10gepppoe.kosungem.ko
chelsionatsemi.kopppox.kosungem_phy.ko
dl2k.kone2k-pci.koppp_synctty.kosunhme.ko
可以看到这个目录列出所有Linux内核支持的网络设备驱动程序。
其中大部分是以太网卡(8139、3COM、Intel),也有一些是其他类型的设备。
对于初学者应当尽量选择目录中已经列出的网卡。
以.o后缀结束的文件就是驱动程序,而没有后缀的是驱动程序目录。
2.检查网卡是否加载
驱动硬件是操作系统最基本的功能,操作系统通过各种驱动程序来驾驭硬件设备,和Windows系统不同,Linux内核目前采用可加载的模块化设计(LKMs,LoadableKernelModules),就是将最基本的核心代码编译在内核中,网卡驱动程序是作为内核模块动态加载的,可以使用命令“lsmod”查看加载情况:
##lsmod
Module Size Usedby
dm_mod 54741 0
button 6481 0
battery 8901 0
ac 4805 0
md5 4033 1
joydev 10241 0
uhci_hcd 31065 0
ehci_hcd 30917 0
snd_via82xx 26437 0
snd_ac97_codec 63889 1snd_via82xx
snd_pcm_oss 49017 0
soundcore 9889 1snd
tulip 45025 1
via_rhine 23113 2
mii 4673 1via_rhine
ext3 116809 2
jbd 71257 1ext3
对每行而言,第一列是模块名称;第二列是模块大小;第三列是调用数。
调用数后面的信息对每个模块而言都有所不同。
如果(unused)被列在某模块的那行中,说明该模块当前未被使用。
如果(autoclean)被列在某模块的那行中,说明该模块可以被rmmod-a命令自动清除,当这个命令被执行后,所有自从上次被自动清除后,未被使用的且标记了“autoclean”的模块都会被卸载。
从以上粗体字符可以看到Linux计算机中两块网卡模块tulip和via_rhine已经加载。
对应的网卡商业型号分别是:
tulip Lite-OnCommunicationsIncLNE100TX[LinksysEtherFast10/100]。
via_rhine ViaVT6102[Rhine-II]常见主板集成网卡。
如果没有检测到硬件,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 linux网络基础 第六 linux 网络 基础