1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
网桥(Bridge):是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条背板总线的。后来,网桥被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。 集线器:集线器的英文称为“Hub”。集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。集线器与网卡、网线等传输介质一样,属于局域网中的基础设备,采用CSMA/CD(即带冲突检测的载波监听多路访问技术)介质访问控制机制。集线器每个接口简单的收发比特,收到1就转发1,收到0就转发0,不进行碰撞检测。 二层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发展已经比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。 三层交换机:三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。三层交换技术就是二层交换技术+三层转发技术。传统交换技术是在OSI网络标准模型第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发,既可实现网络路由功能,又可根据不同网络状况做到最优网络性能。 路由器:OIS模型的第三层,又称网关设备gateway,用于连接多个逻辑上分开的网络。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。
2、IP地址的分类有哪些?子网掩码的表示形式及其作用
IP地址分类: A类: 第一段为网络号,后三段为主机号 网络号: 0 000 0000 - 0 111 1111:1-127 网络数量:126,127 每个网络中的主机数量:2^24-2 默认子网掩码:255.0.0.0,/8 用于与IP地址按位进行“与”运算,从而取出其网络地址; 1.3.2.1/255.0.0.0 = 1.0.0.0 1.3.2.1/255.255.0.0= 1.3.0.0 私网地址:10.0.0.0/255.0.0.0 B类: 前两段为网络号,后两段为主机号 网络号: 10 00 0000 - 10 11 1111:128-191 网络数:2^14 每个网络中的主机数量:2^16-2 默认子网掩码:255.255.0.0,/16 私网地址:172.16.0.0-172.31.0.0 C类: 前三段为网络号,最后一段为主机号 网络号: 110 0 0000 - 110 1 1111:192-223 网络数:2^21 每个网络中的主机数量:2^8-2 默认子网掩码:255.255.255.0, /24 D类:组播 1110 0000 - 1110 1111:224-239 E类:科研 240-255 子网掩码:又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分
3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
OSI模型: Application 应用层:提供应用程序之间通信; Presentation 表示层:处理数据格式、数据加密; Session 会话层:建立,维护,管理会话连接涉及操作系统和网络接口和各种数据; Transport 传输层:建立主机端到端连接。涉及物理设备:四层交换机 Network 网络层:寻址和路由选择。涉及物理设备:路由器 Data Link 数据链路层:提供介质访问,链路管理,将数据分帧并处理流控制。涉及物理设备:网卡,网桥,交换机 Physical 物理层:比特流传输,将数据转换为可通过物理介质传送的电子信号。涉及物理设备:双绞线、同轴电缆,集线器 TCP/IP模型: Application 应用层:各类协议 Host-to-Host 主机到主机层:TCP UDP ICMP RTP Internet 因特网层:IPv4 IPv6 Network Interface 网络接口层:LAN(Ethernet,Token Ring,FDDI) WAN(HDLC PPP Frame Relay) 物理层:Media type介质 Ethernet
4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
* 使用ip address list查看设备名称 * 使用ip addr add IFADDR dev IFACE进行ip地址设定 * 一般Linux最小安装默认不会安装IFCONFIG包,配置本地yum源,进行yum search ifconfig进行此包安装 * 安装完成后进行/etc/sysconfig/network-script/IFACE修改 BOOTPROTO=static ONBOOT=YES IPADDR NETMASK GATEWAY DNS1 * 设定完成后可以进行systemctl restart network.sercie 或者进行ifdown和ifup命令进行网卡单独关闭及启动
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
使用命令ifconfig或ip命令进行修改,立即生效,重启失效 修改网卡配置信息进行配置,重启生效 使用图像界面setup--网络配置 修改后重启服务
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
#!/bin/bash # for ((i=1;i<255;i++));do ping -w 1 -c 1 192.168.150.$i &>/dev/null if [ $? -eq 0 ];then echo -e "\e[1;32m 192.168.150.$i ok \e[0m" else echo -e "\e[1;31m 192.168.150.$i no response \e[0m" fi done 执行结果:
7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
ifcfg-IFACE配置文件参数: DEVICE:此配置文件对应的设备的名称; ONBOOT:在系统引导过程中,是否激活此接口; UUID:此设备的惟一标识; IPV6INIT:是否初始化IPv6; BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none; TYPE:接口类型,常见的有Ethernet, Bridge; DNS1:第一DNS服务器指向; DNS2:备用DNS服务器指向; DOMAIN:DNS搜索域; IPADDR: IP地址; NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码; GATEWAY:默认网关; USERCTL:是否允许普通用户控制此设备; PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许; HWADDR:设备的MAC地址; NM_CONTROLLED:是否使用NetworkManager服务来控制接口;
8、如何给网络接口配置多个地址,有哪些方式?
]# ip addr add IP/mask dev eth0:0 临时生效 给接口配置多个地址: ip addr之外,ifconfig或配置文件都可以; (1) ifconfig IFACE_LABEL IPADDR/NETMASK IFACE_LABEL: eth0:0, eth0:1, ... (2) 为别名添加配置文件; DEVICE=IFACE_LABEL BOOTPROTO:网上别名不支持动态获取地址; static, none
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
ifconfig命令 ifconfig [interface] # ifconfig -a # ifconfig INTERFACE [up|down] ifconfig interface [aftype] options | address ... # ifconfig INTERFACE IP/mask [up] # ifconfig INTERFACE IP netmask MASK route命令 路由管理命令 查看:route -n 添加:route add route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 目标:192.168.1.3 网关:172.16.0.1 ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 目标:192.168.0.0 网关:172.16.0.1 ~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0 ~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0 默认路由,网关:172.16.0.1 ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1 ~]# route add default gw 172.16.0.1 删除:route del route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 目标:192.168.1.3 网关:172.16.0.1 ~]# route del -host 192.168.1.3 目标:192.168.0.0 网关:172.16.0.1 ~]# route del -net 192.168.0.0 netmask 255.255.255.0 netstat命令: netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships 显示网络连接: netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p] -t: tcp协议相关 -u: udp协议相关 -w: raw socket相关 -l: 处于监听状态 -a: 所有状态 -n: 以数字显示IP和端口; -e:扩展格式 -p: 显示相关进程及PID 常用组合: -tan, -uan, -tnl, -unl 显示路由表: netstat {--route|-r} [--numeric|-n] -r: 显示内核路由表 -n: 数字格式 显示接口统计数据: netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] # netstat -i # netstat -I IFACE ip命令: ip - show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route } link OBJECT: ip link - network device configuration set dev IFACE 可设置属性: up and down:激活或禁用指定接口; show [dev IFACE]:指定接口 [up]:仅显示处于激活状态的接口 ip address - protocol address management ip addr { add | del } IFADDR dev STRING [label LABEL]:添加地址时指明网卡别名 [scope {global|link|host}]:指明作用域 global: 全局可用; link: 仅链接可用; host: 本机可用; [broadcast ADDRESS]:指明广播地址 例如: ip addr add 192.168.1.111/24 dev eth0 label eth0:0 ip address show - look at protocol addresses [dev DEVICE] [label PATTERN] [primary and secondary] ip address flush - flush protocol addresses 使用格式同show ip route - routing table management ip route add 添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP TARGET: 主机路由:IP 网络路由:NETWORK/MASK 添加网关:ip route add defalt via GW dev IFACE ip route delete 删除路由:ip route del TARGET ip route show ip route flush [dev IFACE] [via PREFIX] ss命令: 格式:ss [OPTION]... [FILTER] 选项: -t: tcp协议相关 -u: udp协议相关 -w: 裸套接字相关 -x:unix sock相关 -l: listen状态的连接 -a: 所有 -n: 数字格式 -p: 相关的程序及PID -e: 扩展的信息 -m:内存用量 -o:计时器信息 FILTER := [ state TCP-STATE ] [ EXPRESSION ]
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
CentOS系统上rpm命令管理程序包:
安装、升级、卸载、查询和校验、数据库维护
rpm命令:rpm [OPTIONS] [PACKAGE_FILE] 安装:-i, --install 升级:-U, --update, -F, --freshen 卸载:-e, --erase 查询:-q, --query 校验:-V, --verify 数据库维护:--builddb, --initdb 安装: rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm -ivh PACKAGE_FILE ... GENERAL OPTIONS: -v:verbose,详细信息 -vv:更详细的输出 [install-options]: -h:hash marks输出进度条;每个#表示2%的进度; --test:测试安装,检查并报告依赖关系及冲突消息等; --nodeps:忽略依赖关系;不建议; --replacepkgs:重新安装 注意:rpm可以自带脚本; 四类:--noscripts preinstall:安装过程开始之前运行的脚本,%pre , --nopre postinstall:安装过程完成之后运行的脚本,%post , --nopost preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun --nosignature:不检查包签名信息,不检查来源合法性; --nodigest:不检查包完整性信息; 升级: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U:升级或安装; -F:升级 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降级; --force:强制升级; 注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核; (2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供; 卸载: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ... --allmatches:卸载所有匹配指定名称的程序包的各版本; --nodeps:忽略依赖关系 --test:测试卸载,dry run模式 查询: rpm {-q|--query} [select-options] [query-options] [select-options] PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本; -a, --all:查询所有已经安装过的包; -f FILE:查询指定的文件由哪个程序包安装生成; -p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作; --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供; --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖; [query-options] --changelog:查询rpm包的changlog; -l, --list:程序安装生成的所有文件列表; -i, --info:程序包相关的信息,版本号、大小、所属的包组,等; -c, --configfiles:查询指定的程序包提供的配置文件; -d, --docfiles:查询指定的程序包提供的文档; --provides:列出指定的程序包提供的所有的CAPABILITY; -R, --requires:查询指定的程序包的依赖关系; --scripts:查看程序包自带的脚本片断; 用法: -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ... 校验: rpm {-V|--verify} [select-options] [verify-options] S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ 包来源合法性验正和完整性验正: 来源合法性验正: 完整性验正: 获取并导入信任的包制作者的密钥: 对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 验正: (1) 安装此组织签名的程序时,会自动执行验正; (2) 手动验正:rpm -K PACKAGE_FILE 数据库重建: rpm管理器数据库路径:/var/lib/rpm/ 查询操作:通过此处的数据库进行; 获取帮助: CentOS 6:man rpm CentOS 7:man rpmdb rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY] --initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作; --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建
11、如何使用发行版光盘作为yum repository,请描述该过程。
* 挂载光盘至某目录,例如/media/cdrom # mount -r -t iso9660 /dev/cdrom /media/cdrom * 创建配置文件 ~]# cat /etc/yum.repos.d/local.repo [CentOS7] name=CentOS 7 baseurl=file:///base/cdrom/cdrom enable=1 gpgcheck=0
12、写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
#!/bin/bash # s=0 k=0 for i in $(ls /etc/rc3.d/);do if [[ $i == S* ]];then echo $i start let s++ elif [[ $i == K* ]];then echo $i stop let k++ fi done echo "S* totle $s" echo "K* totle $k" 执行结果: ~]# bash sumks.sh K10saslauthd stop K15svnserve stop K50netconsole stop K87restorecond stop K89rdisc stop S02lvm2-monitor start S08ip6tables start S10network start S11auditd start S12rsyslog start S22messagebus start S25blk-availability start S25netfs start S26haldaemon start S26udev-post start S55sshd start S56xinetd start S80postfix start S90crond start S99libvirt-guests start S99local start S* totle 16 K* totle 5
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
#!/bin/bash # declare -i sum=0 declare -i id if [ $# -lt 1 ];then echo "At lease one arg!" exit 2 fi for i in $@;do if id $i &>/dev/nul;then id=$(id -u $i) let sum+=$id else echo "$i is not exist" fi done echo "idsum=$sum" 运行结果: ~]# bash useridsum.sh At lease one arg! ~]# bash useridsum.sh void test idsum=1004 ~]# bash useridsum.sh void test aa aa is not exist idsum=1004
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash # declare -i dir=0 declare -i file=0 if [ $# -lt 1 ];then echo "At Lease one arg!" exit 1 fi for i in $@;do if ls $i &>/dev/null;then for j in $(ls $i);do if [ -d $i/$j ];then let dir++ else [ -f $i/$j ] let file++ fi done else echo "$i is not exist" fi done echo "direcotor $dir,file $file" 执行结果: [root@promote ~]# bash file.sh /tmp /etc direcotor 86,file 87 [root@promote ~]# bash file.sh At Lease one arg! [root@promote ~]# bash file.sh /tmp direcotor 0,file 1 [root@promote ~]# bash file.sh /tmp /sss /sss is not exist direcotor 0,file 1
15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
#!/bin/bash # if [ $# -lt 1 ];then echo "At Least one arg!" exit 1 fi for i in $@;do if id $i &>/dev/null;then j=$(id -u $i) if [ $j -ge 500 ];then echo "$i is a normal user" else echo "$i is a system user" fi else echo "$i is not exist" fi done 执行结果: [root@promote ~]# bash usershow.sh At Least one arg! [root@promote ~]# bash usershow.sh void test void is a normal user test is a normal user [root@promote ~]# bash usershow.sh void test aaaa void is a normal user test is a normal user aaaa is not exist
16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
#!/bin/bash # declare -i sum=0 for i in {1..10};do if id user$i &>/dev/null;then echo "user user$i is exist" else useradd user$i | echo "user$i" | passwd --stdin user$i &>/dev/null let sum++ echo "user user$i add success!" fi done echo "totle add user:$sum" 执行结果: ~]# bash adduser.sh user user1 add success! user user2 add success! user user3 add success! user user4 add success! user user5 add success! user user6 add success! user user7 add success! user user8 add success! user user9 add success! user user10 add success! totle add user:10
17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
#!/bin/bash # for i in {1..10};do if ping -w 1 -c 1 192.168.150.$i &>/dev/null;then echo "the host 192.168.150.$i is online" else echo "the host 192.168.150.$i is offline" fi done 执行结果: ~]# bash pingtest.sh the host 192.168.150.1 is online the host 192.168.150.2 is online the host 192.168.150.3 is offline the host 192.168.150.4 is offline the host 192.168.150.5 is offline the host 192.168.150.6 is offline the host 192.168.150.7 is offline the host 192.168.150.8 is offline the host 192.168.150.9 is offline the host 192.168.150.10 is offline
18、打印九九乘法表;
#!/bin/bash # for i in {1..9};do for j in $(seq 1 $i);do echo -n -e "${i}X${j}=$[$j*$i]\t" done echo done 执行结果: 1X1=1 2X1=22X2=4 3X1=33X2=63X3=9 4X1=44X2=84X3=124X4=16 5X1=55X2=105X3=155X4=205X5=25 6X1=66X2=126X3=186X4=246X5=306X6=36 7X1=77X2=147X3=217X4=287X5=357X6=427X7=49 8X1=88X2=168X3=248X4=328X5=408X6=488X7=568X8=64 9X1=99X2=189X3=279X4=369X5=459X6=549X7=639X8=729X9=81
原创文章,作者:N23-苏州-void,如若转载,请注明出处:http://www.178linux.com/59299
评论列表(1条)
写的很好,排版也很棒,期待你的以后作业,这次完全可以作为优秀案例来展示