HTTP1.0与HTTP1.1的区别及TCP三次握手、四次挥手解析

版权申诉
0 下载量 3 浏览量 更新于2024-07-21 收藏 727KB PDF 举报
"2020面试题总结——网络篇" 本文主要涵盖了网络领域的两个核心概念:HTTP协议的版本差异和TCP连接的三次握手与四次挥手过程。以下是详细解释: 1. HTTP1.0与HTTP1.1的区别: - **可拓展性**:HTTP1.1增强了协议的可扩展性,允许通过添加新的头部来定义新的功能。 - **缓存控制**:HTTP1.1引入了更精细的缓存机制,使得服务器和客户端能更好地控制资源的缓存策略。 - **带宽优化**:通过分块传输编码,HTTP1.1可以更有效地利用网络带宽,减少数据传输的延迟。 - **长连接**:HTTP1.1支持持久连接(Connect: keep-alive),允许在单个TCP连接上处理多个请求和响应,减少了连接建立和关闭的开销。 - **消息传递**:HTTP1.1引入了管线化,允许同时发送多个请求,提高了效率。 - **Host头域**:允许在同一IP地址上的多台服务器提供多个不同域名的服务。 - **错误提示**:提供了更详细的错误状态码,便于诊断问题。 - **内容协商**:服务器和客户端可以协商决定返回哪种形式的内容,例如根据浏览器的接受类型返回不同的MIME类型。 2. TCP的三次握手与四次挥手: - **三次握手**: - 第一次握手:客户端发送SYN报文(SYN=1, seq=x),进入SYN_SEND状态。 - 第二次握手:服务器响应SYN+ACK报文(SYN=1, ACK=1, seq=y, ACKnum=x+1),进入SYN_RCVD状态。 - 第三次握手:客户端回应ACK报文(ACK=1, ACKnum=y+1),进入ESTABLISHED状态,服务器收到后也进入ESTABLISHED状态,连接建立完成。 - 三次握手是为了防止已失效的连接请求报文导致的错误连接,确保双方都有能力接收和发送数据。 - **四次挥手**: - 第一次挥手:客户端发送FIN报文(FIN=1, seq=a),进入FIN_WAIT_1状态。 - 第二次挥手:服务器回应ACK报文(ACK=1, ACKnum=a+1),进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。 - 第三次挥手:服务器发送FIN报文(FIN=1, seq=b),进入LAST_ACK状态。 - 第四次挥手:客户端收到FIN后发送ACK报文(ACK=1, ACKnum=b+1),进入TIME_WAIT状态,等待一段时间确保服务器收到确认后关闭连接。 - 四次挥手是因为TCP是双向通道,双方都需要单独确认关闭连接,以确保所有数据传输完成,避免数据丢失。 这两个知识点在网络面试中是非常常见的,理解它们对于深入理解互联网通信机制至关重要。在面试中,面试者可能需要详细解释这些过程,并讨论它们在实际网络应用中的作用和意义。