TCP提供了一种可靠的面向连接的字节流运输层服务。
TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据;TCP提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。
许多流行的应用程序如 Telent、Rlogin、 FTP 和 SMTP 都使用TCP。
先上图:
tcp报文段被封装在一个ip数据报中。
每个tcp报文段中都包含源端口号和目的端口号,用来寻找发送和接受端进程,他们的值加上ip数据报中的源ip地址和目的ip地址,唯一确定一个tcp连接。
(1)将源端口号和目的端口号放在前8字节,是因为,一个ICMP差错报文至少返回引起差错的ip数据报的除了前8个字节。当tcp接受到一个ICMP差错报文的时候,她需要检查两个端口确定对应与哪个连接,一次必须包含在前8个字节。
(2)序号用来标识从从tcp发送端到接收端的数据字节流,标识在当前字节流中的第一个字节。当建立一个连接时,序号字段包含当前主机选择的连接初始序列号(ISN),由于每当建立一个连接是,标志为SYN=1,消耗了一个序号,所以此时,序列号加一。
(3)每次接收端接受完一次数据,确认序号段包含发送确认序号端希望下一次接受的序列号。确认序号应当是上一次接受成功的数据字节序号加一。(只有ACK标志为1时,确认字段有效,并且连接一旦建立起来,ACK就被置为了1)。
(4)首部长度给出首部中 32 bit字的数目需要这个值是因为任选字段的长度是可变的。这个字段占4 bit,因此T C P最多有6 0字节的首部。然而,没有任选字段,正常的长度是 2 0字节。
(5)在T C P首部中有 6个标志比特。
U R G 紧急指针(u rgent pointer)有效。
A C K 确认序号有效。
P S H 接收方应该尽快将这个报文段交给应用层。
R S T 重建连接。
S Y N 同步序号用来发起一个连接。
F I N 发端完成发送任务
(6)tcp的流量控制室由连接的每一段声明的窗口大小控制的,大小是16bit的字段,因此最大为65535字节,窗口的大小正是接收端期望接受的字节大小。
(7)校验和是覆盖整个tcp报文段的,包括头部和数据段,是强制性的字段。他是有发送端计算和存储的,在接收方能够进行校验,若出错,则丢弃改报文段。
(8)只有当URG指针为1时,紧急指针才有效,它是一个偏移值,她得值加上序号字段的值,正好是紧急数据的最后一个字节的序号。T C P的紧急方式是发送端向另一端发送紧急数据的一种方式。