序列号是TCP协议的可靠性的保证,三次握手就是交换初始序列号的过程。
TCP为什么叫传输控制协议
先聊个题外话,TCP,全称是Transmission Control Protocol,为什么叫传输控制协议?
根据RFC文档:https://tools.ietf.org/html/rfc793
1.5. Operation
As noted above, the primary purpose of the TCP is to provide reliable,
securable logical circuit or connection service between pairs of
processes. To provide this service on top of a less reliable internet
communication system requires facilities in the following areas:
Basic Data Transfer
Reliability
Flow Control
Multiplexing
Connections
Precedence and Security
The basic operation of the TCP in each of these areas is described in
the following paragraphs.
提到TCP协议需要实现 Flow Control 的特性,Flow Control是什么意思?
Flow Control即流控制。数据在传输过程中容易出现数据丢失的现象,例如:两台计算机通过串口传输数据时,或者台式机与单片机之间进行通信时,可能由于两端计算机的处理速度不同,出现接收端的数据缓冲区已满,而发送端依然继续发送数据的情况,导致数据丢失。流控制的出现就是为了解决这种数据丢失的问题。
TCP对数据传输的控制包括很多方面,包括:确认应答,超时重传,流量控制,拥塞控制等都是对数据流的传输进行控制,从而确保数据传输的可靠性与高效性,使得数据能完整可靠的传输到对端。而像UDP就没有对传输的数据进行任何控制,直接发出去就完事了,不管对方有没有收到,因此UDP协议也极其简单。
网络虚拟世界中的很多模型都来自于物理世界中,只不过网络中传输的是比特流,真实的物理世界中可能运输的是真实的可以摸得着的包裹。
有些问题思考不明白,就想象一下物理世界中的很多场景。
TCP报文格式
TCP报文的标志位
TCP报文的头部有6bit用于存储六个标志位:
- SYN(synchronous 同步标志位,用于建立链接)
- ACK(acknowledgement 确认标志位,用于对发送的数据进行应答确认)
- PSH(push 传送)
- FIN(finish 结束)
- RST(reset 重置)
- URG(urgent 紧急)
六个标志位中常用的是:SYN,ACK,FIN
除了标志位外,TCP报文的头部还有两个区域是开发中常用的:
Sequence number(序列号)
Acknowledge number(确认号)
参考:
理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
TCP三次握手及四次挥手详解及常见面试题
“三次握手,四次挥手”你真的懂吗?
理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
流控制
TCPIP协议叫做传输控制网际协议剖析
tcp 协议为什么叫传输控制协议,控制了什么?
TCP(传输控制协议详解)详解