第五周作业

1、简述osi七层模型和TCP/IP五层模型
OSI 模型的七层结构:


image.png
第7层应用层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。
例如: HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等
第6层表示层
表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式
第5层会话层
会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。
第4层传输层
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。
例如:传输控制协议(TCP)等。
第3层网络层
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。
例如:互联网协议(IP)等。
第2层数据链接层
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。
当表头和表尾被加至数据包时,会形成信息框(Data Frame)。
数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。
例如:以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。
第1层物理层
物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。
包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。

TCP/IP五层模型:


image.png
第5层应用层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。
例如: HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等
第4层传输层
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。
例如:传输控制协议(TCP)等。
第3层网络层
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。
例如:互联网协议(IP)等。
第2层数据链接层
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。
当表头和表尾被加至数据包时,会形成信息框(Data Frame)。
数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。
例如:以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。
第1层物理层
物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。
包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。

对比:


image.png

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


image.png
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

为什么要三次握手:

我们要知道网络传输是有延迟的,可能丢失的,不是说A发一个包给B,B保证能立刻收到,甚至B可能一直收不到。

第一次。A跟B说,我要建立连接了。

第二次。B跟A说,OK,那我也建立连接。

第三次。A跟B说,嗯,我知道了。

第二次和第三次都是为了保证连接是可靠的。

假设只有一次握手,而A的包无法发到B那里去,那A就是自顾自的建立了连接,傻傻的发信息,却不知道对方其实根本收不到。所以第二次握手是为了告诉A,B收到了你的信息。假设
只有两次握手,那么对B来说,B是不知道A是否收到了自己的信息的,第三次握手是为了告诉B,A收到了B的信息了,并且可以互发信息了。 B真的需要知道A是否收到了自己发出的第
二次握手的信息吗?是的,如果A的第一次握手因为某些原因延迟很久才到B,而其实现在A和B已经聊完天,关闭连接了,这时B发出第二次握手,而A已经没什么想跟B说的,就不会发
出第三次握手,这样B就不会建立连接消耗资源。若是只有二次握手的这种情况,B会直接建立连接消耗资源。

TCP四次挥手:


image.png
第一次挥手:
客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入
FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。

第二次挥手:
1)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用
进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是
整个CLOSE-WAIT状态持续的时间。
2)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

第三次挥手:
服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器
就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

第四次挥手:
1)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没
有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
2)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

为什么要四次握手:

第一次。A跟B说,我要断开连接了。

第二次。B跟A说,好的,我知道了,我不再接收你的信息了。

第三次。B跟A说,我传给你的信息传完了,你可以关闭连接了。

第四次。A跟B说,好的,我关闭连接了。

第二次挥手是为了告诉A,B知道你不再发送信息了,且B不再接收信息。但B仍可以向A发送信息。因为A是主动关闭的一方,但B可能仍然有信息未发送完。第三次挥手是为了告诉A,B
的信息发完了,A你可以关闭连接了。 第四次挥手是为了告诉B,A我知道可以关闭连接了,你也可以关闭了。对B来说,第四次挥手B才知道A成功关闭连接了,不关闭很耗费资源,所以
要保证关闭了。若B接收不到第四次挥手信息,将会继续第三次挥手,直到收到确认信息为止。注意:对A来说,第四次挥手后2MSL内未接收到B的第三次挥手信息才会关闭连接,否则
会继续第四次挥手。防止B接收不到第四次挥手信息。(若B接收不到第四次挥手信息,将重复发送第三次挥手信息,这个2MSL就是如果真的有重复发送的第三次挥手信息,在这个时间
内肯定到达A了(路由不出问题的话),就是为了保证B收到第四次挥手信息)。

3、描述TCP和UDP区别
TCP和UCP的特性:

TCP:
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法

UDP:
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性

4、网卡绑定bond0的实现
新增第二块网卡


image.png

进入主机查看网卡是否存在:


image.png

添加bond0网卡:

[root@centos7 ~]$nmcli connection add con-name mybond0 ifname bond0 type bond mode active-backup ipv4.method manual ipv4.addresses 10.10.10.222/24 
[root@centos7 ~]$nmcli con add type bond-slave ifname eth1 master bond0
连接 "bond-slave-eth1" (88250461-a656-4e15-99e6-0b8ddcbefc4d) 已成功添加。
[root@centos7 ~]$nmcli con add type bond-slave ifname eth0 master bond0
连接 "bond-slave-eth0" (88250461-a656-4e15-99e6-0b8ddcbefc4d) 已成功添加。

启动从属接口
[root@centos7 ~]$nmcli con up bond-slave-eth0
[root@centos7 ~]$nmcli con up bond-slave-eth1

启动bond0
[root@centos7 ~]$nmcli con up mybond0

你可能感兴趣的:(第五周作业)