IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> No.5 OSI七层模型和TCP/IP五层模型以及多网卡bonding -> 正文阅读

[网络协议]No.5 OSI七层模型和TCP/IP五层模型以及多网卡bonding

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

第七层 应用层 
OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。
-----------------------------------------------------------------------------------
第六层 表示层 
功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
-----------------------------------------------------------------------------------
第五层 会话层 
会话层就是负责建立、管理和终止表示层实体之间的通信会话。是用户应用程序和网络之间的接口
-----------------------------------------------------------------------------------
第四层 传输层 
传输层建立了主机端到端的链接,如TCP、UDP协议,PDU是数据段
作用:为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题
-----------------------------------------------------------------------------------
第三层 网络层 
通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
解决的问题:
寻址:不同子网之间通信,使用逻辑地址(IP地址)
交换:规定不同的信息交换方式。
路由算法:根据路由算法,通过网络为数据分组选择最佳路径。
连接服务:控制从源节点到目的节点间的流量,目的是为了防止阻塞,并进行差错检测。
-----------------------------------------------------------------------------------
第二层 数据链路层 
将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。
该层分为:介质访问控制(MAC)和逻辑链路控制(LLC)两个子层
MAC子层是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;
LLC子层是建立和维护网络连接,执行差错校验、流量控制和链路控制。
-----------------------------------------------------------------------------------
第一层 物理层 
功能:传输介质为数据链路层提供物理连接,实现比特流的透明传输。
作用:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。
设备:各种物理设备:集线器、中继器、调制解调器、网线、双绞线、同轴电缆。

OSI 7层模型和TCP/IP 5层模型对应关系图

在这里插入图片描述

TCP/IP五层模型
第五层:应用层
负责应用程序之间的沟通,对应于OSI七层参考模型的应用层和表达层,会话层。
--------------------------------------------------------------------------------------------
第四层:传输层
负责两台主机之间的数据传输,对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。
--------------------------------------------------------------------------------------------
第三层:网络层
负责地址管理和路由选择。如路由器设备,三层交换机。
--------------------------------------------------------------------------------------------
第二层:数据链路层
负责设备之间的数据帧的传输和识别。如二层交换机
--------------------------------------------------------------------------------------------
第一层:物理层
负责光电信号传递方式。如集线器

2、总结描述TCP三次握手四次挥手

三次握手

在这里插入图片描述
通过wireshark抓包观察tcp3次握手,
场景:本地ssh连接服务器。
源地址本地电脑:192.168.234.1,目的地址服务器:192.168.234.100,目的端口:ssh 22
在这里插入图片描述
第一次握手,192.168.234.1发送[SYN]seq=0 报文给192.168.234.100,源进入SYN_SENT
在这里插入图片描述
在这里插入图片描述
第二次握手
192.168.234.100收到SYN报文,向192.168.234.1回应[SYN,ACK] Seq=0 Ack=1(0+1)的报文,并进入SYN_RCVD状态
在这里插入图片描述
在这里插入图片描述
第三次握手
192.168.234.1收到了[SYN]报文,回应了1个[ACK] Ack=1(0+1)报文,进入ESTAB-LISHED状态,通过三次握手,建立连接。
在这里插入图片描述
在这里插入图片描述

1.客户端发起请求,发送数据包:设置SYN标志位,用于建立同步连接,同时生成一个随机数填充序号seq。然后进入SYN_SENT状态。

2.服务端收到客户端发送的数据包,检测到已经设置了SYN标志位。服务端也会创建一个数据包,设置SYN和ACK标志位,ACK用于确认收到了刚刚客户端发送的数据包,同时生成一个随机数填充seq,与客户端的seq数据包无关。服务器将客户端数据包序号+1,填充ack。然后进入SYN-RCVD状态。

3.客户端收到数据包,检测到已经设置了SYN和ACK标志位,确认时服务端发来的数据包,并检测ack是否+1,如果是说明建立成功。确认完毕,客户端继续组建数据包,并设置ACK标志位,并在服务器端的数据包序号seq。客户端将数据包发出,进入ESTABLISED状态,表示连接已经成功建立。

4.服务器端收到数据包,检测到已经设置了 ACK 标志位,确认是客户端发来的数据包。、并会检测ack是否+1如果是说明建立成功。服务器进入ESTABLISED状态。

至此,客户端和服务器都进入了ESTABLISED状态,连接建立成功,接下来就可以收发数据了

在这里插入图片描述

TCP四次挥手

