osi七层模型和TCP/IP五层模型 TCP三次握手四次挥手 TCP和UDP区别 网卡绑定bond0的实现
Posted njsummer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了osi七层模型和TCP/IP五层模型 TCP三次握手四次挥手 TCP和UDP区别 网卡绑定bond0的实现相关的知识,希望对你有一定的参考价值。
1、简述OSI七层模型和TCP/IP五层模型
1.1 TCP/IP五层模型和osi七层模型的对比
1.2 从数据在OSI七层模型表示形式理解TCP/IP:
- 应用层:以APDU数据单元形成存在,HTTP、DNS、FTP、SMTP、NFS、SNMP等都属于此层
- 表示层:以SPDU数据单元形成存在,用来解码不同的格式为机器语言,以及其他功能。
- 会话层:以TPDU数据单元形成存在,会话层可以判断是否需要网络传输。
- 传输层:以段形式存在,识别端口来指定服务器,如指定80端口的www服务。
- 网络层:以报文形式存在,提供逻辑地址选路,即发送ip地址到接收的ip地址。
- 数据链路层:以帧形式存在,识别MAC地址来访问媒介,如交换机的功能。
- 物理层:以比特形式在物理介质中传输。
1.3 按照RFC官方TCP/IP分为四层,从数据接收端解读每层的作用:
- 应用层 Application Layer:应用层的程序负责接收到数据后进行解析使用;比如DNS、FTP、SMTP、NFS、SNMP等。
- 传输层 Transport Layer:传输层负责接收来自网络层的数据,然后根据端口号将数据传递给目标端口,监听该端口的程序即可收到该数据
- 网络层 Internet Layer:网络层负责接收来自链路层的数据,然后通过IP地址和MAC地址找到目标主机,然后将数据传递给对应的主机
-
链路层 Link Layer(media-access):链路层负责将封装完的数据帧在网络中(网线等各种传输介质)进行传递
- 应用层 Application Layer:应用层的程序负责接收到数据后进行解析使用
- 传输层 Transport Layer:传输层负责接收来自网络层的数据,然后根据端口号将数据传递给目标端口,监听该端口的程序即可收到该数据
- 网络层 Internet Layer:网络层负责接收来自链路层的数据,然后通过IP地址和MAC地址找到目标主机,然后将数据传递给对应的主机
- 链路层 Link Layer(media-access):链路层负责将封装完的数据帧在网络中(网线等各种传输介质)进行传递
参考资料:https://blog.csdn.net/mumubumaopao/article/details/107860818
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html
2、总结描述TCP三次握手和四次挥手
2.1 TCP三次握手
三次握手(建立连接):
- 第一次握手:客户端发送SYN 包 (SYN=j) 到服务器,并进入 SYN_SEND 状态,等待服务器确认;
- 第二次握手:服务器收到 SYN 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(SYN=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;
- 第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。
2.2 TCP四次挥手
四次挥手(关闭连接):
- 第一次: 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求 ;
- 第二次: 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1;
- 第三次: 由B 端再提出反方向的关闭请求,将FIN置1 ;
-
第四次: 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.。
- 第一次: 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求 ;
- 第二次: 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1;
- 第三次: 由B 端再提出反方向的关闭请求,将FIN置1 ;
- 第四次: 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.。
3、描述TCP和UDP区别
3.1 TCP特性
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
3.2 UDP特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
3.3 TCP和UDP对比
TCP | UDP | |
---|---|---|
是否连接 | 面向连接 | 无连接 |
是否可靠 | 可靠传输,可使用流量控制和拥塞控制 | 不可靠传输,不使用流量控制和拥塞控制 |
连接对象个数 | 一对一通信 | 支持一对一,一对多,多对一和多对多交互通信 |
传输方式 | 面向字节 | 面向报文 |
首部开销 | 首部最小20字节,最大60字节 | 首部开销小,仅8字节 |
适用场景 | 适用于要求传输可靠、数据准确的场景,例如文件传输 | 适用于实时性要求高的应用(IP电话、视频会议、直播等) |
4、网卡绑定bond0的实现
bond聚合链路模式共7种模式:0-6 Mode
- mod=0 ,即:(balance-rr) Round-robin policy(轮询)
- mod=1,即: (active-backup) Active-backup policy(主-备份策略)
- mod=2,即:(balance-xor) XOR policy(平衡策略)
- mod=3,即:broadcast(广播策略)
- mod=4,即:IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
- mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
- mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
总结:实际生产中常用的模式为 0,1,3,6。mode 1、5、6 不需要交换机设置,active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。;mode 0、2、3、4需要对端交换机的配合,在交换机上配置链接聚合功能。如:如果服务器的网卡工作在模式 0、2 和 3下的聚合,对端Cisco 交换机需要配置 EtherChannel,在模式4中还需要 LACP和 EtherChannel配合使用。
# 验证Linux版本支持bind功能
[root@centos8301 ~]# cat /boot/config-4.18.0-305.3.1.el8.x86_64 |grep -i bonding
CONFIG_BONDING=m
[root@centos8301 ~]#
# 查看现有的网卡信息
[root@centos8301 ~]# ifconfig
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.250.101 netmask 255.255.255.0 broadcast 192.168.250.255
inet6 fe80::4e77:57:8c52:15f1 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:d0:d9 txqueuelen 1000 (Ethernet)
RX packets 14579 bytes 907906 (886.6 KiB)
RX errors 0 dropped 17 overruns 0 frame 0
TX packets 437 bytes 71153 (69.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens224: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:18:d0:e3 txqueuelen 1000 (Ethernet)
RX packets 13969 bytes 838140 (818.4 KiB)
RX errors 0 dropped 9 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 查看网卡的配置文件
[root@centos8301 ~]# ls -lh /etc/sysconfig/network-scripts/
total 4.0K
-rw-r--r--. 1 root root 346 Nov 17 22:37 ifcfg-Profile_1
[root@centos8301 ~]#
在ESXI-6.7下给CentOS8虚拟服务器增加一块网卡,才可以继续完成双网卡绑定试验。
# 配置bond接口 xjzbond0 bond0
[root@centos8301 ~]# nmcli connection add type bond con-name xjzbond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.250.222/24
Connection xjzbond0 (ba660a4a-c945-4a60-930f-3f57c4333011) successfully added.
[root@centos8301 ~]#
# 验证配置情况
[root@centos8301 ~]# nmcli con
NAME UUID TYPE DEVICE
Profile 1 b5e0e3e5-7738-403f-9912-cf32e0f90a75 ethernet ens192
virbr0 7c9dfdc4-5efe-4bc5-9c91-f01a7b6de777 bridge virbr0
xjzbond0 ba660a4a-c945-4a60-930f-3f57c4333011 bond bond0
[root@centos8301 ~]#
# 查看网卡信息
[root@centos8301 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:18:d0:d9 brd ff:ff:ff:ff:ff:ff
inet 192.168.250.101/24 brd 192.168.250.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet6 fe80::4e77:57:8c52:15f1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:18:d0:e3 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:25:fa:2f brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:25:fa:2f brd ff:ff:ff:ff:ff:ff
7: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether ea:1d:4e:94:30:15 brd ff:ff:ff:ff:ff:ff
inet 192.168.250.222/24 brd 192.168.250.255 scope global noprefixroute bond0
valid_lft forever preferred_lft forever
[root@centos8301 ~]#
# 添加网卡的接口到聚合组中bond0
[root@centos8301 ~]#
[root@centos8301 ~]# nmcli con add type bond-slave ifname ens224 master bond0
Connection bond-slave-ens224 (25f3d7c1-7bd9-491e-9fb9-5f547eed0877) successfully added.
[root@centos8301 ~]# nmcli con add type bond-slave ifname ens192 master bond0
Connection bond-slave-ens192 (95ee0aae-621b-4771-8136-7ce567fa18cb) successfully added.
[root@centos8301 ~]#
[root@centos8301 ~]#
# 查看接口情况
[root@centos8301 ~]# nmcli connection
NAME UUID TYPE DEVICE
Profile 1 b5e0e3e5-7738-403f-9912-cf32e0f90a75 ethernet ens192
xjzbond0 ba660a4a-c945-4a60-930f-3f57c4333011 bond bond0
virbr0 7c9dfdc4-5efe-4bc5-9c91-f01a7b6de777 bridge virbr0
bond-slave-ens224 25f3d7c1-7bd9-491e-9fb9-5f547eed0877 ethernet ens224
bond-slave-ens192 95ee0aae-621b-4771-8136-7ce567fa18cb ethernet --
[root@centos8301 ~]#
# 启动聚合组内的从属接口
[root@centos8301 ~]# nmcli con up bond-slave-ens224
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
[root@centos8301 ~]# nmcli con up bond-slave-ens192
# 查看聚合组的情况,都已经添加成功
[root@centos8301 ~]#
[root@centos8301 ~]# nmcli connection
NAME UUID TYPE DEVICE
xjzbond0 ba660a4a-c945-4a60-930f-3f57c4333011 bond bond0
virbr0 7c9dfdc4-5efe-4bc5-9c91-f01a7b6de777 bridge virbr0
bond-slave-ens192 95ee0aae-621b-4771-8136-7ce567fa18cb ethernet ens192
bond-slave-ens224 25f3d7c1-7bd9-491e-9fb9-5f547eed0877 ethernet ens224
Profile 1 b5e0e3e5-7738-403f-9912-cf32e0f90a75 ethernet --
# 启动聚合接口组 xjzbond0
[root@centos8301 ~]#
[root@centos8301 ~]# nmcli con up xjzbond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
[root@centos8301 ~]#
# 验证聚合接口组的情况
[root@centos8301 ~]# nmcli connection
NAME UUID TYPE DEVICE
xjzbond0 ba660a4a-c945-4a60-930f-3f57c4333011 bond bond0
virbr0 7c9dfdc4-5efe-4bc5-9c91-f01a7b6de777 bridge virbr0
bond-slave-ens192 95ee0aae-621b-4771-8136-7ce567fa18cb ethernet ens192
bond-slave-ens224 25f3d7c1-7bd9-491e-9fb9-5f547eed0877 ethernet ens224
Profile 1 b5e0e3e5-7738-403f-9912-cf32e0f90a75 ethernet --
[root@centos8301 ~]#
[root@centos8301 ~]# ping 192.168.250.222
PING 192.168.250.222 (192.168.250.222) 56(84) bytes of data.
64 bytes from 192.168.250.222: icmp_seq=1 ttl=64 time=0.080 ms
64 bytes from 192.168.250.222: icmp_seq=2 ttl=64 time=0.039 ms
64 bytes from 192.168.250.222: icmp_seq=3 ttl=64 time=0.062 ms
64 bytes from 192.168.250.222: icmp_seq=4 ttl=64 time=0.037 ms
^C
--- 192.168.250.222 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3101ms
rtt min/avg/max/mdev = 0.037/0.054/0.080/0.019 ms
[root@centos8301 ~]#
# 查看网卡的配置文件都自动生成,后来确定删除也是自动删除了
[root@centos8301 ~]#
[root@centos8301 ~]# ls -lh /etc/sysconfig/network-scripts/
total 16K
-rw-r--r-- 1 root root 127 Dec 19 17:48 ifcfg-bond-slave-ens192
-rw-r--r-- 1 root root 127 Dec 19 17:47 ifcfg-bond-slave-ens224
-rw-r--r--. 1 root root 346 Nov 17 22:37 ifcfg-Profile_1
-rw-r--r-- 1 root root 363 Dec 19 17:46 ifcfg-xjzbond0
[root@centos8301 ~]# cat /etc/sysconfig/network-scripts/ifcfg-xjzbond0
BONDING_OPTS=mode=active-backup
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.250.222
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=xjzbond0
UUID=ba660a4a-c945-4a60-930f-3f57c4333011
DEVICE=bond0
ONBOOT=yes
[root@centos8301 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens192
TYPE=Ethernet
NAME=bond-slave-ens192
UUID=95ee0aae-621b-4771-8136-7ce567fa18cb
DEVICE=ens192
ONBOOT=yes
MASTER=bond0
SLAVE=yes
[root@centos8301 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens224
TYPE=Ethernet
NAME=bond-slave-ens224
UUID=25f3d7c1-7bd9-491e-9fb9-5f547eed0877
DEVICE=ens224
ONBOOT=yes
MASTER=bond0
SLAVE=yes
[root@centos8301 ~]#
以上是关于osi七层模型和TCP/IP五层模型 TCP三次握手四次挥手 TCP和UDP区别 网卡绑定bond0的实现的主要内容,如果未能解决你的问题,请参考以下文章