一、OSI七层模型
OSI参考模型将通信过程分为7层,从上往下分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
层次 | 作用 |
---|---|
物理层 | 在设备之间传输比特流,规定了电平、速度和电缆针脚 |
数据链路层 | 将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测 |
网络层 | 提供逻辑地址,位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择 |
传输层 | 提供面向连接或非面向连接的数据传递以及进行重传前的差错检测 |
会话层 | 负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成 |
表示层 | 提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别 |
应用层 | OSI参考模型中最靠近用户的一层,为应用程序提供网络服务 |
二、TCP/IP分层
实际现实使用的是TCP/IP分层模型,它注重的是协议。TCP/IP分层后,将各种协议对应到这些分层,就称为TCP/IP协议栈。
OSI七层模型、TCP/IP分层和TCP/IP协议栈的对应关系如下表:
OSI七层模型 | TCP/IP分层 | 常用协议 |
---|---|---|
应用层 | 应用层 | HTTP、DNS、FTP |
表示层 | ||
会话层 | ||
传输层 | 传输层 | TCP、UDP |
网络层 | 网络层 | IP、ICMP |
数据链路层 | 数据链路层 | PPP、L2TP、ARP/td> |
物理层 | 物理层 | 光纤、物理线路 |
三、TCP三次握手和四次挥手
TCP三次握手
- 第一次握手:建立连接。客户端发送连接请求报文,将SYN置位,序列号(Sequence Number)为X,此时客户端进入SYN_SEND状态,等待服务器的确认;
- 第二次握手:服务器收到SYN报文后,需要对这个SNY报文进行确认,设置Acknowledgment Number为X+1(Sequence Number+1);同时服务器发送SNY请求信息,将SYN置位为1,Sequence Number为Y,服务器将上述所有信息放到一个报文段一并发发送给客户端,此时服务器进行SYN_REVD状态;
- 第三次握手:客户端收到服务器的SYN+ACK报文,向服务器发送ACK报文,Acknowledgment Number为Y+1。此时,客户端和服务器都进入ESTABLISHED状态,完成TCP三次握手。
TCP四次挥手
- 第一次挥手:主机A(客户端和服务器端均可)向主机B发送FIN报文,同时设置Sequence Number 和 ACKnowledgment Number,此时主机A进入FIN_WAIT_1状态,这表示主机A没有数据要发送给主机B;
- 第二挥手:主机B收到主机A发送的FIN报文,向主机A回一个ACK报文,Acknowledgment Number 为 Sequence Number +1 ,主机A进入FIN_WAIT_2状态,主机B同意主机A的关闭请求;
- 第三次挥手:主机B向主机A发送FIN报文,请求关闭连接,同时主机B进入LAST_ACK状态;
- 第四次挥手:主机A收到主机B发送的FIN报文,向主机B发送ACK报文,然后主机A进入TIME_WAIT状态;主机B收到主机A的ACK报文,就关闭连接,主机A等待2MSL后依然没有收到回复,则证明服务器端已正常关闭,那主机A也可以关闭连接。
四、TCP和UDP区别
TCP:
- 面向连接的,可靠传输(保证数据完整性);
- 对系统资源较UDP要多;
- 仅支持单播传输,需要事先建立连接。
UDP:
- 无连接的,不可靠性;
- 传输速度相对较TCP要快。可支持单播,广播,多播传输;
- 面向报文。
五、网卡绑定bond0的实现
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。支持多网卡绑定七种模式:
1、mod=0,即:(balance-rr) Round-robin policy(平衡抡循环策略)
特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1…一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力。
2、mod=1,即: (active-backup) Active-backup policy(主-备份策略)
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有N 个网络接⼝的情况下,资源利用率为1/N。
3、mod=2,即:(balance-xor) XOR policy(平衡策略)
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力。
4、mod=3,即:broadcast(广播策略)
特点:在每个slave接口上传输每个数据包,此模式提供了容错能力。
5、mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
必要条件:
条件1:ethtool持获取每个slave的速率和双工设定。
条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation。
条件3:多数switch(交换机)需要经过特定配置才能支持802.3ad模式。
6、mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
该模式的必要条件:ethtool支持获取每个slave的速率
7、mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance,rlb),而且不需要任何switch(交换机)的支持。
jiangde@ubuntu18:~$ cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
dhcp6: no
ens37:
dhcp4: no
dhcp6: no
bonds:
bond0:
interfaces:
- ens33
- ens37
addresses: [192.168.1.129/24]
gateway4: 192.168.1.1
nameservers:
addresses: [114.114.114.114, 8.8.8.8]
parameters:
mode: active-backup
mii-monitor-interval: 100
jiangde@ubuntu18:~$
jiangde@ubuntu18:~$ ping mail.139.com //关闭其中一个网卡,丢了一个包(序号30)。
PING mail.139.com(2409:8c54:813:11c::1:211) 56 data bytes
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=1 ttl=55 time=9.73 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=2 ttl=55 time=9.68 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=3 ttl=55 time=10.2 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=4 ttl=55 time=10.0 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=5 ttl=55 time=9.93 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=6 ttl=55 time=10.9 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=7 ttl=55 time=12.1 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=8 ttl=55 time=9.74 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=9 ttl=55 time=9.94 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=10 ttl=55 time=9.62 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=11 ttl=55 time=10.8 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=12 ttl=55 time=10.6 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=13 ttl=55 time=10.2 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=14 ttl=55 time=10.8 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=15 ttl=55 time=10.0 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=16 ttl=55 time=10.5 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=17 ttl=55 time=10.8 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=18 ttl=55 time=11.0 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=19 ttl=55 time=10.9 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=20 ttl=55 time=10.5 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=21 ttl=55 time=10.9 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=22 ttl=55 time=10.1 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=23 ttl=55 time=10.4 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=24 ttl=55 time=9.57 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=25 ttl=55 time=10.5 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=26 ttl=55 time=9.88 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=27 ttl=55 time=9.59 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=28 ttl=55 time=10.2 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=29 ttl=55 time=10.3 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=31 ttl=55 time=9.69 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=32 ttl=55 time=9.76 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=33 ttl=55 time=10.0 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=34 ttl=55 time=10.6 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=35 ttl=55 time=10.6 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=36 ttl=55 time=11.2 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=37 ttl=55 time=10.3 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=38 ttl=55 time=10.6 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=39 ttl=55 time=10.5 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=40 ttl=55 time=10.0 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=41 ttl=55 time=10.2 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=42 ttl=55 time=10.6 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=43 ttl=55 time=10.5 ms
64 bytes from 2409:8c54:813:11c::1:211: icmp_seq=44 ttl=55 time=11.0 ms
^C
--- mail.139.com ping statistics ---
44 packets transmitted, 43 received, 2% packet loss, time 43108ms
rtt min/avg/max/mdev = 9.575/10.392/12.153/0.541 ms