网络协议和管理

物理拓扑分类:

1
2
3
4
5
6
7
总线拓扑:所有设备均可接受信号
环状拓扑:信号绕环传输,单一故障点
双环拓扑:信号沿相反方向传输,比单环的复原能力更强
星型拓扑:通过中心点传输,单一故障点
扩展的星型拓扑:比星型拓扑的复原能力强***主流的拓扑结构
全网状拓扑:容错能力强,实施成本高。
部分网状拓扑:在容错能力与成本之间寻求平衡。

osi七层模型:降低复杂性、标准化接口、简化模块化设计、确保技术的互操作性、加快发展速度、简化教学

1
2
3
4
5
6
7
8
9
10
11
12
13
14
7、应用层application
网络进程访问应用程序;为应用程序进程(例如,电子邮件、文件传输和终端仿真)提供网络服务;提供用户身份验证。
6、表示层persention
数据表示;确保接收系统可以读出该数据;格式化数据;构建数据;协商用于应用层的数据传输语法;提供加密。
5、会话层session
主机间通信;建立、管理和终止在应用程序之间的会话。
4、传输层transport
传输问题;确保数据传输的可靠性,建立、维护和终止虚拟电路;通过错误检测和恢复;信息流控制来保障可靠性。
3、网络层network
数据传输;路由数据包,选择传递数据的最佳路径,支持逻辑寻址和路径选择。路由器工作在网络层。
2、数据链路层data link
访问介质;定义如何格式化数据以便进行传输以及如何控制对网络的访问,支持错误检查。交换机工作在数据链路层。
1、物理层physical
二进制传输;为启动、维护、以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范。hub集线器工作在物理层

osi七层模型中,下层为上层提供服务。

三种通讯模式:

1
2
3
单播unicast
多播multicast
广播btoadcast

lan的组成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
computers
PCs
Servers
Interconnections
NICs
Media
Network devices
Hubs
Switches
Routers
Protocols
Ethernet
IP
ARP
DHCP

双绞线针脚定义:
百兆以内:半双工,只发或只收
千兆:全双工,即发又收

单工:喇叭,广播,
半双工:对讲机,微信语音
全双工:打电话

光纤以及光电转换(把网线转换成光纤),光纤的传输距离能达到千米以上。
熔纤机,光纤的材质是玻璃纤维。

网络适配器(网卡):工作在数据链路层

以太网:工作在数据链路层,规定数据帧的报文结构,分成有线以太网和无线以太网(WiFi)

马斯洛理论:
自我实现
尊重
社会
安全
生理

hub集线器:
多端口中继器
hub并不记忆该信息包是由哪个MAC地址发出,哪个MAC地址在hub的哪个端口。
特点:
共享带宽
半双工
hub会产生flood泛洪现象

1
2
冲突域:一台主机发送报文,另一台主机也发送报文,产生冲突,则两台设备在同一个冲突域;不产生冲突,则两台设备不在同一个冲突域。
广播域:一个主机发送广播,另一个主机能收到,则两台主机在同一个广播域;否则不再同一个广播域。

为了解决冲突域和广播域的问题,采取如下方法:

1
2
3
4
5
6
7
8
9
10
以太网桥:
优势:
扩展了网络带宽
分割了网络冲突域,使网络冲突被限制在最小的范围内
交换机作为更加智能的交换设备,能够提供更多用户所要求的功能:优先级,虚拟网,远程检测......
以太网桥的工作原理:
以太网桥监听数据帧中源MAC地址,学习MAC,建立MAC表
对于未知MAC地址,网桥将转发到除接收该帧的端口之外的所有端口
当网桥接到一个数据帧时,如果该帧的目的位于接收端口所在网段上,它就过滤掉该数据帧;如果目的MAC地址位于另外一个端口,网桥就将该帧转发到该端口
当网桥接到广播帧时,它立即转发到除接收端口之外的所有其他端口。

路由器:
为了实现路由,路由器需要做以下事情:

1
2
3
4
分割广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
连接广域网

路由:把一个数据包从一个设备发送到不同网络里的里一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和
决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成。

VLAN:VLAN=广播域=逻辑网络(Subnet)
分割广播域
安全
灵活管理
单臂路由:

