一、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。html
不是很懂网络这块,下面是我理解:node
网桥:将两个网络链接起来centos
交换机:基于mac地址链接多个网络缓存
路由器:基于ip地址链接多个网络bash
而后万能的度娘,服务器
1 中继器网络
中继器因为工做在OSI模型的物理层(第一层),因此能够成为物理层设备或者一层设备。它其实仅仅是扩大了以太网的(物理上的距离)网络范围,它从一个端口收包后(作信号放大处理)发送到其它全部端口(通常只有两个端口)。它解决了两个问题:距离远时,信号有衰减,故它能够放大;屏蔽了各类以太网电缆线的差异。app
从效果看,使用中继器两个端口链接的两个网络,就是(同)一个扩大范围了的以太网。因此,冲突域和广播域跟传统以太网同样,仍是整网。ssh
2 集线器socket
集线器其实就是多端口的中继器,也是从一个端口收包后(作信号放大处理)发送到其它全部端口。
可见,中继器和集线器都是物理层设备,是看不到二层相关信息的,仅做伸展以太网的网络距离的做用而已。
3 网桥
网桥的背板是端口隔离的,就是说每一个端口都是独立通道,再也不像中继器/集线器那样是共享性质的背板了。终于可使用独立的端口作点智能功能了。
网桥使用二层mac表去维护mac和端口的对应关系,这能够经过初期的二层广播(未知单播走广播流程)报文学习到。这样,网桥能够知道每一个端口和其下全部节点的mac的对应关系。
4.二层交换机
二层交换机属数据链路层设备,能够识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在本身内部的一个地址表中。
5.三层交换机
三层交换机用于局域网(具备频繁通讯、各个子网都是同种物理介质类型的特色),主要对大量数据作快速交换处理。
6.路由器
路由器工做在网络层,负责两个局域网之间按帧传输数据,路由器经过比对路由表将每一帧传到指定的目的地,路由器的工做模式是全双工的。
然并卵,我仍是不知道讲的是什么。。
二、IP地址的分类有哪些?子网掩码的表示形式及其做用
A类:第一个字段为网络地址,其余三个字段为主机地址。
地址范围:0 000 0000 - 0 111 1111: 1-127 //第一字段第一位为0
默认子网掩码:255.0.0.0
B类:前两个字段为网络地址,后两个字段为主机地址。
地址范围:10 00 0000 - 10 11 1111:128-191 //第一字段前两位为10
默认子网掩码:255.255.0.0
C类:前三个字段为网络地址,最后一个地算为主机地址
110 0 0000 - 110 1 1111: 192-223 //第一字段前三位为110
默认子网掩码:255.255.255.0
D类:组播
1110 0000 - 1110 1111: 224-239 //以1110开头
E类:保留
240-255
三、计算机网络的分红模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
TCP/IP模型:
application layer:应用层
transport layer:传输层,标记进程
internet layer:网络层,标记网络地址,跨网络通讯,网络之间通讯经过路由器解决
datalink layer:链路层,标记本地主机的地址,解决本地网络的通讯。经过交换机解决本地网络通讯
pysical layer:物理层,物理设备,解决硬件的标准:接口,电压,电气信号等。可能要用到网卡
OSI参考模型分为7层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,也就是将tcp/ip模型中的应用层分红了OSI参考模型分为7层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
四、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
1.配置ip地址,修改/etc/sysconfig/network-scripts/ifcfg-IFACE文件
/etc/sysconfig/network-scripts/ifcfg-IFACE:
DEVICE:此配置文件应用到的设备;
HWADDR:对应的设备的MAC地址;
BOOTPROTO:激活此设备时使用的地址配置协议,经常使用的dhcp, static, none, bootp;
NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;
ONBOOT:在系统引导时是否激活此设备;
TYPE:接口类型;常见有的Ethernet, Bridge;
UUID:设备的唯一标识;
IPADDR:指明IP地址;
NETMASK:子网掩码;
GATEWAY: 默认网关; (此处优先级比/etc/resolv.conf高,直接配置到网卡中)
DNS1:第一个DNS服务器指向;
DNS2:第二个DNS服务器指向;
USERCTL:普通用户是否可控制此设备;
PEERDNS:若是BOOTPROTO的值为“dhcp”,是否容许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中;
eg1.
DEVICE="eth0"
BOOTPROTO="static"
IPADDR=192.168.111.2
NETMASK=255.255.255.0
GATEWAY=192.168.111.1
ONBOOT=yes
TYPE=Ethernet
2.配置路由信息,/etc/sysconfig/network-scripts/route-IFACE文件
两种风格:
(1) TARGET via GW
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
五、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
1.ifconfig
[root@localhost ~]# ifconfig eth0 192.168.108.137 netmask 255.255.255.0
2.ip
[root@localhost ~]# ip addr add dev eth0 192.168.108.137
3.文件配置 /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
HWADDR="00:0C:29:92:AB:FB"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="863486f2-fe14-4b4a-946a-c79bb2e586c9"
六、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的全部主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
[root@localhost week8]# cat six.sh
#!/bin/bash
for((i=1;i<=254;i++))
do
#ping:发包命令
#-c:次数 -w:测试时间
ping -c 1 -w 1 172.16.250.$i &> /dev/null
if [ $? -eq 0 ];then
#echo -e:设置颜色
#nm,m前指定颜色
#字体颜色:30 - 39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
echo -e "\033[32m 172.12.250.$i \033[0m"
else
echo -e "\033[31m 172.12.250.$i \033[0m"
fi
done
[root@localhost week8]# ./six.sh
172.12.250.1
172.12.250.2
172.12.250.3
172.12.250.4
172.12.250.5
172.12.250.6
七、详细描述每一个网络接口的配置文件中各个参数的含义和其所对应的值;
同题4.
八、如何给网络接口配置多个地址,有哪些方式?
1.ifconfig命令
[root@localhost week8]# ifconfig eth0:0 192.168.111.4/24
[root@localhost week8]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:6B:80:EA
inet addr:192.168.111.2 Bcast:192.168.111.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe6b:80ea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19271 errors:0 dropped:0 overruns:0 frame:0
TX packets:2479 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1786094 (1.7 MiB) TX bytes:261884 (255.7 KiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:6B:80:EA
inet addr:192.168.111.4 Bcast:192.168.111.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1010 (1010.0 b) TX bytes:1010 (1010.0 b)
2.ip命令
[root@localhost week8]# ip addr add 192.168.111.5 dev eth0:1
[root@localhost week8]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:6b:80:ea brd ff:ff:ff:ff:ff:ff
inet 192.168.111.2/24 brd 192.168.111.255 scope global eth0
inet 192.168.111.5/32 scope global eth0
inet 192.168.111.4/24 brd 192.168.111.255 scope global secondary eth0:0
inet6 fe80::20c:29ff:fe6b:80ea/64 scope link
valid_lft forever preferred_lft forever
3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether d2:8f:76:1f:86:0c brd ff:ff:ff:ff:ff:ff
3.配置文件
/etc/sysconfig/network-scripts/IFACE_ALIAS
九、经常使用的网络管理类工具备哪些,并用示例形式描述他们的使用方法。
1.ifconfig 显示本机的网络配置信息
选项:
-a:显示全部接口信息
Interface:显示指定接口信息
up:打开某接口,当前会话有效,永久生效修改/etc/sysconfig/network-scripts下的接口文件,root用户才有权限执行此命令
down:关闭某接口,一样只在当前会话有效
2.ip
1.ip link
set:设置
show:显示
2.ip addr
add :增长
del :删除
show:显示
flush:刷新
3.ip route
add :增长
del :删除
show:显示
flush:刷新
3.nmcli
nmcli dev
show:查看设备
nmcli con:ip地址等信息查看或设置
show
modify:修改
nmcli connection modify IFACE [+|-]setting.property value
常见的setting.property ipv4.addresses
ipv4.gateway
ipv4.dns1
ipv4.method
十、Linux系统软件包管理方法(安装、升级、卸载等操做)有哪些,以及如何管理的。
1.rpm
[select-options]
-a: 全部包
-f: 查看指定的文件由哪一个程序包安装生成
-p:针对还没有安装的程序包文件作查询操做;
[query-options]
-c: 查询程序的配置文件
-d: 查询程序的文档
-i: information
-l: 查看指定的程序包安装后生成的全部文件;
-R: 查询指定的程序包所依赖的CAPABILITY
eg.查询zip的详细信息
[root@localhost ~]# rpm -qi zip
Name : zip Relocations: (not relocatable)
Version : 3.0 Vendor: CentOS
Release : 1.el6 Build Date: Thu 11 Nov 2010 07:26:40 AM PST
Install Date: Wed 24 Aug 2016 12:05:02 PM PDT Build Host: c6b3.bsys.dev.centos.org
Group : Applications/Archiving Source RPM: zip-3.0-1.el6.src.rpm
Size : 823612 License: BSD
Signature : RSA/8, Sat 02 Jul 2011 10:07:05 PM PDT, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://www.info-zip.org/Zip.html
Summary : A file compression and packaging utility compatible with PKZIP
Description :
The zip program is a compression and file packaging utility. Zip is
analogous to a combination of the UNIX tar and compress commands and
is compatible with PKZIP (a compression and file packaging utility for
MS-DOS systems).
Install the zip package if you need to compress files using the zip
program.
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-v: verbose
-h: 以#显示程序包管理执行进度;
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
2.yum,dnf
显示仓库列表:
repolist [all|enabled|disabled]
显示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] [...]
# yum list {available|installed|updates} [glob_exp1] [...]
可用的|已安装的|可升级的
安装程序包:
install package1 [package2] [...]
reinstall package1 [package2] [...] (从新安装)
升级程序包:
update [package1] [package2] [...]
downgrade package1 [package2] [...] (降级)
检查可用升级:
check-update
卸载程序包:
remove | erase package1 [package2] [...]
查看程序包information:
info [...]
查看指定的特性(能够是某文件)是由哪一个程序包所提供:
provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
makecache
搜索:以指定的关键字搜索程序包名及summary信息
search string1 [string2] [...]
十一、如何使用发行版光盘做为yum repository,请描述该过程。
1.光盘挂载
默认会自动挂载,这里自动挂载到/media/CentOS_6.5_Final
[root@localhost media]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 18339256 9590452 7817220 56% /
tmpfs 506176 84 506092 1% /dev/shm
/dev/sda1 297485 34625 247500 13% /boot
/dev/md1 2084844 68656 1910284 4% /backup
/dev/sr0 4363088 4363088 0 100% /media/CentOS_6.5_Final
若是想修改挂载目录:
1.建立挂载目录
[root@localhost media]# mkdir cdrom
2.挂载
[root@localhost media]# mount -t iso9660 /dev/cdrom1 /media/cdrom
2.建立配置文件
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
#须要将CentOS-Base.repo移除,否则默认今后库安装
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@localhost yum.repos.d]# vi CentOS-Local.repo
[Centos]
name=Centos
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
#测试
[root@localhost yum.repos.d]# yum install lftp
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
Centos | 4.0 kB 00:00 ...
Centos/primary_db | 4.4 MB 00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package lftp.x86_64 0:4.0.9-1.el6 will be installed
--> Finished Dependency Resolution
...
十二、写一个脚本,完成如下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示全部以K开头的文件的文件名,而且给其附加一个stop字符串;
(3) 显示全部以S开头的文件的文件名,而且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
[root@localhost week8]# cat twelve.sh #!/bin/bash knum=0 snum=0 for i in $(ls /etc/rc.d/rc3.d/K*);do filename=$(basename $i) echo -n "$filename " let knum++ done echo "stop" for i in $(ls /etc/rc.d/rc3.d/S*);do filename=$(basename $i) echo -n "$filename " let snum++ done echo "start" echo "the num of start of k is $knum" echo "the num of start of s is $snum" [root@localhost week8]# ./twelve.sh K01smartd K05wdaemon K10psacct K10saslauthd K15htcacheclean K15httpd K30spice-vdagentd K50dnsmasq K50netconsole K50snmpd K50snmptrapd K73winbind K74ntpd K75ntpdate K75quota_nld K84wpa_supplicant K87restorecond K89rdisc K99rngd stop S01sysstat S02lvm2-monitor S03vmware-tools S08ip6tables S08iptables S10network S11auditd S11portreserve S12rsyslog S13cpuspeed S13irqbalance S15mdmonitor S20kdump S22messagebus S23NetworkManager S25blk-availability S25cups S25netfs S26acpid S26haldaemon S26udev-post S50bluetooth S55sshd S57vmware-tools-thinprint S80postfix S82abrt-ccpp S82abrtd S90crond S95atd S99firstboot S99local start the num of start of k is 19 the num of start of s is 31
1三、写一个脚本,完成如下功能
(1) 脚本能接受用户名做为参数;
(2) 计算此些用户的ID之和;
[root@localhost week8]# cat thirteen.sh #!/bin/bash sum=0 for i in $@;do username=$i grep "^$username" /etc/passwd &> /dev/null if [ $? -eq 0 ];then num=$(id $username | grep -o "uid=[0-9]*" | cut -d = -f 2) let sum+=num fi done echo "sum of userid is $sum" [root@localhost week8]# ./thirteen.sh yannic gapsv4 sum of userid is 1002
1四、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每一个目录的全部一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
[root@localhost week8]# cat fourteen.sh #/bin/bash #判断参数个数 if [ $# -eq 0 ];then echo "input some directories" fi filenum=0 dirnum=0 #isfile()用来显示文件类型,由于屡次调用封装成函数 function isfile() { if [ -f $1 ];then echo "$1 is a comm file" elif [ -b $1 ];then echo "$1 is a block file" elif [ -c $1 ];then echo "$1 is a character file" elif [ -h $1 ];then echo "$1 is a syblolik file" elif [ -p $1 ];then echo "$1 is a pipe file" elif [ -S $1 ];then echo "$1 is a socket file" fi } for i in $@;do if [ -d $i ];then echo "$i:" for j in $(ls $i);do if [ -d $i/$j ];then echo "$i/$j is a directory " let dirnum++ else let filenum++ filename=$i/$j #调用函数 isfile $filename fi done else echo "it is not a directory" done echo "there are $filenum files,$dirnum directories" #执行结果 /etc/wgetrc is a comm file /etc/wpa_supplicant is a directory /etc/X11 is a directory /etc/xdg is a directory /etc/xinetd.d is a directory /etc/xml is a directory /etc/yum is a directory /etc/yum.conf is a comm file /etc/yum.repos.d is a directory there are 111 files,107 directories
1五、写一个脚本
经过命令行传递一个参数给脚本,参数为用户名 若是用户的id号大于等于500,则显示此用户为普通用户; [root@localhost week8]# cat fifteen.sh #!/bin/bash if [ $# -eq 0 ];then echo "please input a username" exit -1 fi id $1 &> /dev/null if [ $? -ne 0 ];then echo "no such user" exit -2 fi userid=$(id $1 | grep -o "uid=[0-9]\+" | cut -d= -f2) if [ $userid -ge 500 ];then echo "$1 is a common user" fi [root@localhost week8]# ./fifteen.sh yannic yannic is a common user [root@localhost week8]# ./fifteen.sh yannic2 no such user
1六、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
[root@localhost week8]# cat sixteen.sh #/bin/bash count=0 for i in $(seq 1 10);do username=user$i grep "^$username" /etc/passwd &> /dev/null if [ $? -ne 0 ];then useradd $username echo $username | passwd --stdin $username &>/dev/null let count++ fi done echo "create $count users" [root@localhost week8]# ./sixteen.sh create 10 users
1七、写一脚本,用ping命令测试172.16.250.20-172.16.250.100之内有哪些主机在线,将在线的显示出来;
[root@localhost week8]# cat seventeen.sh #!/bin/bash for((i=20;i<=100;i++)) do ping -c 1 -w 1 172.16.250.$i &> /dev/null if [ $? -eq 0 ];then echo 172.16.250.$i fi done
1八、打印九九乘法表;
#i表示行,j表示列 [root@localhost week8]# cat eighteen.sh #/bin/bash for((i=1;i<=9;i++));do for((j=1;j<=i;j++));do echo -n "$j*$i=$[$j*$i] " done echo done [root@localhost week8]# ./eighteen.sh 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81