面试必问网络篇之 TCP、UDP、IP
面试过程中,网络往往是必问的环节,然而我们在工作中往往只是使用它,很少需要去了解它的原理,不只是为了面试,了解一下原理也可以帮助我们在工作中解决很多疑惑,因此了解原理还是很有必要的。再说TCP/IP协议之前,首先了解一下OSI(开放式系统互联)。
OSI
在OSI中,把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
物理层:
布线、光纤、网卡和其它用来把两台网络通信设备连接在一起的东西。
数据链路层:
运行以太网等协议,把数据帧转换成二进制位供物理层处理。MAC地址、交换机或者网卡和驱动程序等都属于数据链路层的范畴。
网络层:
选择合适的网间路由和交换结点, 确保数据及时传送,将数据链路层提供的帧组成数据包,其中数据包中包含源站点和目的站点地址。IP、路由协议、地址解析协议都属于网络层的范畴。
传输层:
提供端对端的通信管理。TCP、UDP等就属于传输层的范畴。
会话层:
提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。
表示层:
提供格式化的表示和转换数据服务,数据的解压缩、加解密一般都是由该层完成。
应用层:
各种应用程序协议,例如HTTP、FTP、SMTP、DNS等都属于应用层的范畴。
如图
IP协议
IP协议在OSI中属于网络层的范畴,通过IP协议可以把物理网络连接起来,使其对外看起来好像是一个统一的整体。
IP是TCP/IP协议族中的核心,TCP、UDP等都是以IP数据包格式传输;IP数据包传输服务具有不可靠性、无连接性(无状态)。
UDP协议
UDP协议在OSI中属于传输层的范畴,它是无连接、没有拥塞控制,尽最大可能交付的通信,它支持一对一、一对多、多对一、多对多的通信。
UDP是不可靠协议,不支持超时重传、出错重传等功能。
TCP协议
TCP协议在OSI中也属于传输层的范畴,它提供面向连接、可靠的字节流服务。
TCP的三次握手:
1、 当服务端处于监听状态时,客户端向服务端发送连接请求报文:SYN=1,ACK=0,选择一个初始的序号x,完成第一次握手;
2、 服务端收到连接请求的报文,若同意连接,则向客户端发送连接确认报文:SYN=1,ACK=1,确认号为x+1,并选择一个初始的序号y,完成第二次握手;
3、 客户端收到服务端的连接确认报文后,客户端继续向服务端发出确认报文:确认号y+1,序号x+1,完成第三次握手,到此开始进行传输。
TCP的四次挥手:
1、 客户端发出连接释放报文,并且停止发送数据;
2、 服务端接收到释放报文,并发出确认报文,此时TCP处于半关闭状态,服务端能想客户端发送消息,客户端不能向服务端发送消息;
3、 客户端接收到服务端的确认报文后,等待服务端发送连接释放报文,当服务器把最后的数据发送完成后开始发送完成后开始发送连接释放报文,当客户端接收到连接释放报文后;
4、 客户端接收到服务端发送的连接释放报文后,向服务端发出确认报文,并设置计时器等待2倍的最长报文寿命,等再次收到服务端发送过来的fin命令后关闭连接,服务端接收到客户端的确认后,立即进入关闭状态。
TCP/IP协议族
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
1、在TCP/IP协议族中,将osi的应用层、表示层、会话层合并为应用层一个层次。
2、数据链路层和物理层归并在网络接口层。
常见面试题
1、TCP三次握手的原因:
防止失效的连接请求到达服务器后,服务器重复打开链接。
例如,因为网络原因导致第一次链接请求在网络中滞留,然后客户端又发送了一次连接请求,此时,如果没有三次握手机制,服务器就会打开两条链接。
2、为什么连接的时候是三次握手,关闭的时候却是四次握手?
在连接时,当服务端接收到连接的报文时,服务端可以将应答报文和同步报文同时发送给客户端,但是当服务端接收到关闭的报文时,服务端有可能还有数据没有发送完成,因此服务端只能将应答报文先返回,等数据发送完成后再发送FIN报文。
3、四次挥手的原因
a、 确保服务端能把所有数据发送完成
4、TCP协议如何保证数据不被丢失?
当发送数据报被丢弃时,网络层的ICMP协议会把错误信息反馈给TCP, TCP解析后会进行数据重传。
5、为什么ICMP会把数据报异返回给TCP而不是UDP?
TCP的首部长度为20个字节,而UDP的首部长度为8字节,多的12个字节中有4个字节保存的是32位的ICMP信息,而ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成。
6、为什么tcp要经过三次握手四次挥手?
答案参考1、3
参考资料:
TCP、UDP、IP详解:https://blog.****.net/zpoison/article/details/86528327
TCP的三次握手与四次挥手理解及面试题(很全面):
https://blog.****.net/qq_38950316/article/details/81087809
百度百科:
https://baike.baidu.com/item/TCP%2FIP%E5%8D%8F%E8%AE%AE/212915?fromtitle=tcp%2Fip&fromid=214077
微信公众号 关注我,看到更多