第八周
1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
一个好的链接,主要的参考
http://www.cnblogs.com/imapla/archive/2013/03/12/2955931.html
简单的总结和自己的理解
桥接器(network bridge),又称网桥,一种网络设备,负责网络桥接(network bridging)之用。
桥接器将网络的多个网段在数据链路层(OSI模型第2层)连接起来(即桥接)。
以上是维基百科的, 实际上网桥不是一个具体设备而是一种设备用途,
交换机,路由器,pc等都可以做网桥只要它做到了桥接的功能。
集线器(hub):是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。
集线器是运作在OSI模型中的物理层。它可以视作多端口的中继器,若它侦测到碰撞,它会提交阻塞信号。
集线器属于纯硬件网络底层设备,基本上不具有类似于交换机的"智能记忆"能力和"学习"能力
它也不具备交换机所具有的MAC地址表,所以它发送数据时都是没有针对性的,而是采用广播方式发送。
与路由器不同的是,集线器主要用于分割局域网而不是万维网, 位于OSI第一层,属于纯硬件网络底层设备。
二层交换机: 与集线器简单的广播式发送数据,交换机有MAC地址表,可以定向发送数据包去指定MAC地址,当然第一次获得MAC地址
依然是使用集线器的广播式发送数据,并记录下回应并存入MAC地址表。位于OSI第二层,主要应用于底层子网络中,即接入层中
你可以理解为懂得找端口的集线器。
三层交换机:三层交换机有IP:MAC表,所以具有路由功能懂得快速寻求通讯路径,所以可以说高达OSI第三层,不会反复广播寻求路径所以速度较快。
三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。
在企业网中,一般会将三层交换机用在网络的核心层,用三层交换机上的千兆端口或百兆端口连接不同的子网或VLAN。
简单的说是懂得找路劲的交换机。
路由器:路由器(Router)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。
当数据从一个子网传输到另一个子网时,可通过路由器来完成。
路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。
经常作为内网和外网之间的网关。 位于OSI模型的第3层
可以理解为一个内网和外网之间的交换机,当然这个外网实际上更大范围的网络而言又是一个内网。
2、IP地址的分类有哪些?子网掩码的表示形式及其作用
IP地址中的前五位用于标识IP地址的类别,IP地址共分五类。
A类地址的特点是:以( 0 )开头,网络地址共( 7 )位,主机地址共( 24 )位;
B类地址的特点是:以( 10 )开头,网络地址共( 14 )位,主机地址共( 16 )位;
C类地址的特点是:以( 110 )开头,网络地址共( 21 )位,主机地址共( 8 )位;
D类地址的特点是:以( 1110 )开头,不标识网络,用于特殊用途;
E类地址的特点是:以( 11110 )开头,地址暂时保留,用于某些实验和将来使用。
子网掩码的表示形式:
1)通过与IP地址格式相同的点分十进制表示 如:255.255.255.0
2)在IP地址后加上"/"符号以及1-32的数字,其中1-32的数字表示子网掩码中网络标识位的长度 如192.168.100.0/24
子网掩码的作用:
1)是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
2)是用于将一个大的IP网络划分为若干小的子网络
特殊地址
127.0.0.0
127是一个保留地址,该地址是指电脑本身,主要作用是预留下作为测试使用,用于网络软件测试以及本地机进程间通信。
应用与此地址交互,一般系统不会真正访问网络
10.x.x.x、172.16.x.x~172.31.x.x、192.168.x.x
默认内网使用的私有网络地址
0.0.0.0
表示本机的时候,0.0.0.0代表本机所有可用地址;当外部地址用的时候,表示所有网络地址
255.255.255.255
受限制的广播地址,对本机来说,这个地址指本网段内(同一 个广播域)的所有主机。
3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
1)物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
2)数据链路层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
3)网络层:该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。eg IP
4)传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。eg TCP
5)会话层:向两个实体的表示层提供建立和使用连接的方法。
6)表示层:处理用户信息的表示问题,如编码、数据格式转换和加密解密等。
7)应用层:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系,并实现各种服务
TCP/IP4层模型
1)网络接口层:用于协作IP数据在已有网络介质上传输的协议。对应于OSI七层模型的物理层和数据链路层。
2)网际层:负责数据的包装、寻址和路由,还包含网间控制报文协议。对应于OSI七层模型的网络层。
3)传输层:提供两种端到端的通信服务,TCP协议和UDP协议。对应于OSI七层模型的传输层。
4)应用层:包括Finger、Whois、FTP、Gopher、HTTP、Telent、SMTP、IRC、NNTP等协议。对应于OSI七层模型的应用层,会话层和表示层。
对应的物理设备:
物理层:HUB集线器,网卡,网桥、中继器、调制解调器
链路层:2层交换机
网络层:3层交换机,路由器
此文引用 http://www.178linux.com/19679
确实也就是我想说的,也没有啥好补充的
只想说会话层和表示层,一般为终端操作系统所完成,应用层为应用实现已实现用户的需求。
4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
不知道手动指定指的是什么这里举两种
1, 编辑配置文件方法
cd /etc&&find -name ifcfg* #找到网卡驱动对应配置文件
举例我的配置文件为 /sysconfig/network-scripts/ifcfg-eno16777736
编辑此文件 修改 IPADDR NETMASK 即可
重启网卡
ifconfig eno16777736 down ifconfig eno16777736 up
2. ifconfig命令修改法
设置IP
ifconfig eno1677773 172.16.25.125
设置子网掩码
ifconfig eno1677773 netmask 255.255.255.224
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
法一 使用ifconfig命令:ifconfig eno1677773 IP/mask 如上题
法二 使用IP命令:ip addr add IP/mask dev eno16777736:1
法三 编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eno16777736
改 BOOTPROTO="static"
设置地址例如:
IPADDR=198.51.100.5
PREFIX="24"
重启网路
sudo systemctl restart network
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
#!/bin/bash for i in $(seq 1 254); do ping -c 1 -W 1 172.16.250.$i &> /dev/null if [ $? -eq 0 ]; then echo "\033[0;32m 172.16.250.$i is online" else echo "\033[0;31m 172.16.250.$i is offline" fi done
7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
对于网卡接口 /etc/sysconfig/ifcfg-{网卡} 的参数
DEVICE:此配置文件应用到的设备;
HWADDR:对应用的设备的MAC地址
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp,static,none,bootp
NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制,CentOS6建议为“no”
ONBOOT:在系统引导时是否激活此设备;
TYPE:接口类型;常见的有Ethernet,Bridge;
UUID:设备的唯一标识;
IPADDR:指明IP地址;
NETMASK:子网掩码;
GATEWAY:默认网关;
DNS1:第一个DNS服务器指向;
DNS2:第二个DNS服务器指向;
USERCTL:普通用户是否可控制此设备;
权威英文文档
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-networkscripts-interfaces.html
8、如何给网络接口配置多个地址,有哪些方式?
命令方式:
ifconfig eno16777736:1 192.168.213.132 ip addr add 192.168.213.137/24 dev eno16777736:2
文件方式
编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eno16777736
改 BOOTPROTO="static"
添加一个地址
IPADDR0=198.51.100.5
PREFIX0="24"
重启网路
sudo systemctl restart network
一个很好的文档
https://www.linode.com/docs/networking/linux-static-ip-configuration
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
ping 常用测试命令,发送icmp数据包到指定主机
-c 指定发送包的次数
-i 指定发送包的间隔(秒)
-s 指定发送包的大小(字节)
-w 指明超时时间
例子:
ping -c 3 -i 5 -s 640 #向百度每隔5秒发送大小为648字节(含8字节head数据)的数据包,共发送3次
ifconfig
最常用的命令, 可用来查看和管理网卡(network interface)信息。
用法为 ifconfig [web interface] [options]
eg:
ifconfig -a 显示所有网卡的IP地址
ifconfig eno16777736 显示指定的网卡IP地址,这里eth1
ifconfig eno16777736 down/up 关闭或启用指定的网卡,这里eth1
ifconfig eno16777736:1 ip_address/mask 配置子接口的IP地址
官方文档 http://linuxcommand.org/man_pages/ifconfig8.html
好的中文文档 http://linux.51yip.com/search/ifconfig
route
用于设置系统内核的路由表, 路由表指导系统到目标地址或者网段所需要寻找的网关
用法为 route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
例如添加网关
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
好的英文解释 https://www.lifewire.com/route-linux-command-4095161
好的中文解释 http://blog.csdn.net/chenlycly/article/details/52141854
ss [options] 用于查看系统套接字状态, 非常简单的命令,不多说了
例如显示所有tcp套接字
ss -t
https://linux.die.net/man/8/ss
ip 这个命令好强大,今天才知道是ifconfig,route, netstat的替代品,可以管理网卡以及管理路由,网络这块几乎全包
这个我就多写一点
用法为 ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]
利用 OBJECT 子类 ip可以实现多个不同种类的网络管理
例如
ip link组用于管理网卡设备
ip link set dev eno1677773 ip up 启动网卡
ip link set dev eno1677773 address 00:01:4f:00:15:f1 设置网卡MAC地址
ip -s link ls 列出网络设备
ip address 用于管理地址协议
ip addr add 192.168.4.2/24 brd + dev eno1677773 label eno1677773:1 为网卡添加ip地址
ip -s addr ls 显示地址信息
ip neighbour 查看接入你所在的局域网的设备的MAC地址(ARP协议所得)
ip route 路由管理组
sudo ip route add default via 192.168.0.196 更改默认路由
https://linux.die.net/man/8/ip 好的英文文档
http://www.cnblogs.com/bamboo-talking/archive/2013/01/10/2855306.html 好的中文文档
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态,多播成员等
一般用法 netstat [options]
例如 netstat -t 显示所有tcp连接的网络状态
netstat -s 对各个协议进行统计
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
rpm命令实现程序管理:
rpm -i 安装指定rpm程序包
rpm -e 卸载指定程序
rpm -test 测试安装
rpm -nodeps 忽略依赖关系
rpm -U 升级程序包
rpm –replacepkgs 重新安装
rpm –nosignature:不检查来源的合法性
rpm –upgrage 安装有旧程序包,则升级,如果不存在旧版程序包,则安装
rpm –freshen:安装有旧程序包时,则升级,如果不存,则不执行升级操作
rpm -q[l|f|i] 显示指定程序安装生成的文件\某文件是因为哪个包被安装\指定程序的说明信息
rpm -V 通过对包元数据的检验判断包的合法性
rpm –initdb,–rebuilddb 包数据库重建
可有选项 -v -vv 表示输出详细信息和超详细信息
yum 可以理解为一个通过对rpm包管理工具的延伸而更自动化的工具
(官方解释是yum是rpm的前端),帮助用户自动解决包依赖问题,
很多功能也更人性化
yum install 安装指定程序
yum remove 卸载指定程序
yum update 升级指定程序
yum groupinstall 安装组程序包
yum groupupdate 升级组程序
yum groupremove 卸载组程序
yum info 查看指定程序的信息
yum命令实现程序管理:
显示程序包:
yum list {all|available|installed|available} [glob_exp1] […]
显示仓库列表:
yum repolist [all|enabled|disabled]
安装程序包:
yum install package
升级程序包:
yum update [package]
查看是否有可用更新
yum check-update [package]
卸载程序包:
yum remove package1 [package2] […]
查看程序包信息
yum info package
查看程序提供特性(可以是某文件)是由哪个程序包所提供:
yum provides filename|feature
清理本地缓存:
yum clean [options]
构建缓存:
yum makecache
关键字搜索包:
yum search keyword
查看指定程序包所依赖的capabilities:
yum deplist package
包组管理的相关命令(见名知意):
yum groupinstall group
yum groupupdate group
yum grouplist
yum groupremove group
yum groupinfo group
11、如何使用发行版光盘作为yum repository,请描述该过程。
默认centOS光盘已被系统识别为/dev/sr0
只读挂载光盘 mount -n /dev/sr0 /mnt/centsCD
创建新的仓库配置文件
vim /etc/yum.repo.d/centsCD.repo
[localfile]
name=CDrepo
baseurl=file:///mnt/centsCD
enable=1
gpgcheck=0
12、写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
#!/bin/bash declare -i kstart=0; declare -i sstart=0; cd /etc/rc.d/rc3.d for x in $(ls K*); do echo ${x}stop; let kstart+=1; done; for x in $(ls S*); do echo ${x}stop; let sstart+=1; done; echo "${sstart} files start with S" echo "${kstart} files start with K"
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
#!/bin/bash declare -i id_sum=0 for x in $@; do let id_sum+=$(id -u $x) done echo "the id sum of input users are ${id_sum}"
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash declare -i files=0; declare -i directories=0; for d in $@; do cd $d; for x in $(ls); do echo "${x} in ${d} is $(file -b ${x})" if [ -d ${x} ]; then let directories+=1; else let files+=1; fi done; done; echo "directories total ${directories}"; echo "files total ${files}";
15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
#!/bin/bash declare user=$1; declare -i user_id=$(id -u $user); if [ $user_id -ge 500 ]; then echo "$user is a normal user"; fi
16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
#!/bin/bash declare -i useradded=0; for i in $(seq 1 10); do id user${i} 1> /dev/null 2> /dev/null if [ $? -ne 0 ]; then useradd -n user${i} -p user${i} > /dev/null 2>&1 let useradded+=1; echo "add user ${i}" else echo "skip user${i}"; fi done echo "added ${useradded} users";
17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
#!/bin/bash for i in $(seq 20 250); do ping -c 1 172.16.250.$i &> /dev/null if [ $? -eq 0 ]; then echo "172.16.250.$i is online" fi done
18、打印九九乘法表;
#!/bin/bash for i in $(seq 1 9); do for j in $(seq 1 $i); do printf " $j * $i = $[$i*$j] " done printf "\n" done
原创文章,作者:chengyu,如若转载,请注明出处:http://www.178linux.com/63999