分层的网络架构:

1
2
3
4
5
6
核心层Core Layer:
企业级应用快速转发
分布层Distribution:
广播域,路由,安全,远程接入,访问层汇聚
访问层AccessLayer:
终端接入

以太网帧的最小长度为46个字节

TCP/IP协议:协议栈
全称:Transmission Control Protocol/Internet Protocol
传输控制协议/因特网互联协议
共定义了4层
4、应用层(包括osi模型的应用层,表示层,会话层)
协议:http、ftp、tftp、nfs、telnet、smtp、dns
3、传输层(相当于osi的传输层)
协议:tcp(面向连接,)、udp(不面向连接,)
功能:多路会话、分段(将大文件切割成小的段进行传输)、
2、Internet层(相当于osi模型的网络层)
1、网络访问层(相当于数据链路层和物理层的集合)
TCP协议的特性:

1
2
3
4
5
6
7
8
9
10
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复重传
流量控制控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法

TCP协议包头:
前20个字节(160位)固定;前32位0-31为源端口和目标端口,之后32位为序号,在之后32位为确认号,

相关服务的固定端口:

1
2
3
4
5
6
7
8
9
10
http:80
ssh:22
ftp:21
qq udp:8000
telnet:23
dns:53
tftp:69
snmp:161
https:443
mysql:3306

TCP/IP的三次握手:
有限状态机FSM:Finite State Machine
11种状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CLSED 没有任何连接状态
LISTEN 侦听状态,等待来自远方TCP端口的连接请求

SYN-SENT 在发送连接请求之后,等待对方确认
SYN-RECIVED 在收到和发送一个连接请求之后,等待对方确认

ESTABLISHED 代表传输连接建立,双方进入数据传送状态

FIN-WAIT1 主动关闭,主机已经发送关闭连接请求,等待对方确认
FIN-WAIT2 主动关闭,主机已经收到对方关闭传输连接确认

TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认

LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认

UDP特性:

1
2
3
4
5
6
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性

sync半连接和accept全连接队列
未完成连接队列大小,建议调整大小为1024以上
完成连接队列大小,建议调整大小为1024以上

ICMP协议详解:Internet层协议。
/proc/sys/net/ipv4/icmp_echo_ignore_all
该文件内容为0时,允许回应ICMP包,为1时不允许回应
利用ICMP进行攻击
ping -s 65507 Package_size -f ip 可以使目标主机的网卡利用率暴涨

ARP协议:Adress Resolution Protocol 地址解析协议
A知道B的IP不但是知道位置,A在寻找B时会发ARP广播,B收到广播后,会将A的IP和A的Mac地址存到本机ARP列表,
之后会向A发送返回包,包中包含自己的mac,A收到B发来的返回包后,会在机子的ARP列表中加入B的IP和Mac对应关系。

ARP寻址时如果夸路由器,则A和B必须配置网关,网关分别对应连接的路由器的端口,

IP报文
IP报头:20个字节(128位),
报文头部格式:Package
4位版本号;4位首部长度;8位分区服务;16位的总长度;16位的标识;
3位的标志;13位的片偏移;8位生存时间;8位协议;16位首部检验和;
32位源地址;32位目的地址;长度可变的可选字段;填充部分;

主机到主机的包传递过程:
路由-> ARP -> 三次握手 ->

ip地址:
标识每个主机所在的网段和在网络中的位置。
组成:
网络ID位:
标识网络
每个网段分配一个网络ID
主机ID:
标识单个主机
有组织分配给各设备
网关:下一个路由器距离本机近的那个端口。
路由表:只负责往外发,把包发送到哪个位置。不负责接收。

主机和远程主机通信的过程:

1
2
3
拿到对方主机的ip
判断本主机和对方主机是否在一个网段:对方ip和本机子网掩码与,再拿本机ip和子网掩码与,看结果是否相同。
查找路由表,找到去往远程主机的路径。

动态主机配置协议DHCP:

1
2
3
4
客户端发送发现报文广播;discover
DHCP服务器发送广播提供消息;offer
客户端对请求消息做出响应。request;告诉网络中主机本机占用的ip
DHCP服务器以确认消息结束交换过程。ACK确认报文;
DHCP采用UDP协议,服务器端口号为68;客户端端口号为67.

