1、定义: 传输控制协议(Transmission Control Protocol),是TCP/ip协议栈中算法最多,功能最最繁杂的协议。(一对一的连接) 基于TCP的应用层协议: HHTP:80 HTTPS:443 FTP:20/21 SSH:22 TELNET:23 SMTP/POP:25/110 2.功能 面向连接(三次握手,四次挥手) 可靠传输(经典重传,超时重传,快速重传/选择性重传) 确认应答 和 超时重传是 TCP 可靠性中最核心的机制 流量控制(滑动窗口,拥塞管理) 多路复用(套接字) TCP头部 2.可靠传输(序列号SEQ,确认号ACK) TIME-WAIT 等待时间,需要分成两个部分: ①等待 ACK 经历一个最大时间到达主机 B ②万一 ACK 丢了,在等待一个最大时间,主机 B 重传 FIN 到达主机 A 因此,TIME_WAIT 就需要等待 2倍的MSL,即:2MSL 快速重传和快速恢复 具体做法是:发送端如果连续收到3个重复的确认报文段,就认为是拥塞发生了。然后它启用快速重传和快速恢复算法来处理拥塞,过程如下: 当收到第3个重复的确认报文段时,按照上式计算shresh,然后立即重传丢失的报文段,并按照下式 设置CWND. CWND=ssthresh+3*SMSS 每次收到1个重复的确认时,设置CWND=CWND+SMSS.此时发送端可以发送新的TCP报文段(如果新的CWND允许的话)。 当收到新数据的确认时,设置CWND=ssthresh (ssthresh 是新的慢启动门限值,由第一步计算得到)。 3.流量控制(窗口大小) 流量控制的目的:让发送方的发送速率不要太快,从而让接收方来的及接收 滑动窗口:在 TCP 的报头中有一个字段叫做接收通告窗口,这个字段由接收端填充,是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。所以发送端就会有一个发送窗口,这个发送窗 口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据 的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口。(TCP的滑动窗口以字节为单位) 拥塞控制 满开始:由小到大逐渐增大拥塞窗口数值。 拥塞避免:为了防止拥塞窗口增长过大引起网络拥塞,设置慢开始门限。然后拥塞避免的算法思路就是让拥塞窗口缓慢增大,即每经过一个往返时间RTT就把发送方的拥塞窗口加一。 快速重传:接收方不要等待中积极发送数据的时候再进行对之前数据的捎带确认,而是收到数据立即发送确认。快重传算法规定:发送方一连收到三个重复的确认,就应当进行快重传。 快速恢复:当出现超时的时候,不启动慢开始,而是执行快恢复算法。发送方调整门限值=出现超时的cwnd(拥塞窗口)/2 4.多路复用(套接字socket,会话session,五元组) 套接字的表示方法:在点分十进制的IP地址后面写上端口号,例如IP地址是192.3.4.5,端口号是80,那么套接字就是(192.3.4.5:80) 。 注明:TCP通过端口号(port)或套接字(ip+port)实现多路复用 源目ip+源目port+协议号=五元组