TCP机制简介

1.报文格式

一个TCP报文分为首部和数据两部分,TCP的全部功能都体现在它首部中各字段的作用,只有弄清TCP首部各字段的作用才能掌握TCP的工作原理

源端口和目的端口:各占两个字节,分别表示数据包源端口和目的端口,由此可知,端口号的范围是0-65535

序号和确认号:分别是TCP的发送序号和用于确认已收到的字段,服务端应该发送的下一序号。

数据偏移:指TCP报文段的数据起始处距离TCP报文段起始处有多远。

控制位:共有6位,分别是URGACKPSHRSTSYNFIN,分别标识紧急、确认、推送、复位、同步、终止。

窗口:窗口值作为接收方让发送方设置其发送窗口的依据。

校验和:检验范围范围包括首部和数据这两部分。

紧急指针:当URG=1时才有意义,指出本报文段中紧急数据的字节数。

选项:长度可变,最长可达40字节。当没有使用选项时,TCP的首部长度是20字节。

TCP最初只规定了一种选项,及最大报文段长度MSSMSS是每一个TCP报文段中的数据字段的最大长度。数据字段加上TCP首部长度才等于整个的TCP报文段,所以MSS并不是整个TCP报文段的最大长度,而是“TCP报文段长度减去TCP首部长度”。

2.序列号与确认应答

序列号:序列号是按顺序给发送数据的每一个字节(8位字节)都标上号码的编号

确认应答:接收端查询接收数据TCP首部中的序列号和数据的长度,将自己下一步应该接收的序号作为确认应答返送回去

通过序列号和确认应答号,TCP实现可靠传输。

3.超时重发

TCP的重发机制分为多种情况,一是数据包丢失的情况,和确认应答丢失的情况

确认应答丢失的情况

在重发数据之前,等待确认应答到来的特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。确认应答在这个时间内一定能够返回。这个时间随着不同的网络环境质量而变化。

4.重发机制

TCP以一个段为单位,每发一个段进行一次确认应答的处理,这样的传输方式有一个缺点,包的往返时间越长通信性能就越低。引入了窗口的概念,确认应答不再是以每个分段,而是以更大单位进行确认。

这个机制使用了大量的缓冲区,通过对多个段同时进行确认应答的功能。在这个窗口内的数据即便没有收到确认应答也可以被发送出去。不过,在整个窗口的确认应答没有到达之前,如果其中部分数据出现丢包,那么发送端仍然要负责重传。为此,发送端主机得设置缓存保留这些待被重传得数据,直到收到它们的确认应答。

5.窗口机制(重发机制)

前面已经说过,重发的情况分为两种确认应答丢失和数据包丢失。某些确认应答即便丢失也无需重发,可以通过下一个确认应答进行确认,但是如果数据包丢失,则需要进行重发,如图示。

6.窗口机制(流控制)

窗口的大小是由接收端控制的,接收端向发送端主机通知自己可以接收数据的大小,于是发送端发送不超过这个限度的数据。由于接收端主机的缓存区是不断变化的,所以窗口大小也在不断进行变化,这就是流控制。

7.窗口机制(拥塞控制)

一般来说,互联网中可能拥有大量的数据传输,发送端主机需要控制发送的数据量以满足不同的网络状况,进行拥塞控制。并且,如果在通信开始时就发送大量数据,可能导致网络瘫痪,所以引入慢启动,将拥塞窗口设为1,通过确认应答来增加拥塞窗口的大小。滑动窗口的大小就是由拥塞窗口和接收端通知的窗口大小决定,按照当中较小的的值,发送比其还要小的数据量。

8.校验和计算

TCP首部校验和计算三部分:TCP首部、TCP数据、TCP伪首部。

同理UDP也是计算首部,数据和伪首部,算法相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值