TCP协议详解

本文详细介绍了TCP协议的概念、头部结构、字段解析,以及TCP的流量控制(滑动窗口协议)和拥塞控制机制,包括慢启动、拥塞避免、快速重传和快速恢复。通过实例分析了TCP如何处理数据传输和重传策略,以确保数据的可靠性和网络的效率。
摘要由CSDN通过智能技术生成

一、TCP概念

TCP(Transmission Control Protocol传输控制协议)是一种面向连接(连接导向)的,可靠的,基于IP的传输层协议

首先来看看OSI的七层模型

我们需要知道TCP工作在网络OSI的七层模型中的第四层——传输层,IP在第三层——网络层,ARP 在第二层——数据链路层;同时,我们需要简单的知道,数据从应用层发下来,会在每一层都会加上头部信息,进行 封装,然后再发送到数据接收端。这个基本的流程你需要知道,就是每个数据都会经过数据的封装和解封 装的过程。

在OSI七层模型中,每一层的作用和对应的协议如下:

二、TCP头部结构和字段介绍

     从上面图片可以看出,TCP协议是封装在IP数据包中。

下图是TCP报文数据格式。TCP首部如果不计选项和填充字段,它通常是20个字节。

 下面分别对其中的字段进行介绍:

源端口和目的端口

     各占2个字节,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。有时一个IP地址和一个端口号也称为socket(插口)。

序号(seq)

     占4个字节,是本报文段所发送的数据项目组第一个字节的序号。在TCP传送的数据流中,每一个字节都有一个序号。例如,一报文段的序号为300,而且数据共100字节,

则下一个报文段的序号就是400;序号是32bit的无符号数,序号到达2^32-1后从0开始。

确认序号(ack)

     占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号;确认序号应该是上次已成功收到数据字节序号+1。

只有ACK标志为1时,确认序号才有效。

数据偏移

      占4比特,表示数据开始的地方离TCP段的起始处有多远。实际上就是TCP段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。数据偏移以32位为长度单位,

也就是4个字节,因此TCP首部的最大长度是60个字节。即偏移最大为15个长度单位=1532位=154字节。

保留

     6比特,供以后应用,现在置为0。

6个标志位比特

① URG:当URG=1时,注解此报文应尽快传送,而不要按本来的列队次序来传送。与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值