TCP协议

来源:互联网 发布:草木知旧阅读题答案 编辑:程序博客网 时间:2024/05/16 01:00

一 、TCP是面向连接的、可靠的字节流服务。
(1)TCP的可靠性:
1. TCP将应用数据被分割成它认为最适合发送的数据块;
2. TCP发出一个报文段后,启动一个计时器,等待目的端确认;
3. TCP收到数据后,将发送一个确认。通常推迟几分之一秒;
4. TCP将保持它首部和数据的检验和;
5. TCP可将失序到达的数据进行重新排序,并顺序交给应用层;
6. TCP可将重复数据报丢弃;
7. TCP可提供流量控制;
(2)TCP的首部:
TCP首部格式

  1. 源端口和目的端口:各占两个字节。

  2. 序号:4个字节。共2的32次方个序号。TCP连接中传送的字节流中的每一个字节都按顺序编号。此处的序号字段指的是本报文段所发送的数据第一个字节的序号。例如,一报文段的序号字段的值是301,而携带的数据共有100字节。这就表明:本报文段的数据的最后一个字节的序号应是400。我们还可以看到,下一个报文段的数据序号应当从401开始,因而下一个报文段的的序号字段值应为401。
    例:
    A发送的TCP数据报:序号=301,确认号=701,数据长度=100
    B发送的TCP数据报:序号=701,确认号=401,数据长度=100
    A发送的TCP数据报:序号=401,确认号=801,数据长度=100

  3. 保留 6位。保留为以后使用。都是0.

  4. 紧急URG 当此处为1时,表明紧急指针字段有效。它告诉系统此报文段有紧急数据,需要尽快传送。系统会把紧急数据插入TCP缓存的最前面。它和紧急指针字段配合使用。

  5. 确认ACK:当ACK=1时,确认号字段才有效。当ACK=0时确认号无效。当连接建立前ACK=0,建立之后ACK就一直是1了。

  6. 推送PSH。当PSH=1时,系统会立即将此报文段发送出去,而不再等待整个缓存都被填满后才向上交付。

  7. 复位RST。当其为1,时,表明TCP出现严重错误,必须释放连接然后再重新建立连。

  8. 同步SYN:在连接建立时用来同步序号。当其为1而ACK=0时,表明这是一个(同步)连接请求报文段。当对方同意后,应在响应报文段中使用SYN=1,ACK=1。因此SYN=1,要么表示连接请求要么表示连接接受报文。

  9. 终止FIN:用来释放连接。当其为1时,表明此报文段的发送方的数据已经发送完毕,要求释放连接。

  10. 窗口:2字节。窗口指发送方的接收窗口。它告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。之所以有此限制是因为接收方的数据缓存空间是有限的。它指出现在允许对方发送数据量。由于接收缓存不断变化,因此窗口值也不断变化。

  11. 检验和:2字节。检验和检验 的是首部和数据这两部分。在计算时还应加上12字节的伪首部。

  12. 紧急指针:2字节,此字段只在紧急URG=1时才有意义。它指出本报文段中紧急数据的字节数。由于紧急数据放在了缓冲区最前方,紧急指针指出的是紧急数据的末尾在报文段的位置。当所有的紧急数据都处理完后,TCP 就告诉应用程序恢复正常操作。

  13. 选项:长度可变,最长可达40字节。当没有选项时,首部长度时。

(3)TCP的可靠传输:
1.以字节为单位的滑动窗口控制。发送窗口有三个状态指针,
P3-P1=发送窗口,P3-P2=允许发送但尚未发送,P2-P1=已发送但未收到确认。
2.通过超时重传控制。使用karn算法计算超时重传时间。
3.选择确认SACK。使用32字节指明4个字节块,1个字节指明是SACK选项,1个字节指明这个选项需要占用多少字节。

(4)TCP的流量控制:
1.利用滑动窗口实现控制。通过TCP的窗口字段,通知发送方发送窗口适当减小。

(5)TCP的拥塞控制:
1. 慢开始。发送方让自己的发送窗口等于拥塞窗口,拥塞窗口开始从1逐渐增大,每经过一个传输轮次,拥塞窗口cwnd加倍。达到慢开始门限ssthresh后,使用拥塞避免算法。
2. 拥塞避免。每经过一个传输轮次,拥塞窗口加1,使其线性增长。
(只要出现超时,拥塞窗口为1,门限值变为当前值的一半)
3. 快重传。当X报文段丢失,接收方应及时发送X-1报文段的重复确认。发送方只要一连收到三个重复确认,就应当立即重传对方尚未收到的X报文段。
4. 快恢复。与快重传配合使用,当发送方连续收到3个重复确认时,将cwnd置为慢开始门限值的一半,然后使用拥塞避免算法。

0 0
原创粉丝点击