(6)TCP的三次连接与四次挥手

TCP通过面向有连接的通信传输
面向有连接指的是数据通信之前先做好两端之间的准备工作
UDP是一种面向无连接的通信协议,不检查对端是否可以通信,直接将UDP包发送出去
TCP在发送数据通信之前,通过TCP首部发送一个SYN包作为连接的请求等待确认应答
如果对法发来确认应答,则认为可以进行数据通信
如果对端的确认应答没有反送回来,则就不会进行数据通信
除此之外,在通信结束的时候会进行断开连接的处理(FIN包)
可以使用TCP首部用于控制的字段来管理TCP连接
一个连接的建立与断开,正常的过程至少需要来回发送7个包才能完成
建立一个TCP连接需要发送三个包,也叫做TCP建立连接时的三次握手

1.TCP连接的建立与断开

在这里插入图片描述

2.TCP以字段为单位发送数据

在建立TCP连接的同时,也可以确定发送数据包的单位,叫做最大消息长度(MSS)
理想的情况是,最大消息长度是IP中不会被分片处理的最大数据长度
TCP在传输大量的数据时,是以MSS的大小将数据进行分割发送,进行重发的时候也是以MSS为单位
MSS是在三次握手的时候,在两端主机之间计算得出
两端的主机在发送连接请求的时候,会在TCP的首部写入MSS选项
告诉对方自己的接口能够适应MSS的大小然后会在二者之间选择一个较小的值来投入使用
通过建立连接的SYN包相互通知对方网络接口的MSS值
在二者之间选择一个较小的作为MSS值,发送数据

3.利用窗口控制提高速度(滑动窗口机制)

TCP以1个段(MSS)为单位,每发一个段进行一次确认应答的处理
缺点:包的往返时间越长通信性能越低(可靠性上升的同时有效性下降)
为每个数据包进行确认应答会造成网络的吞吐量变差
为了解决这个问题,TCP引入了窗口的概念
即使在往返时间较长的情况下,也能控制网络性能的下降
使用滑动窗口的方式进行并行处理
确认应答不再是以每个分段进行,而是以更大的单位进行确认,转发时间将会被大幅度缩短
发送端主机发送了一个段以后没有必要等待确认应答,而是继续发送
窗口的大小指的是无需等待确认应答而可以继续发送数据的最大值,一般窗口大小为4个字段
这个机制使用了大量的缓冲区(buffer,临时保存收发数据的场所,是在计算机内存中开辟的一片空间)
对多个段同时进行确认应答
在滑动窗口内的数据即使没有收到确认应答依然可以被发送出去
在没有收到确认应答之前,如果窗口内的数据出现丢失,那么发送端就要进行重传
因此要将数据缓存起来,知道确认应答的到来
滑动窗口以外的数据如果发送和接收正常,那么缓冲区的数据就会被清除
收到确认应答的时候,就将窗口滑动到确认应答中序列号的位置,这样可以按顺序将多个段同时发送提高通信性能

4.窗口控制与重发控制

确认应答丢失的情况
之前确认应答丢失之后,数据没有丢失也要重发
现在使用窗口控制,某些确认应答丢失之后,不需要重发,因为可以通过下一个确认应答确认
报文段丢失的情况
如果接收主机收到一个自己应该接收的序列号之外的数据时,会针对当前为止收到的数据返回确认应答
如果不连续也不会丢弃,而是放在缓冲区里面
此时同一个序列的确认应答将会被一直发送,比如:我要的是1001开始的数据
如果发送端主机3次收到同一个确认应答,将会进行重发
以上也叫做高速重发控制

5.流控制

TCP提供一种机制让发送端根据接收端的实际接收能力控制发送的数据量
接收端主机告诉发送端主机自己最大能接收的数据量,这样发送端就会按规则发,这个数据量的限制叫做窗口大小
在TCP首部,专门有一个字段用来通知窗口大小
接收主机将自己可以接收的缓冲区大小放入这个字段中告诉发送端
这个值越大,说明网络的吞吐量越高
当缓冲区溢出的时候,窗口大小调整为更小得值告诉发送端,进而控制数据发送量
这就是TCP流控制(流量控制)
为了防止窗口的更新通知在传输的途中丢失,因此发送端要不断发送一个窗口探测的数据段

6.拥塞控制

TCP窗口控制的存在,使得收发主机之间即使不再以一个数据段进行确认一个大也能够发送大量的数据包
计算机网络一般都处于一个共享的环境,为了防止网络瘫痪
TCP一开始就使用一个慢启动算法来对发送数据量进行控制
在发送端调节所要发送的数据量,定义一个拥塞窗口
每发送一个,拥塞窗口值加1,此时与接收端的窗口大小进行比较,选一个最小的出来进行发送
可以防止连续发包导致的网络拥堵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值