1、简述TCP/IP的三次握手和四次挥手
TCP(Transmission Control Protocol)是一种可靠的、面向连接的传输层协议,用于在网络中传输数据。在建立连接和断开连接时,TCP 使用了三次握手和四次挥手来确保通信的可靠性和正确性。
三次握手(Three-Way Handshake)
三次握手是在建立 TCP 连接时使用的过程。它确保了双方的通信端点都能够收发数据。以下是三次握手的详细过程:
客户端向服务器发送连接请求(SYN): 客户端首先发送一个包含 SYN(同步序列号)标志的数据包到服务器,表示客户端要求建立连接,并选择一个初始序列号(ISN)作为起始点。
服务器收到连接请求并回应(SYN + ACK): 服务器收到客户端的连接请求后,会发送一个包含 SYN 和 ACK(确认)标志的数据包给客户端。SYN 表示服务器接受了客户端的连接请求,ACK 表示服务器已经收到了客户端的 SYN,同时也选择了一个自己的初始序列号。
客户端收到确认并回应(ACK): 客户端收到服务器的确认后,会发送一个 ACK 数据包给服务器,表示客户端已经收到了服务器的确认,此时连接已经建立完成,可以开始数据传输。
四次挥手(Four-Way Handshake)
四次挥手是在断开 TCP 连接时使用的过程。它确保了双方都能够正确地结束通信,并释放连接资源。以下是四次挥手的详细过程:
客户端发送断开连接请求(FIN): 当客户端希望断开连接时,它会发送一个包含 FIN(结束)标志的数据包给服务器,表示客户端不再发送数据了,但仍然愿意接收数据。
服务器收到断开请求并回应(ACK): 服务器收到客户端的断开请求后,会发送一个 ACK 数据包给客户端,确认收到了客户端的断开请求。
服务器发送断开连接请求(FIN): 服务器在准备断开连接时,会发送一个包含 FIN 标志的数据包给客户端,表示服务器不再发送数据了,但仍然愿意接收数据。
客户端收到断开请求并回应(ACK): 客户端收到服务器的断开请求后,会发送一个 ACK 数据包给服务器,确认收到了服务器的断开请求。此时,连接已经关闭,双方都不再发送数据,可以释放连接资源。
2、简述进程和线程的区别
3、简述文件IO和标准IO的区别
4、简述TCP和UDP的异同点
相同点:
都是传输层协议,用于在网络中传输数据。
都使用 IP 协议作为网络层协议来实现数据包的传输。
都是面向数据报的协议,即数据以数据包的形式传输。
不同点:
连接方式:TCP 是面向连接的协议,通信双方在传输数据之前需要先建立连接,然后再进行数据传输,传输完成后关闭连接;而 UDP 是无连接的协议,通信双方不需要建立连接,可以直接进行数据传输。
可靠性:TCP 提供可靠的数据传输,保证数据的顺序性和完整性,通过重传机制和确认机制来实现;而 UDP 不保证数据的可靠性,数据可能丢失或乱序,并且不提供重传和确认机制。
传输效率:由于 TCP 提供了可靠性保证,所以在数据传输过程中会有较多的控制信息,导致额外的开销和延迟,传输效率相对较低;而 UDP 没有额外的控制信息,传输效率较高。
应用场景:TCP 适用于对数据可靠性要求较高的场景,如文件传输、网页访问等;而 UDP 适用于对传输延迟要求较高、数据可靠性要求较低的场景,如视频直播、在线游戏等。