应⽤层
应用层是网络协议栈中的最顶层,主要负责应用程序之间的通信。其中一种常见的应用层协议是HTTP协议,它定义了应用程序之间如何传递报文。
传输层
传输层是为两台主机之间的应用进程提供端到端的逻辑通信的层级。其中一种常见的传输层协议是TCP协议,它负责可靠的数据传输。
⽹络互连层
网络互连层负责主机之间的通信,它将传输层产生的数据包封装成分组数据包,并通过路由选择将其发送到目标主机。IP协议是网络互连层的主要协议,TCP和UDP协议都使用IP协议作为网络层协议。该层的主要作用是为数据包添加源地址和目标地址,并将数据包传送到目标地址。
⽹络访问层
网络访问层,也称为网络接口层,负责主机连接到物理网络所需的硬件和相关协议。以太网、Wi-Fi和蓝牙工作在这一层。网络访问层提供了主机与物理网络之间的接口。
TCP的三次握手是为了建立可靠的连接,确保通信双方都能够正常发送和接收数据。下面是三次握手的过程:
通过三次握手,双方确认了彼此的收发能力和初始序列号,并建立了可靠的连接。为什么是三次握手而不是两次或四次呢?
如果只有两次握手,那么在某些情况下可能会导致不可靠的连接建立。例如,客户端发送了一个建立连接的请求,但由于网络延迟或其他原因,该请求在传输过程中被延迟到达服务器。服务器此时会误认为客户端要建立连接,于是发送确认响应。然而,客户端并未发送过请求,因此不会回复确认。这样就会导致服务器一直等待客户端的回复,浪费资源。
通过引入第三次握手,可以解决上述问题。在第一次握手时,客户端发出建立连接的请求,服务器接收到后进行响应。但是如果响应丢失了,客户端会再次发送请求,即第二次握手。服务器接收到后再次响应,这样就确保了双方都能正确地建立连接。
至于为什么不是四次握手,主要是因为虽然四次握手也可以实现可靠地同步双方的初始序列号,但由于第二步和第三步可以合并为一步,所以最终演变成了三次握手。而两次握手只能保证一方的初始序列号被对方成功接收,无法保证双方的初始序列号都能被确认接收。因此,三次握手是为了确保TCP连接的稳定性和可靠性而采取的最佳选择。
TCP的四次挥手是为了结束已建立的连接,确保双方都能正确地关闭连接并释放资源。下面是四次挥手的过程:
通过四次挥手,双方确认彼此的结束请求,并最终关闭连接。为什么是四次挥手而不是三次?
在关闭连接时,需要确保双方都完成了数据的传输和接收,以防止数据丢失或错误。如果只有三次挥手,可能会导致一些问题。
假设只有三次挥手,当客户端发送结束请求后,服务器收到后会发送确认,表示已收到客户端的结束请求。但是在此过程中,服务器可能还有未发送完的数据,如果直接关闭连接,那么这些数据就会丢失。因此,引入第三次挥手,服务器在发送结束请求前,先发送所有未发送完的数据,并等待客户端的确认。客户端接收到服务器的结束请求后,会确认并处理完未接收的数据,然后发送确认,表示自己已准备好关闭连接。
通过四次挥手,可以确保双方都能正确地结束连接,并处理未发送和未接收的数据,保证数据的完整性和可靠性。因此,关闭连接需要四次挥手。
分层结构具有多个优点。首先,每个层次都是相对独立的,这意味着可以在不影响其他层次的情况下进行修改和更新。其次,分层结构具有更好的灵活性,可以根据需要添加、删除或调整层次。第三,由于各层次之间的明确接口,易于测试和维护。最后,分层结构有助于促进标准化,因为每个层次的功能和接口都可以被规范化和标准化。
TCP协议中的三次握手用于建立可靠的连接。通过三次握手,客户端和服务器可以确认对方的可靠性和可用性,并同意建立连接。而四次挥手的设计则旨在确保连接可以正确关闭。在四次挥手过程中,双方通信结束前,首先向对方发送关闭连接的请求,然后等待对方确认关闭请求,最后确认对方关闭请求并关闭连接。这两个过程是TCP协议中非常重要的部分。
以上只是一篇关于TCP协议的面试文章的一小部分内容。后续将会提供更多有针对性的面试题,以深入探讨TCP协议的相关细节。
我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。