osi七层模型和TCP/IP五层模型TCP三次握手四次挥手TCP和UDP区别 网卡绑定bond0的实现

归志宁无五亩园,读书本意在元元。这篇文章主要讲述osi七层模型和TCP/IP五层模型TCP三次握手四次挥手TCP和UDP区别 网卡绑定bond0的实现相关的知识,希望能为你提供帮助。
1、简述OSI七层模型和TCP/IP五层模型 1.1 TCP/IP五层模型和osi七层模型的对比
【osi七层模型和TCP/IP五层模型TCP三次握手四次挥手TCP和UDP区别 网卡绑定bond0的实现】

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地址来访问媒介,如交换机的功能。
  • 物理层:以比特形式在物理介质中传输。
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三次握手
osi七层模型和TCP/IP五层模型TCP三次握手四次挥手TCP和UDP区别 网卡绑定bond0的实现

文章图片

三次握手(建立连接):
  • 第一次握手:客户端发送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四次挥手
osi七层模型和TCP/IP五层模型TCP三次握手四次挥手TCP和UDP区别 网卡绑定bond0的实现

文章图片

四次挥手(关闭连接):
  • 第一次: 当主机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.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虚拟服务器增加一块网卡,才可以继续完成双网卡绑定试验。
osi七层模型和TCP/IP五层模型TCP三次握手四次挥手TCP和UDP区别 网卡绑定bond0的实现

文章图片

# 配置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 ~]#


    推荐阅读