场景:退出登录服务器
在这里插入图片描述
第一次挥手
192.168.234.100 向192.168.234.1 发送[FIN,ACK] Seq=889 Ack=693的报文
在这里插入图片描述
第二次挥手
192.168.234.1 收到后 ,回应[ACK] Seq=693 Ack=890(889+1)的报文给192.168.234.100,表示自己已收到断开的消息
在这里插入图片描述
第三次挥手
192.168.234.1 继续发送[FIN,ACK]Seq=693 Ack=890的报文给192.168.234.100,
在这里插入图片描述
第四次挥手
192.168.234.100给192.168.234.1 发送[ACK] Seq=890 Ack=694的报文,4次挥手结束,断开连接。
在这里插入图片描述

1.客户端向服务器发送 FIN 数据包,进入FIN_WAIT_1状态。

2.服务器收到数据包后,检测到设置了 FIN 标志位,于是向客户端发送“确认包”,进入CLOSE_WAIT状态。服务器收到请求后并不立即断开连接,而是先向客户端发送“确认包”。

3.客户端收到“确认包”后进入FIN_WAIT_2状态,等待服务器准备完毕后再次发送数据包。

4.服务器准备完毕,可以断开连接,于是再向客户端发送 FIN 包,告诉客户端准备好了,可以断开连接。然后进入LAST_ACK状态。

5.客户端收到服务器的 FIN 包后,再向服务器发送 ACK 包,表示可以断开连接。然后进入TIME_WAIT状态。

6.服务器收到客户端的 ACK 包后,就断开连接,关闭套接字,进入CLOSED状态。

3、描述TCP和UDP区别

1、TCP面向连接 (如打电话要先拨号建立连接); UDP是无连接 的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP对系统资源要求较多,UDP对系统资源要求较少。

TCP
?工作在传输层面向连接协议全双工协议半关闭
?错误检查
?将数据打包成段,排序确认机制
?数据恢复,重传
?流量控制,滑动窗口
?拥塞控制,慢启动和拥塞避免算法

UDP
?工作在传输层
?提供不可靠的网络访问非面向连接协议
?有限的错误检查传输性能高
?无数据恢复特性

4、网卡绑定bond0的实现

1,mod=1,即:(active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口
才转发数据报文。
2,mod=2,即:(balance-xor) XOR policy(平衡策略)聚合口数据报文按源目MAC、源目IP、源目
端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文
3,mod=3,即:broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接
口分别发送出去,
当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容
错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。
4,mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚
合)在动态聚合模式下,聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态
通过该协议自动进行维护。
5,mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口
口出故障了,另一个物理接口接管该故障物理口的MAC地址。
6,mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何
switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP
应答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不
同的硬件地址进行通信。

mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会
发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只
占了小部分流量

常用的模式为0,1,3,6
mode 156 不需要交换机设置
mode 0234需要交换机设置
active-backup、balance-tlb 和balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需
要配置交换机以便整合链接。如:Cisco 交换机需要在模式023 中使用EtherChannel,但在模
式4中需要LACP和EtherChannel

bond0配置
?1./etc/sysconfig/network-scripts/ifcfg-bond0

?NAME=bond0
?TYPE=bond
?DEVICE=bond0
?BOOTPROTO=none
?IPADDR=192.168.234.129
?PREFIX=24
?GATEWAY=192.168.234.2
?#miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
 BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"

?2./etc/sysconfig/network-scripts/ifcfg-eth0

?NAME=eth0
?DEVICE=eth0
?BOOTPROTO=none
?MASTER=bond0
?SLAVE=yes
?ONBOOT=yes

?3./etc/sysconfig/network-scripts/ifcfg-eth1

?NAME=eth1
?DEVICE=eth1
?BOOTPROTO=none
?MASTER=bond0
?SLAVE=yes
?ONBOOT=yes

模拟测试,在电脑cmd长ping192.168.234.131,观察切换线路时丢包情况

#查看网卡配置已生效
[root@centos7 ~]# 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: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:c2:34:0b brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 00:0c:29:c2:34:01 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:c2:34:0b brd ff:ff:ff:ff:ff:ff
    inet 192.168.234.131/24 brd 192.168.234.255 scope global noprefixroute bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fec2:340b/64 scope link 
       valid_lft forever preferred_lft forever
------------------------------------------------------------------------------------
#查看现在活跃的网卡是eth0
[root@centos7 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c2:34:0b
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c2:34:01
Slave queue ID: 0
------------------------------------------------------------------------------------
#把eth0网卡关掉,观察eth1网卡已成为活跃网卡
[root@centos7 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 00:0c:29:c2:34:0b
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:c2:34:01
Slave queue ID: 0

ping测试结果,切换过程中丢了1个包。

来自 192.168.234.131 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间=13ms TTL=64
请求超时。
来自 192.168.234.131 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.234.131 的回复: 字节=32 时间<1ms TTL=64
192.168.23.131 的 Ping 统计信息:
    数据包: 已发送 = 333,已接收 = 332,丢失 = 1 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 13ms,平均 = 0ms
Control-C
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 15:11:36  更:2021-10-02 15:13:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/29 18:18:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码