魏蓝

以梦为马

导航

第五周作业

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

posted on 2022-04-03 21:32  魏蓝  阅读(49)  评论(0编辑  收藏  举报