基本网络配置:

1
2
3
4
5
6
7
8
9
将linux主机接入到网络中,需要配置网络相关配置。
一般包括如下内容:
主机名
IP/netmask
路由:默认网关
DNS服务器: 将域名解析成IP地址;hosts文件也可本地解析
主DNS服务器
次DNS服务器
第三DNS服务器
默认本地hosts文件的解析优先级高于DNS,但是可以通过/etc/nsswitch.conf控制两者优先级。

###########################################################
centos6相关网络配置:

1
2
3
4
5
6
7
8
9
10
11
12
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
主机名存放的文件: 修改完主机名后,建议将新的主机名加入hosts文件做解析
/etc/sysconfig/network
查看网卡信息:
dmesg | grep -i eth
ethtool -i eth0
卸载网卡驱动:
modprobe -r e1000
rmmod e1000
装载网卡驱动:
modprobe e1000

centos7相关网络配置:

1
2
3
4
主机名存放文件:
/etc/hostname
修改主机名: 修改完主机名后,建议将新的主机名加入hosts文件做解析
hostnamectl set-hostname new-hostname

##########################################################

arping -I 网卡名 ip :通过该网卡发送ARP广播查找该网段中有几个主机的ip相同。

ip地址配置方式:
静态指定:
ifconfig route netstat
ip:object {link,addr,route} , ss , tc
system-config-network-tui,setup
配置文件
动态分配:
DHCP:Dynamic Host Configuration Protocol

网络配置相关命令:

1
2
3
4
5
6
7
8
9
10
11
12
ifconfig命令:
ifconfig [interface]
ifconfig -a 查看所有网卡信息
ifconfig IFACE [up|down] 启用|禁用网卡(从链路层down掉,拔网线从物理层down掉);等价于 ifup|ifdown DEVICE
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up] 使用ifconfig命令配置ip地址,临时配置ip地址,将网卡down掉或重启网络后丢失。
ifconfig IFACE IP netmask NETMASK
注意:ifconfig命令修改后立即生效
启用混杂模式:[-]promisc
配置网卡别名,实现一个网卡绑定多个ip:
ifconfig eth1:2 ip
如果不想要了,使用ifdown eth1:2 即可删掉该ip

route命令:路由管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
查看路由表:
route -n
添加路由:
route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] if]
网关必须和主机ip在同一网段才可行。
for example:
目标: 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/24 gw 172.16.0.1 dev eth0
添加默认路由,网关: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]
for example:
目标: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/24
配置动态路由:
通过安装守护进程获取动态路由:
安装quagga包
支持多种路由协议:RIP OSPF BGP
命令vtysh配置

网络连接管理及查看相关命令:
显示网络连接:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e] [--progam|-p]
-t:tcp相关协议
-u:udp相关协议
-w:raw socket相关
-l:处于坚挺状态
-a:所有状态
-n:以数字显示IP和端口
-e:扩展格式
-p:显示相关进程及PID
常用组合:
-tan, -uan, -tnl, -unl
显示路由表:
netstat -rn
-r:显示内核路由表
-n:以数字格式显示IP和端口
显示接口统计数据:
netstat {--interface|-i|-I} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
netstat -i
netstat -I=IFACE
ifconfig -s eth0

配置linux网络属性:ip命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
ip - show / manipulate routing,devices,policy routing and tunnels
ip [options] OBJECT {COMMAND|HELP}
OBJECT:={link|addr|route}
ip link - network device configration
set dev IFACE
可设置属性:
up and down:激活或禁用指定接口
ifup/ifdown
show [dev IFACE] : 指定接口
[up]:仅显示处于激活状态的接口
ip addr {add|del} IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global:全局可用
link:仅链接可用
host:本机可用
[broadcast ADDRESS]:指明广播地址
ip address show - look at protocal addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
ip address flush - 使用格式同show
例如:
ip addr add 172.16.100.100/16 dev ens33 label ens33:0
ip addr del 172.16.100.100/16 dev ens33 label ens33:0
ip addr flush dev ens33 label ens33:0
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 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1
添加网关: ip route add default via GW dev IFACE
例如:
ip route add default via 172.16.0.1
删除路由:ip route del TARGET
显示路由:ip route show|list
清空路由表:ip route flush [dev IFACE] [via PREFIX]
例如:
ip route flush dev eth0

