TCP/IP网络协议
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。
下图就是TCP协议的格式。
名词解释:
名词 | 数据大小 | 功能 |
32位序号(seq) | 占4字节 | 本报文段所发送的数据项目组第一个字节的序号 |
32位确认序号(ack) | 占4字节 | 期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号;确认序号应该是上次已成功收到数据字节序号+1 |
4位首部长度 | 占4比特 | 表示数据开始的地方离TCP段的起始处有多远。实际上就是TCP段首部的长度。由于首部长度不固定,因此数据偏移字段是必要的。数据偏移以32位为长度单位 |
保留(6位) | 6比特 | 供以后应用,现在置为0 |
URG |
当URG=1时,注解此报文应尽快传送,而不要按本来的列队次序来传送。与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接管方可以知道紧急数据共有多长。 |
|
ACK | 只有当ACK=1时,确认序号字段才有效 | |
PSH | 当PSH=1时,接收方应该尽快将本报文段立即传送给其应用层 | |
RST | 当RST=1时,表示出现连接错误,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接 | |
SYN | SYN=1,ACK=0时表示请求建立一个连接,携带SYN标志的TCP报文段为同步报文段 | |
FIN | 发端完成发送任务。 | |
16为位窗口大小 |
TCP通过滑动窗口的概念来进行流量控制。设想在发送端发送数据的速度很快而接收端接收速度却很慢的情况下,为了保证数据不丢失,显然需要进行流量控制, 协调好 通信双方的工作节奏。所谓滑动窗口,可以理解成接收端所能提供的缓冲区大小。TCP利用一个滑动的窗口来告诉发送端对它所发送的数据能提供多大的缓 冲区。窗口大小为 字节数起始于确认序号字段指明的值(这个值是接收端正期望接收的字节) |
|
16位校验和 | 检验和覆盖了整个TCP报文段:TCP首部和数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证 | |
16位紧急指针 | 只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。 |