传输控制协议TCP
作者:互联网
传输控制协议TCP:
- 协议传送单元叫做TCP报文段
- TCP是面向连接的运输层协议
- 每一条TCP连接只能有两个端点,TCP连接只能是点对点的
- 提供可靠传输
- 提供全双工通信,收发两端都有缓存
- 面向字节流
面向字节流的概念:
TCP的连接:
-
TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,
也不是运输层的协议端口 -
TCP连接的端点叫做套接字(socket)或插口
-
每一条TCP连接唯一的被通信两端的两个端点(即两个套接字)所确定
-
TCP连接是一条虚连接而不是一条真正的物理连接
-
TCP根据对方给出的窗口值和当前网络拥塞程度来决定一个报文段包含多少字节
-
TCP可以把太长的数据块划分短一些再传送,也可以等待积累有足够多的字节再构成报文段发送出去
运输连接的三个阶段:连接建立、数据传送、连接释放
连接建立的过程要解决以下三个问题:
-
要使每一方能够确知对方的存在
-
要允许双方协商一些参数(如最大报文段长度、最大窗口大小、服务质量等)
-
能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配
TCP连接建立
- 建立的过程叫做握手
- 握手需要在客户和服务器之间交换三个TCP报文段,称为三报文握手
TCP的连接释放 - 数据传输结束后,通信双方都可以释放连接
- TCP连接释放过程是四报文握手
简述双方进行连接释放的过程:
主机A发送FIN=1的连接释放请求,主机B确认。
主机B发送FIN=1的连接释放请求,主机A确认。
MLS—最长报文寿命:
- 第一,为了保A发送的最后一个ACK报文能够到达B
- 第二,再经过时间2MLS,就可以使本连接持续的时间内所产生的所有报文段,
都从网络中消失
连续ARQ协议:
- 位于发送窗口内的分组都可以连续发送出去,而不需要等待对方的确认
- 发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置
- 接收方一般采用累积确认的方式,就是对按序列到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了
- 优点:容易实现,即使确认丢失也不必重传
- 缺点:不能向发送方反映出接收方已经正确收到所有分组的信息
- Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组
以字节为单位的滑动窗口:
需要强调的三点:
- A的发送窗口并不总是和B的接收窗口一样大(因为有一定的时间滞后)
- TCP 没有规定对不按序到达的数据如何处理,通常是先临时存放在接收窗口中
- TCP要求接收方必须有累积确认的功能,这样可以减小传输开销
需要注意的是接收方不应过分推迟发送确认,否则会导致发送方不必要的重传,浪费网络资源。
流量控制
-
流量控制就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞
-
利用滑动窗口机制可以很方便地在TCP连接上实现流量控制
死锁:B向A发送了零窗口的报文段后不久,B的接收缓存又有了一些存储空间,于是B向A发送了rwnd =400的报文段,但是这个报文段在传送过程中丢失了,A一直等待收到B发送的非零窗口的通知,而B也一直等待A发送的数据。 -
如果没有其他措施,这种互相等待的死锁局面将一直延续下去,为了解决这个问题,TCP为每一个连接设有一个持续计时器。
TCP拥塞控制
控制方法有四种:慢开始、拥塞避免、快重传、快恢复
标签:传输控制协议,报文,TCP,发送,分组,接收,连接 来源: https://blog.csdn.net/sam5203/article/details/110185626