ss命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
格式:ss [option]... [FILTER]
netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。
选项:
-t:tcp协议相关
-u:udp协议相关
-w:裸套接字相关
-x:unix sock相关
-l:listen状态的链接
-a:所有
-n:数字格式
-p:相关的程序及PID
-e:扩展的内存信息
-m:内存用量
-o:计时器信息
FILTER:[state TCP-STATE] [EXPRESSION]
TCP常见的状态有:
tcp finite state machine:
LISTEN:监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN-SENT
SYN-RECV
CLOSED
EXPRESSION:
dport=
sport=
示例:'(dport=:ssh or sport=:ssh)'
常见组合:
-tan -tanl -tanlp -uan
常见用法:
ss -l 显示本地打开的所有端口
ss -pl 显示内个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socket
ss -o state established '(dport=:ssh or sport=:ssh)' 显示所有已建立的ssh连接
ss -o state established '(dport=:http or sport=:http)' 显示所有已建立的http连接
ss -s 列出当前socket详细信息

网络配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
IP MASK GW DNS相关配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
说明参考:/usr/share/doc/initscripts-9.49.30/sysconfig.txt
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:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为dhcp,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中

网络配置文件模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
		动态配置: 
DEVICE=ethX
HWADDR=
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
静态配置:
DEVICE=ethX
HWADDR=
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=ip
NETMASK=netmask
GATEWAY=gw
```

路由相关配置文件:
/etc/sysconfig/network-scripts/route-IFACE


主机名和本地解析器:
配置当前的主机名:
hstname HOSTNAME
/etc/sysconfig/network
HOSTNAME=
解析器执行正向和逆向查询
/etc/hosts
本地主机名数据库和IP地址的映像
对小型独立网络有用
通常,在使用DNS前检查
getent hosts 查看/etc/hosts内容
DNS名字解析:
/etc/resolv.conf
namaserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
serch magedu.com
/etc/nsswitch.conf
与/etc/hosts相比优先于DNS
正向解析:FQDN-->IP
dig -t A FQDN
host -t A FQDN
反向解析:IP-->FQDN
dig -x IP
host -t FTR IP
网络配置文件:
/etc/sysconfig/network-scripts/route-IFACE
注意:需service network restart生效
两种配置风格:
1、TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
2、每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
网卡别名:
对虚拟主机有用
将多个IP地址绑定到一个NIC上
eth0:1 eth0:2 eth0:3
ifconfig命令:
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
ip命令:
ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.1/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
设备别名:
为每个设备别名生成独立的接口配置文件
关闭NetworkManager服务
ifcfg-ethX:xxx
必须使用静态联网
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes
注意:service network restart生效
参考:/usr/share/doc/initscripts-* /sysconfig.txt
网络接口配置-bonding
bonding
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的,
通过bonding,虚拟一块网卡对外提供链接,物理网卡被修改为相同的MAC地址。
1
2

bonding的工作模式:
Mode0(balance-rr)
    轮转(Round-robin)策略:从头到尾顺序的在每个slave接口上面发送数据包。
    本模式提供负载均衡和容错能力。
Mode1(active-backup)
    活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave。
    为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见。
Mode3(broadcast)
    广播策略:在所有的slave接口上传送所有的报文,提供容错能力
active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特
殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需
要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和
EtherChannel
1
2
3
4
5
6
7

bonding的配置:
/etc/sysconfig/network-scripts/ifcfg-bond0
```
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS="miimon=100 mode=0"

/etc/sysconfig/network-scripts/ifcfg-eth0

1
2
3
4
5
DEVICE=eth0 
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no

miimon 是用来进行链路检测的。如果miimon=100,name系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。

1
2
3
4
5
6
7
8
查看bond0状态:
/proc/net/bonding/bond0
删除bond0:
ifconfig bond0 down
rmmod bonding
详细帮助:
/usr/share/doc/kernel-doc- version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt

centos7网络属性配置:
centos6之前,网络接口使用连续号码命名: