1、简述osi七层模型和TCP/IP五层模型
OSI七层模型
应用层
表示层
会话层
传输层
网络层
数据链路层
物理接入层
TCP/IP五层模型
应用层(应用层、表示层、会话层)
传输层
网络层(互联网层)
数据链路
物理接入层
TCP/IP四层模型
应用层(应用层、表示层、会话层)
传输层
网络层
网络接口层(数据链路层、物理接入层)
2、总结描述TCP三次握手四次挥手
TCP三次握手
第一次:A-PC 主动打开连接向 B-PC 发送 "SYN=1,seq=x"(请求连接),并且进入 SYN-SENT(同步已发送)状态
第二次:B-PC 被动打开连接,进入 LISTEN(收听)状态,接受到 A-PC 的 "SYN=1,seq=x" 后,回复 "SYN=1,ACK=1,seq=y,ack=x+1"(序号+1)(回复确认,并请求建立连接),并进入SYN-RCVD(同步收到)状态
第三次:A-PC 在接收到 "SYN=1,ACK=1,seq=y,ack=x+1" (序号+1)后,向 B-PC 回复 "ACK=1,seq=x+1,ack=y+1(回复确认)(序号+1)" ,确认信息后 A-PC 进入ESTAB-LISHED(已建立连接状态),B-PC 收到 A-PC 发送的确认信息后进入 ESTAB-LISHED(已建立连接状态)。
需要:如果A向B发送信息,B回复后,A不回复确认信息,B将进入半连接状态,需要注意半连接攻击
四次挥手
第一次:A-PC处于 ESTAB-LISHED(已建立连接状态)向B-PC发送“FIN=1,seq=u(终止请求信息)”,发送后立即进入FIN-WAIT-1(终止等待1状态)。
第二次:在收到A-PC发送的“FIN=1,seq=u(终止请求信息)”前,B-PC处于 ESTAB-LISHED(已建立连接状态),当B-PC接收到信息后,向A-PC回复“ACK=1,seq=v,ack=u+1”(序号+1),然后B-PC进入CLOSE-WAIT(关闭等待状态),A-PC收到“ACK=1,seq=v,ack=u+1”后进入FIN-WAIT-2(终止等待2状态)。
第三次:B-PC进入CLOSE-WAIT(关闭等待状态)后会继续向A-PC发送数据知道发送完毕后,会向A-PC发送“FIN=1,ACK=1,seq=w,ack=u+1”,发送完毕后直接进入LAST-ACK(最后确认状态)。
第四次:A-PC收到B-PC发送的“FIN=1,ACK=1,seq=w,ack=u+1”后,正常情况下回立即回复“ACK=1,seq=u+1,ack=w+1(序号+1)”,A-PC发出信息后进入TIME-WAIT(时间等待状态),B-PC收到A-PC回复“ACK=1,seq=u+1,ack=w+1(序号+1)”后,立即端口链接,链接进入CLOSED,A-PC在等待2MSL后未收到B-PC的消息也断开链,链接接入CLOSED。
进入TIME-WAIT等待2MSL(一般为4分钟)是为了确保B收到 最终确认消息,以及防止B又从新建立建立。如果不等,释放的端口可能会重连刚断开的服务器端口,这样依然存活在网络里的老的TCP报文可能与新TCP连接报文冲突,造成数据冲突,为避免此种情况,需要耐心等待网络老的TCP连接的活跃报文全部死翘翘,2MSL时间可以满足这个需求(尽管非常保守)!
3、描述TCP和UDP区别
TPC和UDP都是传输层协议;能将数据切片,排序
主要区别在
TCP 面向链接协议;UDP 非面向链接协议
TCP 全双工协议/不是半双工或单工 ;UDP 可以是单工、半双工、全双工
TCP 支持半关闭 ;UDP不支持半关闭
TCP 错误检查 ;UDP有限的错误检查
TCP 拥有确认机制;UDP 无确认机制
TCP 数据恢复,重传 ;UDP 无数据恢复,重传
TCP 流量控制,滑动窗口;UDP 无流量控制,滑动窗口
TCP 拥塞控制,慢启动或拥塞避免算法;UDP无
TCP 提供可靠的网络访问;UDP 提供不可靠的网络访问
TCP 传输性能一般;UDP传输性能高
TCP 连接只能点到点;UDP 支持1对1,1对多,多对多等交互通讯
TCP开销为20字节;UDP开销为8字节
TCP要求系统资源较多;UDP较少
4、网卡绑定bond0的实现
方法A
vim /etc/sysconfig/network-scripts/ifcfg-bond0
添加以下内容
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=10.0.0.200
PREFIX=24
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
vim /etc/sysconfig/network-scripts/ifcfg-eth1
添加以下内容
NAME=eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
vim /etc/sysconfig/network-scripts/ifcfg-eth2
添加以下内容
NAME=eth2
DEVICE=eth2
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
重启网络服务
CentOS7
service network restart
CentOS8
nmcli c reload
nmcli c up bond0
nmcli d reapply bond0
nmcli d connect bond0
ubuntu
sudo systemctl restart NetworkManager.service
或
sudo nmcli networking off
sudo nmcli networking on
查看bond0状态
cat /proc/net/bonding/bond0
查看IP
ip a
断开一路网络检测是否正常
ping 10.0.0.200
查看bond模式
cat /sys/class/net/bond0/bonding/mobe
删除bond0
modprobe -r bonding
ifconfig bond0 down
rmod bonding
rm /etc/sysconfig/network-scripts/ifcfg-eth1
rm /etc/sysconfig/network-scripts/ifcfg-eth2
CentOS7
service network restart
CentOS8
nmcli c reload
nmcli c up bond0
nmcli d reapply bond0
nmcli d connect bond0
方法B
#ubuntu ( apt install network-manager )
#nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 10.0.0.100/24
#nmcli con add type bond-slave ifname eth1 master bond0
#nmcli con add type bond-slave ifname eth2 master bond0
#nmcli con show
#nmcli con up bond-slave-eth1
#nmcli con up bond-slave-eth2
#nmcli con up bond0
#root@ubuntu18-yang:~# nmcli connection delete bond-slave-eth{1,2}
#root@ubuntu18-yang:~# nmcli connection delete bond0
ubuntu18.04
vim /etc/netplan/00-installer-config.yaml
CentOS
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 10.0.0.101/24
nmcli con add type bond-slave ifname eth1 master bond0
nmcli con add type bond-slave ifname eth2 master bond0
nmcli con up bond-slave-eth1
nmcli con up bond-slave-eth2
nmcli con up bond0