1、简述OSI七层模型和TCP/IP五层模型
1.1 OSI七层模型
第七层 应用层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP、HTTPS、FTP、MySQL等
第六层 表示层
表示层(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)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。
1.2 TCP/IP五层模型
其实OSI七层和TCP/IP五层模型差不多,TCP/IP模型把OSI的七层模型应用层、表示层、会话层合成应用层。
2、总结描述TCP三次握手四次挥手
2.1 TCP三次握手
第一次握手:客户端打开一个端口,向服务端发送一个带有指针SYN=1、序列号为seq=x的报文,客户端从CLOSED状态转换为SYN_SENT状态,服务端从CLOSED状态转换为LISTEN状态。
第二次握手:服务端发送一个带有指针SYN=1、ACK=1、序列号为seq=y、ack=x+1的报文给客户端,服务端从LISTEN状态转换为SYN_RCVD状态。
第三次握手:客户端送一个一个带有指针ACK=1、序列号为seq=x+1、ack=y+1的报文给服务端,客户端从SYN_SETN状态转换为ESTABLISHED,服务端从SYN_RCVD状态转化为ESTABLISHED。
2.2 TCP四次挥手
第一次挥手:客户端主动向服务端发送一个带有指针FIN=1、序列号seq=u的报文给服务端,客户端状态从ESTABLISHED转换为FIN_WAIT_1。
第二次挥手:服务端向客户端发送一个带有指针ACK=1、序列号为seq=v、ack=u+1的报文给客户端,客户端状态从FIN_WAIT_1转化为FIN_WAIT_2,服务端状态从ESTABLISHED转化为CLOSE_WAIT。
第三次挥手:服务端向客户端发送一个带有指针FIN=1、ACK=1、序列号seq=w、ack=u+1的报文给客户端,服务端状态从CLOSE_WAIT转化为LAST_ACK。
第四次挥手:客户端向服务端发送一个带有指针ACK=1、序列号seq=u+1、ack=w+1的报文给服务端,客户端状态从FIN_WAIT_2转化为TIME_WAIT,到了设置时间继而转化为CLOSED,服务端状态从LAST_ACK转化为CLOSED。
3、描述TCP和UDP区别
3.1 TCP特性
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
3.2 UDP特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
3.3 TCP和UDP区别(面试)
3.3.1 TCP和UDP的区别
TCP 是面向连接的,UDP 是面向无连接的
UDP程序结构较简单
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证
3.3.2 什么是面向连接,什么是面向无连接
在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会
3.3.3 TCP 为什么是可靠连接
通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
TCP 报文头里面的序号能使 TCP 的数据按序到达
报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
TCP 拥有流量控制及拥塞控制的机制
TCP 的顺序问题,丢包问题,流量控制都是通过滑动窗口来解决的
拥塞控制时通过拥塞窗口来解决的
4、CentOS8网卡绑定bond0的实现
4.1 创建bonding设备的配置文件
[root@centos-8 ~]#cat /etc/sysconfig/network-scripts/ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=10.0.0.100
PREFIX=8
BONDING_OPTS="mode=1 miimon=100"
[root@centos-8 ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth1
NAME=eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
[root@centos-8 ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth2
NAME=eth2
DEVICE=eth2
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
#启动bond0
[root@centos-8 ~]#nmcli connection reload
4.2 bond状态查看等
查看bond0,谁是提供网络服务
[root@centos-8 ~]#cat /proc/net/bonding/bond0
4.3 bond网卡转换测试
#down掉eth1,查看状态
[root@centos-8 ~]#nmcli connection down eth1
[root@centos-8 ~]#cat /proc/net/bonding/bond0
#启动eth1,查看状态
[root@centos-8 ~]#nmcli connection up eth1
[root@centos-8 ~]#cat /proc/net/bonding/bond0
#再down掉eth2,查看状态
[root@centos-8 ~]#nmcli connection down eth2
[root@centos-8 ~]#cat /proc/net/bonding/bond0
4.4 查看bond模式
[root@centos-8 ~]#cat /sys/class/net/bond0/bonding/mode
4.5 禁用bond和卸载bond
#禁用bond
[root@centos-8 ~]#ifconfig bond0 down
#删除bond
[root@centos-8 ~]#rmmod bonding
4.6 删除bond及相关配置文件
[root@centos-8 ~]#rm /etc/sysconfig/network-scripts/ifcfg-bond0
[root@centos-8 ~]#rm /etc/sysconfig/network-scripts/ifcfg-eth{1,2}