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的实现的主要内容,如果未能解决你的问题,请参考以下文章

OSI七层模型和TCP/IP五层模型iproute家族命令管理工具介绍

简述OSI七层模型和TCP/IP五层模型

OSI七层模型与TCP/IP五层模型

OSI七层模型和TCP/IP五层(四层)模型的概念

OSI七层模型和TCP/IP五层(四层)模型的概念

网络编程 ———— OSI七层网络模型和TCP/IP五层网络模型