1,TCP提供一种面向连接的,可靠的字节流服务。8bit字节构成字节流。2,在一个TCP连接中,仅有两方进行彼此的通信,对于广播和多播不能用TCP。3,TCP通过以下方式来提供可靠性: 1》应用数据被分割成TCP认为最合适的数据块。 2》超时及重发策略。 3》发送确认。 4》TCP将保持它首部和数据的检验和。 5》TCP将对收到的数据进行重新排序,以正确的顺序交给应用层。 6》TCP接收端丢弃重复的数据。 7》TCP提供流量控制,防止较快主机导致较慢主机的缓冲区溢出。4,TCP对字节流的内容不作任何解释。TCP不知道传输的数据字节流是二进制数据,还是ASCII字符,EBCDIC字符或者其它类型数据,对于字节流的解释由TCP连接双方的应用层解释。这种对字节流处理方式与Unix操作系统对文件的处理方式很类似。Unix的内核对一个应用读或写的内容不作任何解释,而是交给应用程序处理。对Unix的内核来说,它无法区分一个二进制文件还是一个文本文件。5,由TCP传递给IP的信息单位称为报文段或段(segment)。6,TCP数据被封装在一个IP数据报中,如下图:7,显示TCP首部的数据格式:
1》源端与目的端的端口号用于需找发送端和收端应用程序。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接(一个IP地址和一个端口号也称为一个插口即socket)。
2》序号用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的第一个数据字节即初始序号ISN(Initial Sequence Number),SYN标志为1。该主机发送数据的第一个字节序号为这个ISN加1,因为SYN标志消耗了一个序号。
3》确认号包含发送确认的的一端所期望收到的下一个序号。因此,确认号应当是上次已成功收到数据字节序号加1,只有ACK标志位1时,序列号字段才有效。
4》首部长度是32bit字的数目,因此TCP最多有60字节的首部,没有任选字段,正常的长度是20字节。
5》TCP首部中6个标志比特,它们中的多个可以同时被设置为1。
URC ——紧急指针(urgent pointer)有效。
ACK——确认序号有效。
PSH——接收方应该尽快将这个报文段交给应用层。
RST——重新连接。
SYN——同步序列号用来发起一个连接。
FIN——发端完成发送任务。
6》16位窗口大小:TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。
7》检验和覆盖了整个TCP报文段:TCP首部和TCP数据。这是个强制性的字段,一定是由发端计算和存储,并由收端进行验证。
8》只有当URG标志设置为1时紧急指针才有效。紧急指针是一个正的偏移量,和序列号字段中的值相加表示紧急数据最后一个字节的序号。
9》最常见的可选字段是最长报文大小,又称为MSS(Maximun Segment Size)。
8,许多流行的应用程序如Telnet,Rlogin,FTP和SMTP都使用TCP。