计算机网络学习(3)
TCP 协议
TCP 提供可靠的、面向连接的服务:
-
在传送数据之前必须先建立连接,数据传送结束后要释放连接。传输过程中会校验数据并返回确认,保证可靠性。
-
一般用于文件传输、发送和接收邮件、远程登录等场景。
TCP 连接
建立连接
建立 TCP 协议采用了三次握手策略:SYN 是 TCP/IP 建立连接时使用的握手信号,接收者到后以 ACK 信号响应(序号加一)。
- 客户端向服务端 发送带有 SYN 标志的数据包(客户端请求连接)
- 服务端向客户端 发送带有 SYN/ACK 标志的数据包(客户端可以正常发送消息)
- 客户端向服务端 发送带有带有 ACK 标志的数据包(服务端可以正常发送消息,连接建立)
断开连接
断开 TCP 连接采用了四次挥手策略:FIN 是 TCP/IP 断开连接时使用的终止信号,接收者到后以 ACK 信号响应(序号加一)。
- 客户端向服务端 发送带有 FIN 标志的数据包(客户端请求终止)
- 服务器向客户端 发送带有 ACK 标志的数据包(客户端不再发送消息,连接半关闭)
- 服务器向客户端 发送带有 FIN 标志的数据包(服务端请求终止)
- 客户端向服务端 发送带有 ACK 标志的数据包(服务端不再发送消息,连接关闭)
TCP 可靠传输
编号和校验和
- 编号
发送方将应用报文分割成 TCP 报文段后,会为每一个报文段进行编号。由接收方对数据包进行排序,再把有序数据传送给应用层。
如果收到重复报文段,直接丢弃。
- 校验和
发送方会计算 TCP 报文段全部数据的检验和,并保存在报文段首部。由接收方对数据包数据进行检验。
如果收到错误报文段,丢弃报文段,并返回错误消息等待重发。
IP 协议校验和只校验首部, TCP 协议校验全部数据。
ARQ 协议
(自动重传请求)发送方发送报文段后,会等待接收方 ACK。如果接收到错误消息或等待超时,将重发这个报文段。用来实现可靠传输。
现在一般使用连续 ARQ 协议:维持一个发送窗口,可以连续发送出去多个报文段而不需要等待对方确认。接收方对按序到达的最后一个报文段发送确认,即表明之前的所有报文段都已经正确收到。提高信道利用率。
如果发送方连续发送了 5 条消息,其中 3 号消息丢失。接收方只会对前两个消息发送确认。发送方必须对后三条消息全部重传。
流量控制和阻塞控制
-
流量控制:减少数据发送,防止接收方过载导致数据无法处理。
-
拥塞控制: 减少数据发送,防止网络阻塞导致数据无法到达。
发送方允许连续发送的分组上限受以上两个因素制约,即 发送窗口 = min (接收窗口, 阻塞窗口)
。
-
接收窗口大小由 接收方返回的确认报文中的窗口字段设定。
-
拥塞窗口大小根据网络的拥塞程度动态变化,TCP 拥塞窗口变化采取了慢开始、拥塞避免、快重传 和 快恢复 四种策略。
- 点赞
- 收藏
- 关注作者
评论(0)