TCP/IP协议
网络配置文件
服务的启动
教学目标:
了解Linux支持的网络服务
熟悉Linux中服务的启动方式
掌握Linux的以太网设置、网络操作命令、服务的启动方法
教学重点:
以太网的设置
网络常用命令
服务的启动方法
教学难点:
超级服务器
一. TCP/IP协议
1. TCP/IP参考模式
(1) 网络接口层
实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层Internet层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。
(2) Internet层
Internet层是整个TCP/IP协议组的核心。它的主要功能是负责网络间的寻址和数据传输,该层定义的主要协议如表8-1所示。
表1-1 Internet层协议
协议 说明
IP 提供主机之间的分组传输和路由选择服务
ICMP 控制主机与网关之间差错及控制报文的传输
ARP ARP把基于TCP/IP软件使用的IP 地址解析成局域网硬件使用MAC地址
RARP 主要应用于无盘节点,把无盘节点的IP地址解析成MAC地址
(3). 传输层
在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。
TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。
UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。
(4) 应用层
TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议,其中常用的协议如表8-2所示。
表1-2 应用层协议
协议 说明
FTP 用于实现主机之间的文件传输功能
HTTP 用于实现互联网中的WWW服务
SMTP 用于实现互联网中的电子邮件传送功能
DNS 用于实现主机名与IP地址之间的转换
SMB 用于实现Windows主机与Linux主机间的文件共享
TELNET 用于实现远程登录功能
DHCP 用于实现动态分配IP配置信息
2. TCP/IP子协议介绍
(1) internet层协议介绍
IP协议
说明:主要负责在主机之间寻址和选择数据包的路由,数据报的分组和封装。IP协议不含错误恢复的编码,属于不可靠的协议.它是网络的最主要的协议
IP包格式:
路由表操作:
#route(显示当前系统的路由表信息)
#route add -net 192.168.0.0/24 dev eth0 (添加网络路由)
#route add -host 192.168.3.2 dev eth1(添加主机路由)
#route add -host 192.168.1.3 gw 192.168.1.1
#route add default gw 192.168.0.1(添加默认网关)
#route del -host 192.168.3.2. dev eth1(删除路由)
#route del -net 192.168.0.0/24 dev eth0
#route del default gw 192.168.0.1
ICMP协议
说明:通过ICMP协议,主机和路由器可以报告错误并交换相关的状态信息。在下列情况中,通常自动发送ICMP消息
• IP数据报无法访问目标。
• IP路由器(网关)无法按当前的传输速率转发数据报。
• IP路由器将发送主机重定向为使用更好的到达目标的路。
ICMP包格式:
ICMP包类型:
ARP协议
说明:ARP把基于TCP/IP软件使用的IP 地址解析成局域网硬件使 用MAC地址
ARP工作过程
ARP表的操作:
#arp (显示arp地址表)
# arp -s 192.168.3.1 00:60:08:27:ce:b2(向arp地址表中添加记录)
#arp -d 192.168.3.1(删除arp地址表的记录)
#arp -f (从/etc/ethers文件中读取添加的记录)
(2) 传输层协议
TCP协议
说明:提供可靠的、面向连接的数据报传递服务. 确保正确排序以及按顺序传递分段的数据。通过计算校验和,进行传输数据的完整性检查。根据数据是否接收成功发送消息。通过有选择的确认,也对没有收到的数据发送确认。
TCP数据报格式:
来源端口(2字节) 目的端口(2字节)
序号(4字节) 确认序号(4字节)
头长度(4位) 保留(6位)
URG ACK PSH RST SYN PIN
窗口大小(2字节) 校验和(16位)
紧急指针(16位) 选项(可选)
数据
工作过程:
通过“三次握手”建立连接
发送数据
断开连接
UDP协议:
说明:UDP提供的是非连接的数据报服务,意味着UDP无法保证任何数据报的传递和验证。
UDP包格式:
源端口(2字节) 目的端口(2字节)
封报长度(2字节) 校验和(2字节)
数据
3.IP地址和子网掩码
(1)IP的定义
• IP地址是一个网络编码,它既可以是一个 主机(服务器、客户机)的地址,也可以是路由器一个端口的地址,即IP地址确定的是网络中的一个连接。
• 所有的IP地址都由国际组织NIC(Network Information Center)负责统一分配,目前全世界共有三个这样的网络信息中心
- INTERNIC:负责美国及其它地区
- RIPE-NIC: 负责欧洲地区
- APNIC: 负责亚太地区,总部设在日本东京大学
(2)IP地址的表示
• 点分二进制/十进制表示
(3)公有地址和私有地址
• 公有IP地址是唯一的, 由IANA统一管理和分配
• 私有IP地址不能直接与Internet连接的地址,解决公有地址短缺的问题
(4)子网掩码
• 子网掩码的功能
- 区分IP地址的网络ID和主机ID
- 区分是本地主机还是远程主机
• 缺省掩码
- A类地址
255.0.0.0
- B类地址
255.255.0.0
- C类地址
255.255.255.0
• 子网划分
- 网络位向主机位“借”位
- 划分子网的个数:2n-2 ,n是网络位向主机位所借的位 数
- 每个子网的主机数:2m-2 ,m是借位后所剩的主机位数
(4)服务和端口
TCP/UDP的端口范围为0--65535,其中0--255称为“知名端口”,该类端口保留给常用服务程序使用。256--1024是用于UNIX/Linux专用服务;1024以上的端口为动态端口,动态端口不是预先分配的,必要时才将它们分配进程。
服务名称 默认端口
www 80(TCP)
ftp-control 21(TCP)
ftp-data 20(TCP)
smtp 25(TCP)
telnet 23(TCP)
dns 53(UDP)
pop3 110(110)
二. 网络配置文件
1. /etc/sysconfig/network 文件
功能:设置主机最基本的网络信息,包括主机名、默认网关等信息
内容:
① NETWORKING= yes/no 设定启动系统时是否启用网络服务。
② HOSTNAME= www.sina.cm 设定主机名(不是NETBIOS名)。
③ GATEWAY= 192.168.0.1 设定默认网关。
④ GATEWAYDEV= eth0 设定网关接口。
⑤ FORWARD_IPV4= yes/no 设定LINUX是否支持IP转发。
2. /etc/sysconfig/network-scripts/ifcfg-ethX(X取值0,1,2,…….n)
功能:用于配置以太网接口卡的初始信息,。
内容:
① ONBOOT= yes 在设定启动时,是否激活网卡。
② DEVICE= eth0 设定物理设备名称。
③ BOOTPROTO= none|static|dhcp|bootp 设定网卡启动协议。
④ NETMASK= 255.255.255.0 设定子网掩码。
⑤ BROADCAST= 192.168.3.255 设定广播码。
⑥ NETWORK= 192.168.3.0 设定网络号。
⑦ IPADDR= 192.168.3.2 设定主机IP。
注意:一个以太网卡如何绑定多个IP地址?
实例:设定主机中存在的eth0设备,它的ip地址是:192.168.3.1/24,要求给eth0再绑定ip:192.168.5.1
① # cp /etc/sysconfig/network-scripts/ifcfg-eth0 至
/etc/sysconfig/network-scrppts/ifcfg-eth0:0(x的取值从0开始)
② # vi /etc/sysconfigt/network-scrpts/ifcfg-eth0:0
修改后:
DEVICE= eth0:0
ONBOOT= YES
BOOTPROTO=NONE
IPADDR=192.168.5.1
NETMASK=255.255.255.0
NETWORK=192.168.5.0
BROADCAST=192.168.5.255
3. /etc/resolv.conf
功能:域名服务客户端的配置文件,用于指定域名服务器的位置
内容:
domainname linux.cn 设定主机域名。
search linux.cn 设定搜索列表。
nameserver 192.168.0.254 设定DNS服务器的IP(最多三个)。
4. /etc/host.conf
功能:配置DNS解析顺序及解析相关参数
文件选项:order bind,hosts/hosts,bind 配置解析顺序
multi on/off 设置hosts文件中是否允许一主机名对应多个IP地址
nospoolf on/off 是否防止主机欺骗
5. /etc/hosts
功能:配置主机名和IP的对应关系,可利用该文件进行名称解析
文件格式:
IP地址 主机名 主机别名
192.168.0.1 www.abc.com www
6. /etc/hosts.deny和hosts.allow
功能:控制访问tcp服务的客户机地址,hosts.allow设置允许访问的客户机地址,hosts.deny设置禁止访问的客户机地址。如果两个文件的配置文件有冲突,以hosts.deny为准.
格式:server_name:hosts-list
实例:smbd:192.168.2.0/255.255.255.0
7. /etc/services
功能:配置服务端口开放情况,不需要端口可以通过记录行关闭端口
三. 服务的启动
1. 守护进程的定义
linux系统上提供服务的程序是由运行在后台的守护程序来执行的,这些后台守护程序监听特定端口上的客户机的请求,并且为客户机提供相应的服务,我们称这个后台的守护程序称为“守护进程”,又称“服务”。
2. 服务的运行方式
⑴ 独立运行方式:独立运行的服务由init脚本负责管理,并且每项服务只监听该服务指定的端口,服务的启动脚本存放在/etc/rc.d/init.d。
⑵ 超级服务运行方式:超级服务由xinetd管理,xinetd同时创建多个socket和监听多个端口,由xinetd管理的服务的配置文件存放在/etc/xinetd.d目录中。
3. 服务的启动、关闭与重启
⑴ 独立服务的启动、关闭与重启
手工方式:
①# /etc/rc.d/init.d/脚本名
实例:
#/etc/rc.d/init.d/network restart
②# service 服务名
实例:
#service httpd start
自动方式:
①# ntsysv [- -level 级别]
实例:
# ntsysv(设置当前运行级别要运行的服务)
# ntsysv --level 5(设置启动5号运行级别要运行的服务)
②# chkconfig [- -list | - -level 级别] [服务名
实例:
#chkconfig --list(显示各项服务在每个运行级别中的状态)
#chkconfig --level 3 dhcpd on
⑵ 超级服务器的启动、关闭与重启
手工方式:
①# /etc/rc.d/init.d/xinetd
②# service xinetd
自动方式:
①# ntsysv [--level] 级别
②# chkconfig [--list|--level] 级别 服务名
4. xinetd
⑴ xinetd的功能
支持对rpc 、tcp、udp服务的启动、关闭、重启
实现基于时间段的访问控制
tcp_wrapper的主机访问控制
能将服务绑定到指定的端口上
能限定日志大小
能限制客户机的并发连接数
⑵ xinetd的安装
# rpm -ivh xinetd-2.3.10-6.i386.rpm
相关文件:
/etc/xinetd.d目录:存放xinetd被管对象的配置文件
/etc/rc.d/init.d/xinetd:xinetd的启动脚本
/etc/xinetd.conf:xinetd配置文件
(3)xinetd的配置
xinetd.conf的设置
功能:指定由xinetd管理的服务的默认选项
文件内容:
defaults {
instances=60 指定服务所接受客户机并发连接的最大值
log_type=syslog authriv 指定日志记录方式
log_on_sucess=HOST PID 指定客户机连接成功时登记的信息
log_on_failure=HOST RECORD 指定客户机连接失败时登记的信息
}
includedir /etc/xinetd.d 指定由xinetd管理的服务配置文件存放位置
设置由xinetd管理的服务的配置文件
文件格式:
service 服务名 {
选项 操作符 值
选项 操作符 值
…………
…………
…………
}
说明:
操作符
= 表示给选项分配一个或者多个值
+= 表示给选项在原有基础上添加一个或多个值
-= 表示给选项在原有基础上减小一个或多个值
选项
socket_type=stream(tcp)|dgram(udp)|seqpacket(可靠的有序数据报)
定义TCP/IP SOCKET类型
log_type=SYSLOG 文件名/文件名
设置日志类型,SYSLOG表示用SYSLOG记录到指定日志文件中,也可以记录到指定文件中
server=路径
设定守护进程对应程序的位置
protocol=tcp/udp/..
设定服务的工作协议,可以参照/etc/protocols文件
port=端口号
设定服务的工作端口,可以参照/etc/services文件
wait=yes/no
服务在启动时,xinetd的其他服务是否等待
log_on_sucess=HOST|PID|USERID|EXIT|DURATION
设置登录成功时所记入日志中的信息
HOST表示客户机的ip地址
USERID表示客户机的登录用户的UID
PID表示进程的PID
EXIT表示登记进程终止状态
DURATION表示记录会话持续期
log_on_failure=HOST|USERID|RECORD
指定失败时登记的信息,RECORD客户机信息如本地用户,远程用户和终端类型
user=用户名
设置服务的管理员帐号
group=组名
设置服务管理员所属组
type=rpc/internal/unlisted
设定服务类型
rpc表示RPC服务
internal表示xinetd内置服务
unlisted表示/etc/services或/etc/rpc文件中没有列出的服务
access_times=hh:mm-hh:mm
设置访问时间
flags=REUSE|INTERCEPT|NORETRY|IDONLY
设置socket标记信息
REUSE设置socket可重用
INTERCEPT获取数据报进行访问检查
NORETRY表示fork失败,不重试
IDONLY 表示只有在远程端识别远程用户时才接受该连接
only_from=主机IP/网络号/主机名
设定允许访问的客户机,可以有以下几种表示方法:
0.0.0.0 表示匹配所有主机的IP地址
x.x.x.0 x.x.0.0 x.0.0.0 其中的0具有通配符的含义,如:192.168.3.表示从192.168.3.0到192.168.3.255的所有ip地址
x.x.x{a,b,……} 指定主机表
ip地址/netmask 定义要匹配的网络号
no_access=主机IP/网络号/主机名
禁止访问的主机
instances=数字
设定客户机并发连接的最大值
disable=YES/NO
设定是否禁用服务
bind=主机IP /接口名
绑定服务至指定接口,必须先指定protocol值和port
redirect=主机IP [端口号]
服务器的重定向, 必须先指定protocol值和port
per_source=数字
设置每个客户机最大并发连接数
banner=文件名
设置客户机连接时显示的欢迎信息文件
banner_success=文件名
设置客户机连接成功时显示存入指定文件中内容
banner_fail=文件名
设置客户机连接失败时显示存入指定文件中内
cps=数字 数字
限制客户连接速度,第一个数字代表每秒钟连接的句柄数,如果客户机超个这个数字,服务器就会临时中断此次连接,第二个数字代表客户机的连接被临时中断后,等待多长时间会自动恢复,默认这两个数字为50,10
实例:设置telnet的服务配置文件,使其达到以下要求:
启动系统时启动telnet服务
只接受192.168.0.3客户机在6:00-18:00时间内连接
绑定服务在192.168.0.2网络接口
# vi /etc/xinetd.d/telnet
Service telnet {
Disable=no
Flags=rescue
Socket_type=stream
Wait=no
User=root
Server=/usr/sbin/in.telnetd
Protocol=tcp
Port=23
Log_on_failure +=USERID
Only_from=192.168.0.3
Access_times=6:00-18:00
Bind=192.168.0.2
Per_source=5
Instances=5
}
zing840828 于 2011-01-01 04:48:16发表:
感谢楼主的分享!
小刺 于 2010-10-22 16:02:39发表:
谢谢楼主。先收藏了。目前还在学习基础的一些东西
绝影 于 2010-10-21 21:56:40发表:
顶,好东西,收藏了
710938287 于 2010-10-21 15:27:20发表:
初学者 很有用
kuaileshi 于 2010-10-20 11:25:42发表:
我要抢沙发
tuhaihe 于 2010-10-20 10:11:19发表:
很好,正缺