2、不像UDP,TCP留有两个缓存,发送和接收缓存,用来暂存TCP报文段,以便于重传和确认机制使用
3、特点:编号系统,流量控制,拥塞控制,差错控制,计时器(4个)等
4、TCP Segment格式:首部(20B-60B)+ 数据(下面介绍首部的字段)
(1)、源端口地址(2B),目的端口地址(2B):和UDP的意义一样
(2)、序列号(seq)(4B),确认号(4B):下面介绍,确认号仅当ACK标记为1时有效
(3)、首部长度(4bit):为首部的32bit的长度,因此首部长度介于20B-60B之间
(4)、保留(6bit)
(5)、标记(6bit),分别为:URG, ACK, PSH, PST, SYN, FIN
(6)、窗口大小(2B):以字节为单位。通知对方自己的接收窗口目前的大小。
(7)、校验和(2B):和UDP校验和的方法一样,不同的是这个功能对TCP来说是必须的
(8)、紧急指针(2B):当URG标记为1时有效,内容见下。
5、编号系统
(1)、序列号:以字节为单位编号,不是以报文段为单位编号。初始编号ISN为随机产生的,以后字节的编号便依次加1。报文段的序列号是这个报文段中第一个字节数据的字节号。
如果报文段不携带用户数据,从逻辑上说不需要序列号(比如仅含有确认的包),但是在一个TCP连接和终止之时,要一个序号,以便让对方进行确认,比如:SYN和FIN的包都需要耗掉1字节的序列号。
(2)、确认号(ACK),这个号要ACK标记设置时才有效。表示接收端期待下一个要收到的字节号码(确认号是累计的,具体说明在重传确认机制中)
6、标记位的含义:
(1)、URG表示紧急指针标记,如果设置了,则下面的URG字段有效,用来做TCP的外带数据(见“外带数据和紧急指针”相关资料)。
(2)、PSH表示这个报不需要等到发送缓冲区满,可以发送;而接收端收到此报后,马上赋予应用进程(大多数TCP实现忽略这个标记的功能了)
(3)、ACK确认标记,表示下面的ACK序列号字段有效,有确认功能(有可能是捎带确认的数据报)
(4)、RST:连接复位,用于终止一条空闲连接和异常终止连接
(5)、SYN在建立连接时用于对序号进行同步
(6)、FIN在结束连接时用于序号的同步