首页 > 代码库 > TCP/IP详解 笔记十三

TCP/IP详解 笔记十三

TCP协议(一) 概述

 

特点

1,  面向连接可靠的字节流服务

2,  只有两方通信,不能用于广播或多播

3,  应用数据被TCP分隔为最合适发送的数据段,传给IP协议栈

4,  发送端并启动定时器,超时重传

5,  接收端需要发送确认

6,  检验和错误的数据包将被丢弃,并不确认收到此数据包(希望超时重传)

7,  重新排序,因为TCP数据包是IP报文的数据,而ip协议不保证数据按顺序到达,所以需要重新排序。

8,  同理,ip包会发生重复,所以TCP需要排重。

9,  流控制,TCP的每一方有固定大小的缓冲空间,接收端只允许发送端发送能容纳的数据。

10, 提供全双工服务。

 

字节流服务

技术分享

 

TCP报文结构

 

技术分享

技术分享

字段解释:

插口对:IP头部的ip+tcp头部的端口唯一确定一个应用程序,而相对的插口称为插口对唯一确定tcp双方。

序号:标识发端向收端发送的数据字节流,表示这个报文中的第一个数据字节。序号对每个字节计数,序号为32bit无符号数据,到达232-1 回到0

SYN:当建立一个新的连接的时候SYN变为1,此时序号字段包含主机选择的初始序号ISN(Initial Squence Number),该主机发送的第一个字节序号为ISN+1。

确认序号:等于上次已经成功收到的字节序号加1,只有ACK标识为1时确认序号才有效。连接一旦建立确认序号总是被设置。

因为TCP提供全双工的服务,所以连接的每一方必须保存传输数据序号。

TCP可以表述为一个没有选择确认和否认的滑动窗口协议,收到数据包后不能确定或否定该数据包的对与错,而只是回复相应的确认序号。

首部长度:给出首部32bit字的数目,为4bit所以,首部长度最长为60字节,不加选项为20字节。存在这个字段的原因是选项长度是可变的。

标识位:

 

技术分享

滑动窗口大小:TCP的流量控制由连接双方声明窗口大小提供,窗口大小的单位为字节,起始于确认序号指定的值,窗口大小字段为16bit,所以窗口最大为65535字节。

校验和:覆盖首部和数据,强制性字段,由发端计算和存储,由接收端校验。

紧急指针:当URG为1时才有效,是一个正的偏移量,和序号相加表示紧急数据最后一个字节的序号。

选项:最常见的选项是最大报文大小MSS(Maximum Segment Size).

 

TCP/IP详解 笔记十三