归志宁无五亩园,读书本意在元元。这篇文章主要讲述osi七层模型和TCP/IP五层模型TCP三次握手四次挥手TCP和UDP区别 网卡绑定bond0的实现相关的知识,希望能为你提供帮助。
1、简述OSI七层模型和TCP/IP五层模型
1.1 TCP/IP五层模型和osi七层模型的对比
【osi七层模型和TCP/IP五层模型TCP三次握手四次挥手TCP和UDP区别 网卡绑定bond0的实现】
文章图片
1.2 从数据在OSI七层模型表示形式理解TCP/IP:
- 应用层:以APDU数据单元形成存在,HTTP、DNS、FTP、SMTP、NFS、SNMP等都属于此层
- 表示层:以SPDU数据单元形成存在,用来解码不同的格式为机器语言,以及其他功能。
- 会话层:以TPDU数据单元形成存在,会话层可以判断是否需要网络传输。
- 传输层:以段形式存在,识别端口来指定服务器,如指定80端口的www服务。
- 网络层:以报文形式存在,提供逻辑地址选路,即发送ip地址到接收的ip地址。
- 数据链路层:以帧形式存在,识别MAC地址来访问媒介,如交换机的功能。
- 物理层:以比特形式在物理介质中传输。
- 应用层 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://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 状态,完成三次握手。
文章图片
四次挥手(关闭连接):
- 第一次: 当主机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.2 UDP特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
3.3 TCP和UDP对比
TCP | UDP | |
---|---|---|
是否连接 | 面向连接 | 无连接 |
是否可靠 | 可靠传输,可使用流量控制和拥塞控制 | 不可靠传输,不使用流量控制和拥塞控制 |
连接对象个数 | 一对一通信 | 支持一对一,一对多,多对一和多对多交互通信 |
传输方式 | 面向字节 | 面向报文 |
首部开销 | 首部最小20字节,最大60字节 | 首部开销小,仅8字节 |
适用场景 | 适用于要求传输可靠、数据准确的场景,例如文件传输 | 适用于实时性要求高的应用(IP电话、视频会议、直播等) |
- 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(适配器适应性负载均衡)
# 验证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.101netmask 255.255.255.0broadcast 192.168.250.255
inet6 fe80::4e77:57:8c52:15f1prefixlen 64scopeid 0x20<
link>
ether 00:0c:29:18:d0:d9txqueuelen 1000(Ethernet)
RX packets 14579bytes 907906 (886.6 KiB)
RX errors 0dropped 17overruns 0frame 0
TX packets 437bytes 71153 (69.4 KiB)
TX errors 0dropped 0 overruns 0carrier 0collisions 0ens224: flags=4163<
UP,BROADCAST,RUNNING,MULTICAST>
mtu 1500
ether 00:0c:29:18:d0:e3txqueuelen 1000(Ethernet)
RX packets 13969bytes 838140 (818.4 KiB)
RX errors 0dropped 9overruns 0frame 0
TX packets 0bytes 0 (0.0 B)
TX errors 0dropped 0 overruns 0carrier 0collisions 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接口 xjzbond0bond0
[root@centos8301 ~]# nmcli connection add type bond con-name xjzbond0 ifname bond0 modeactive-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
NAMEUUIDTYPEDEVICE
Profile 1b5e0e3e5-7738-403f-9912-cf32e0f90a75ethernetens192
virbr07c9dfdc4-5efe-4bc5-9c91-f01a7b6de777bridgevirbr0
xjzbond0ba660a4a-c945-4a60-930f-3f57c4333011bondbond0
[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
NAMEUUIDTYPEDEVICE
Profile 1b5e0e3e5-7738-403f-9912-cf32e0f90a75ethernetens192
xjzbond0ba660a4a-c945-4a60-930f-3f57c4333011bondbond0
virbr07c9dfdc4-5efe-4bc5-9c91-f01a7b6de777bridgevirbr0
bond-slave-ens22425f3d7c1-7bd9-491e-9fb9-5f547eed0877ethernetens224
bond-slave-ens19295ee0aae-621b-4771-8136-7ce567fa18cbethernet--
[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
NAMEUUIDTYPEDEVICE
xjzbond0ba660a4a-c945-4a60-930f-3f57c4333011bondbond0
virbr07c9dfdc4-5efe-4bc5-9c91-f01a7b6de777bridgevirbr0
bond-slave-ens19295ee0aae-621b-4771-8136-7ce567fa18cbethernetens192
bond-slave-ens22425f3d7c1-7bd9-491e-9fb9-5f547eed0877ethernetens224
Profile 1b5e0e3e5-7738-403f-9912-cf32e0f90a75ethernet--# 启动聚合接口组 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
NAMEUUIDTYPEDEVICE
xjzbond0ba660a4a-c945-4a60-930f-3f57c4333011bondbond0
virbr07c9dfdc4-5efe-4bc5-9c91-f01a7b6de777bridgevirbr0
bond-slave-ens19295ee0aae-621b-4771-8136-7ce567fa18cbethernetens192
bond-slave-ens22425f3d7c1-7bd9-491e-9fb9-5f547eed0877ethernetens224
Profile 1b5e0e3e5-7738-403f-9912-cf32e0f90a75ethernet--
[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 ~]#
推荐阅读
- #yyds干货盘点#Linux启动流程和故障排错
- #yyds干货盘点# Git 报错(fatal: destination path ‘.‘ already exists and is not an empty directory.)
- #yyds干货盘点#Windows Server之AD域软件分发
- 了解DNS的作用,实际中给客户分配什么DNS地址好呢()
- #yyds干货盘点# MySQL性能优化(常见优化SQL的技巧)
- #yyds干货盘点#一次性解决text-justify,text-orientation等冷门属性文本属性
- #yyds干货盘点#一个方便的小系统,用于 CSS 中的动画入口
- #yyds干货盘点#最全深入浅出聊聊IO
- 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目