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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Week 5 Homework -> 正文阅读

[网络协议]Week 5 Homework

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

OSI七层模型

OSI(Open Systems Interconnection Reference Model)开放式系统互联参考模型。

第七层:应用层(Application Layer)提供了应用软件而设计的接口,以设置与另一个应用软件之间的通信,协议:HTTP,HTTPS,FTP,Telnet,SSH,SMTP,POP3等。

第六层:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式,如:数据加密,解密,压缩和解压缩等。

第五层:会话层(Session Layer)负责在数据传输中设置和维护两个节点之间的通信连接

第四层:传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等

第三层:网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络资料。例如:互联网协议(IP)等

第二层:数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。

分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。

第一层:物理层(Physical Layer)它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等

TCP/IP模型

TCP/IP传输控制协议/因特网互联协议,是一个协议栈,包括许许多多的一些协议:TCP、IP、UDP、ICMP、FTP、TELNET、SMTP等。

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

三次握手过程:
在这里插入图片描述
首先服务器端的服务进程已经监听在某个端口上,监听之后就可以一直等待客户端请求建立TCP连接。

1)当客户端想要和服务器端进立TCP连接时,首先会发送一个连接请求报文给服务器端。在这个请求报文中,TCP首部中的SYN位设置为1,ACK位设置为0,假设此时的序列号是x(序列号不一定是1),即SYN=1、ACK=0、seq=x。这个包也常称为SYN包,当客户端发送完SYN包后,它将进入SYN_SENT状态。

2)当服务器端收到报文后,发现其中的SYN=1、ACK=0,便知道这是一个TCP连接的请求包,如果服务器端确认与客户端建立TCP连接,那么服务器端需回复客户端。回复时,SYN=1、ACK=1、ack=x+1、seq=y。注意区分这里的ACK和ack,ACK表示的是占用一个比特位的ACK设置位,ack是确认号,这个包通常被称为ACK包,当服务器端发送完ACK包之后,它将进入AYN_RECV状态。

3)当客户端收到服务器端回复报文后,发现里面的SYN=1、ACK=1,于是也会向服务器端回复一个ACK包,回复时,SYN=0,ACK=1、seq=x+1、ack=y+1。这里的SYN=0、ACK=1表示这不是建立连接请求包,而是回复包。客户端发送完之后,就进入ESTABLISHED状态,表示连接在客户端已经建立完成。

4)服务器端最终收到客户端的ACK包之后,也将进入ESATBLISHED状态。到此,TCP连接就建立完成。

四次挥手过程
在这里插入图片描述
首先两端在开始释放TCP连接之前,都已经处于ESTABLISHED状态,假设客户端开始请求释放连接(当前,服务器端也可以主动释放连接)。

1)客户端发送一个TCP首部中FIN位置为1的包给服务器端,假设此时序号是u,即seq=u。FIN=1意味着这是一个请求关闭TCP连接的数据包,这种包也称为FIN包。当发送FIN包之后,客户端将从ESTABLISHED状态转为FIN-WAIT-1状态。

2)服务器端收到FIN包之后,发现其中FIN=1,知道客户端请求关闭,于是发一个回复包给A。回复时,设置ACK=1,ack=u+1,同时还设置序列号seq=v(假设服务器端现在发送到的数据序列号是v),发送完这个回复包之后,服务端进入CLOSE-WAIT状态。到了这个阶段,客户端到服务器端方向的连接就已经释放了,客户端不能再发送传输数据给服务器端,但是服务器端到客户端方向的连接还没有关闭,它可以继续发送数据给客户端,客户端也会接收。因为这个阶段只有一个方向的连接被释放,所以close-wait状态也称为半关闭状态。

3)当客户端收到服务器端的ACK包之后,它将进入FIN-WAIT2,等待服务器端发起从服务器端到客户端方向的连接关闭请求。

4)当服务器端确认已经没有数据发送给客户端后,服务器端开始主动关闭从服务器端客户端方向的TCP连接,这时会发送一个FIN包,同时ACK设置为1,ack仍然保持不变,是u+1,而seq则为一个新值w,因为进入CLOSE-WAIT之后,服务器端可能还发送了一些数据。服务器端发送完这个FIN+ACK包之后,将进入LAST-ACK(最后确认)状态。

5)当客户端收到服务器端FIN+ACK包之后,需要对B发送的关闭请求做出回复,回复时,ACK=1,seq=u+1不变,ack=w+1,当发送完这个ACK包之后,客户端不会立即就关闭,而是进入TIME-WAIT阶段等待一段时间(2倍MSL(最大段生存期)时长)。

6)当服务器端收到客户端的回复ACK包之后,意味着服务器端到客户端方向的连接关闭已经确认了,于是服务器端关闭连接。

7)当客户端等待了2倍MSL的时长之后,将真正关闭连接。

3、描述TCP和UDP区别

  • 相同点

    两者都是以协议的概念为基础

    协议栈中的协议彼此相互独立

    下层对上层提供服务

  • 不同点

    OSI是先有模型,TCP/IP是先有协议后有模型

    OSI是国际标准,适用于各种协议栈,TCP/IP实际标准,只适用于TCP/IP网络

    层次数量不同

4、网卡绑定bond0的实现

环境:

主机一:centos8-0

vmnet1:eth1,eth2

bond0:192.168.101.100/24

主机二:centos8-1

vmnet1:eth1,eth2

bond0:192.168.101.101/24

在vmnet1上配置bond0

主机一配置:

# 创建并配置bond0配置文件
[root@centos8-0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=bond
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.101.100
PREFIX=24
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
# 说明:miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路


# 编辑从属网卡配置
[root@centos8-0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
NAME=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@centos8-0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
NAME=eth2
BOOTPROTO=none
ONBOOT=yes
SLAVE=yes
MASTER=bond0

# 重新加载配置
[root@centos8-0 ~]# nmcli connection reload

# 要启动绑定,则必须首先启动从属接口
[root@centos8-0 ~]# nmcli connection up eth1
[root@centos8-0 ~]# nmcli connection up eth2

# 启动绑定
[root@centos8-0 ~]# nmcli connection up bond0

# 查看bond0的状态
[root@centos8-0 ~]# 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
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:7d:fe
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:7d:08
Slave queue ID: 0

主机二配置:

# 添加bonding接口并配置IP地址信息
[root@centos8-1 ~]# nmcli conn add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.101.101/24 autoconnect yes 

# 添加从属接口
[root@centos8-1 ~]# nmcli connection add type bond-slave ifname eth1 master bond0
[root@centos8-1 ~]# nmcli connection add type bond-slave ifname eth2 master bond0

# 要启动绑定,则必须首先启动从属接口
[root@centos8-1 ~]# nmcli connection up bond-slave-eth1
[root@centos8-1 ~]# nmcli connection up bond-slave-eth2

# 启动绑定
[root@centos8-1 ~]# nmcli conn up bond0

# 查看bond0的状态
[root@centos8-1 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

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

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:9e:90:67
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:9e:90:71
Slave queue ID: 0

测试
在这里插入图片描述
断开eth1,模拟某个网卡故障
在这里插入图片描述
再次查看bond0状态

[root@centos8-0 ~]# 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: eth2
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 3
Permanent HW addr: 00:0c:29:c9:7d:fe
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:7d:08
Slave queue ID: 0
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 12:17:32  更:2021-09-30 12:19:41 
 
开发: 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/27 2:04:30-

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