TCP概要总结

1. 定义

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。

当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS: Maximum Segment Size)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU: Maximum Transmission Unit)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。

TCP的设计目的:
为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。

TCP是传输控制协议,有三个基本特征:

  1. 面向连接
  2. 可靠
  3. 字节流

面向连接
什么是TCP连接?
TCP连接是基于IP协议的一个虚拟连接。是发送端和接收端系统维护的一种状态,在这种状态下,发送端和接收端可以随时相互发送数据。

面向连接协议都有三个阶段:

  1. 建立连接。
  2. 数据传输。
  3. 删除连接。

可靠
1.保证数据送达
TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

2.保证数据正确
在数据正确性与合法性上,TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和;同时可以使用md5认证对数据进行加密。

3.字节流
数据传输格式基于基于字节流。

2. 实现

除了三个基本特性,TCP还提供以下机制来提高数据传输性能
捎带确认机制。
滑动窗口协议。
拥塞控制算法(AIMD策略:Additive Increase Multiplicative Decrease 加性增乘性减)。

捎带确认机制
在计算机通信中,当一个数据帧到达的时候,接收方并不是立即发送一个单独的控制帧,而是抑制一下自己并且开始等待,直到网络层传递给它下一个分组。然后,确认信息被附在往外发送的数据帧上(使用帧头中的ack域)。实际上,确认报文搭了下一个外发数据帧的便车。这种“将确认暂时延迟以便可以钩到下一个外发数据帧”的技术称为捎带确认(piggybacking)。

当主机收到远程主机的TCP数据包之后,通常不马上发送ACK数据包,而是等上一个短暂的时间,如果这段时间里面主机还有发送到远程主机的TCP数据包,那么就把这个ACK数据包“捎带”着发送出去,把本来两个TCP数据包整合成一个发送。一般的,这个时间是200ms。可以明显地看到这个策略可以把TCP数据包的利用率提高很多。

滑动窗口协议
滑动窗口协议(Sliding Window Protocol),属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量。

拥塞控制算法
AIMD策略:简单讲就是,当TCP发送方感受到端到端路径无拥塞时就线性的增加其发送速度,当察觉到路径拥塞时就乘性减小其发送速度。
AIMD策略主要基于公平性和收敛性。

TCP的拥塞控制主要原理:
依赖于一个拥塞窗口(cwnd)来控制,窗口值的大小就代表能够发送出去的但还没有收到ACK的最大数据报文段,显然窗口越大那么数据发送的速度也就越快,但是也有越可能使得网络出现拥塞,如果窗口值为1,那么就简化为一个停等协议,每发送一个数据,都要等到对方的确认才能发送第二个数据包,显然数据传输效率低下。TCP的拥塞控制算法就是要在这两者之间权衡,选取最好的cwnd值,从而使得网络吞吐量最大化且不产生拥塞。

拥塞控制主要包括四个过程:1)慢启动;2)拥塞避免;3)拥塞发生;4)快速恢复。

TCP演进过程中,出现过多种拥塞控制算法,其本质是针对拥塞控制的四个过程做策略调整。按照算法依据的因素,可以简单的分为以下类型:

1、基于丢包的拥塞控制:Tahoe、Reno、New Reno
2、基于时延RTT的带宽预测:vegas
3、基于丢包和RTT:westwood
4、二分搜索最佳cwnd:BIC-TCP
5、连续拥塞间隔:CUBIC
6、基于精准带宽计算:BBR

查看Linux支持的拥塞控制算法
cat /proc/sys/net/ipv4/tcp_allowed_congestion_control
显示为:cubic reno
可通过/sbin/modprobe命令加载新的算法,并通过/etc/sysctl.conf配置设置。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值