共计 1249 个字符,预计需要花费 4 分钟才能阅读完成。
TCP 实现原理和为什么须要三次握手? 两次握手不能够? 四次握手不能够?
1. 什么是 TCP 协定?
- TCP:Transmission Control Protocol 翻译过去就是传输控制协议,TCP 协定是一个面向连贯的、牢靠的、基于字节流的传输层协定
-
RFC 793 对 TCP 连贯的定义
Connections:
The reliability and flow control mechanisms described above require that TCPs initialize and maintain certain
status information for each data stream.
The combination of this information, including sockets, sequence numbers, and window sizes, is called a
connection.
其大抵意思是 TCP 连贯是为了用于保障可靠性和流控制机制的, 包含 Socket、序列号及窗口大小。
2. TCP 协定的个性
- 面向连贯:是指 TCP 是通过服务端和客户端进行连贯的协定
- 面向字节流:TCP 服务端和客户端之间的数据通讯是通过字节流数据传输的
- 牢靠的:是指 TCP 服务端客户端之间的数据传输是很稳固的, 即便网络很差的状况,TCP 都能保障将数据传输到接管方。
3. TCP 三次握手执行流程
关键字阐明:SYN:Synchronize Sequence Numbers, 同步序列编号
ACK:Acknowledge Character, 确认字符
SEQ:Sequence Number, 序列号
TCP 三次握手执行过程:
- 首先, 服务端和客户端都是处于 CLOSED 状态的, 而后服务端启动, 监听端口, 状态变为 LISTEN(监听) 状态
- 客户端为了申请资源, 发送连贯, 发送同步序列号 SYN, 此时客户端就变成了 SYN-SEND 状态
- 服务端接管到客户端申请之后, 发送 SYN 和 ACK, 而后服务端状态就变成 SYN-RCVD 状态
- 客户端接管到信息之后, 再次发送 ACK, 而后变成 ESTABLISHED(已确认) 状态, 服务端接管到返回信息后, 状态也变成 ESTABLISHED(已确认) 状态
TCP 协定为什么须要三次握手?
-
RFC 793 Transmission Control Protocol 里就有指出为什么要三次握手的起因
The principle reason for the three-way handshake is to prevent old duplicate connection initiations from causing confusion.
翻译为中文大抵意思是次要起因是为了避免旧的反复连贯引起连贯凌乱问题
设计成三次握手的状况, 客户端在接管到服务端 SEQ+ 1 的返回音讯之后, 就会晓得这个连贯是历史连贯, 所以会发送报文给服务端, 通知服务端。
TCP 设计成三次握手的目标就是为了防止反复连贯
设计成四次握手? 五次握手? 不能够?
能够的, 不过为了节俭资源, 三次握手就能够符合实际状况, 所以就没必要设计成四次握手、五次握手等等状况
原文连贯