第五周作业
1、简述osi七层模型和TCP/IP五层模型
1)应用层
是OSI最高层,常见的一些应用程序的数据发起点以及终止点。
2)表示层
是应用层的下一层,将应用层的数据进行数据转换(加密、解密、压缩、编码转换等)
3)会话层
主机之间通信的通道,并不直接参与数据传输,但会对数据传输进行管理。
4)传输层
接收上一层数据,将数据进行封装(目标应用端口),传输层有两种协议:UDP和TCP协议。如果采用的是UDP协议,会将数据封装成数据报;如果用的是TCP协议,则数据会被封装成数据段。
5)网络层
将数据报或者数据段继续封装成数据包(增加了目标IP和源IP)
6)链路层
将数据包继续封装为数据帧:将源MAC地址和目标MAC地址加入数据包中。那么路由就知道这个数据帧下一跳要交给谁。
7)物理层
将数据帧转化为电信号传递给网线。
2、总结描述TCP三次握手四次挥手
1)三次握手
SYN:其值为0或1,当SYN=1,ACK=0时说明这是一个请求包,称为SYN请求包,此时仅仅发送了一个请求,并未建立连接。类推可知,回复包为SYN=1,ACK=1称为ACK包,当连接已经建立,SYN=0
ACK:其值为0或1,确认ack字段的有效性,为1有效,为0无效。连接建立完成后,ACK字段总为1.
ack:确认号,是等待发送方发送下一个数据包的起始字节
第一次握手(约吗):当客户端A要和服务器端B建立TCP连接时,会发送一个SYN包:SYN=1,ACK=0,seq=x。当客户端发送完SYN包后,它会进入到SYN_SENT状态
第二次握手(约):当服务器端B收到SYN包后,需要进行回复,它会回复一个ACK包:SYN=1,ACK=1,seq=y,ack=x+1。当服务端B发送完ACK包后,他会进入到SYN_RECV状态
第三次握手(好!):当A收到B的回复报文后,发现里面ACK=1,SYN=1,会再次向服务器端发送报文,注意这次的为回复包:SYN=0,ACK=1,seq=x+1,ack=y+1。发送完后会进入ESTABLISHED状态,表示连接在客户端A已经完成
服务端B收到客户端A的回复包后,也将进入ESTABLISHED状态。到此TCP连接建立。
其实,我们所说的三次握手并不合理,因为官方文档中的对其描述为three way handshark,可以翻译为三报文握手或三路握手,因为这里的handshark为单数,所以真正的三报文握手其实只有一次握手,一次握手传输三个包。
2)四次挥手
FIN:其值为0或1,当其值为1时,表示请求释放TCP连接
在断开连接之前都处于ESTABLISHED状态。
假设客户端A主动和服务端B释放连接(反之也可以)
第一次挥手,:客户端A先给B发送一个请求关闭TCP连接的包:FIN=1,seq=u,称为FIN包。发完此包后,客户端A从ESTABLISHED进入FIN-WAIT-1状态。
第二次挥手:服务端B收到了A发送的FIN包后,需要给A发送一个回复包:ACK=1,seq=v,ack=u+1。发后进入CLOSE-WAIT状态。这个时候A到B的连接就被释放了,此时是半关闭状态B依旧和A连接,A接收到B的回复包后,进入FIN-WAIT2状态,等待B给A发送连接中断请求。
第三次挥手:B主动向A发送TCP连接中断请求的FIN+ACK包:FIN=1,ACK=1,seq=w,ack=u+1。(这里的ack依然不变)。发完这个包后进入到LAST-ACK状态。
第四次挥手:A收到B的FIN+ACK包后,会最后回复一个包:ACK=1,seq=u+1,ack=w+1。发送完这个包后,A并不会立刻关闭,而是会进入TIME-WAIT等待一段时间(2MSL)后关闭。而B收到A的ACK包后就意味着连接关闭确认,于是立刻关闭连接。至此四次挥手结束。
注意一点:第四次挥手,A发送ACK包后为什么还要等待2MSL的时间,是因为,如果B没有收到A的回复包,会继续发送FIN+ACK的请求包给A,此时A并没有真正关闭,于是再次发送回复包,使得B能够正常关闭连接。
3、描述TCP和UDP区别
TCP安全可靠不易丢包,但是效率稍低,UDP效率高,传输快,但是易丢包。
4、网卡绑定bond0的实现
配置环境:两个网卡
创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0 NAME=bond0 TYPE=bond DEVICE=bond0 BOOTPROTO=none IPADDR=10.0.0.20 PREFIX=8 BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
/etc/sysconfig/network-scripts/ifcfg-eth0 NAME=eth0 DEVICE=eth0 BOOTPROTO=none MASTER=bond0 SLAVE=yes ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-eth1 NAME=eth1 DEVICE=eth1 BOOTPROTO=none MASTER=bond0 SLAVE=yes ONBOOT=yes
重启网络服务
[root@centos7 network-scripts]# systemctl restart network
查看bond信息
[root@centos7 network-scripts]# cat /proc/net/bonding/bond0
[root@centos7 network-scripts]# ip a
删除bond0
ifconfig bond0 down rmmod bonding
写于2022-4-3-21:31 weilan