1、简述osi七层模型和TCP/IP五层模型
1、OSI七层模型:
物理层:为数据端设备构建数据通路,对数据包进行编码,pdu为bit
数据链路层:负责网络寻址,错误侦测和改错,分为两个字层,LLC子层和MAC子层。对来自网络层
的数据包添加数据链路层的报头和报尾校验位FCS。pdu为帧,协议有STP、VLAN等。
网络层:数据包的路径选择和转寄,对来自传输层的数据包添加网络层的报头。pdu为报文,协议有ICMP、ARP、IP等协议。
传输层:管理两个节点之间的数据传输,确保数据可靠传输到目标节点。对来自会话层的数据包添加传输层报头。
pdu为段,协议有TCP、UDP等协议。
会话层:负责建立和断开通讯连接。对来自表示层的数据包添加会话层报头。
表示层:将各种不同表现形式的信息转换成标准格式的网络传输数据。如将文字、图像、声音等转换成标准的
数据格式,并对来自于应用层的数据添加表示层的报头。
应用层:针对各种特定应用的不同协议,如收发邮件应用的邮件传输协议,远程登录的远程登录协议等。并对数据添加应用层的报头。
2、TCP/IP协议五层模型
物理层:对应OSI的物理层
数据链路层:对应OSI的数据链路层
互联网层:对应OSI的网络层
传输层:对应OSI的传输层
应用层:对应OSI的会话层+表示层+应用层
2、总结描述TCP三次握手四次挥手
假设A机与B机要进行网络通讯
TCP三次握手
1、A机作为客户端处于CLOSE状态,B机作为服务端被动进入SYN-LISTEN状态。此时A主动发起一帧SYN(SYN=1,ACK=0,seq=u,ack=q)
请求连接报文给B机,A机进入SYN-SEND状态。(A机发送报文时,若A机的ARP映射表中没有B机的MAC地址和IP映射关系的话,
会先广播ARP包获取B机的MAC地址)
2、B机收到A机的SYN请求连接报文后,进入SYN-RECV状态,并发送一阵ACK(SYN=1,ACK=1,seq=q,ack=u+1)请求确认报文给A机,
表示收到请求并确认。此时链路处于半连接状态。
3、A机收到B机的ACK确认报文后,也向B机发送一帧ACK(SYN=0,ACK=1,seq=u+1,ack=q+1)确认收到的报文。A机进入ESTABLISHED
状态,B机收到A机的确认ACK后也进入ESTABLISHED状态,此时AB机三次握手完成,通讯已建立,可以传数据。
TCP四次挥手
1、A机与B机想断开连接,此时A机和B机都处于ESTABLISED状态,A机发送一帧FIN(FIN=1,ACK=0,seq=u,ack=q)请求报文给B机,
A机转入FIN-WAIT1状态。
2、两种情况,一种是在收到A机的FIN之前,B机主动向A机发送FIN断开连接报文,此时又收到A机的FIN报文,则双机状态处于CLOSING
状态。一种是正常情况下,B机收到A机的FIN请求报文后,一边通知应用程序断开连接,不要再发送数据,另一边发送A机一帧
ACK(FIN=0,ACK=1,seq=q,ack=u+1)确认收到的报文后,B机转入CLOSE-WAIT状态。此时链路处于半连接状态。数据包还可以正常发送。
而A机收到此帧ACK后就会进入FIN-WAIT2状态。
3、最后一帧数据报文从B机发出后,B机就会向A机发送一帧FIN(FIN=1,ACK=1,seq=q,ack=u+1)的确认报文,B机就会进入LAST-ACK状态。
4、A机收到B机发过来的FIN的确认帧后,会向B机发送一帧ACk确认帧(FIN=0,ACK=1,seq=u+1,ack=q+1)。接着A机就会进入
TIME-WAIT状态,而B机收到此帧后直接进入CLOSE状态。A机在TIME-WAIT状态下保持两个报文最大生存时间MSL(两个MSL的原因
是等待数据传送完全)后自动进入CLOSE。
3、描述TCP和UDP区别
1、TCP是面向连接的传输层协议,UDP是非面向连接的传输层协议
2、TCP有很完整的错误报文检查功能,如校验和,UDP只有有限的错误检查功能,就一个checksum
3、TCP有报文确认机制,即ACK确认。UDP只管发,不确认,因此UDP比TCP传输效率高
4、TCP有数据恢复,重传特性,当没收到确认帧时,或断了,会重新发送。UDP没有数据恢复特性。