1.TCP报文段
TCP首部(默认20B):
源端口(2B) | 目的端口(2B) | 序号(4B,数据序号,TCP面向字节流) | 确认号(4B,确认号=N,表示到N-1都已正确收到) | 数据偏移(首部长度,4位,表示多少个4B) | 保留字段(6位,目前置0) | URG(紧急,不进入接收缓冲) | ACK(确认比特,一旦链接简历,ACK=1,只有ACK=1,确认字段才有效) | PSH(推送比特,不必等到缓冲区满再交付) | RST(复位比特,TCP链接出现严重错误,必须重连 | SYN(同步比特,连接请求或接收链接报文) | FIN(终止比特,要求释放连接) | 窗口字段(2B,允许对方发送的数据量) | 校验和字段(2B,17改为6,其他和UDP一样) | 紧急指针字段(2B,指出紧急数据的最后一个字段的序号 | 选项字段(长度可变) | 填充字段(使整个首部长度是4B的倍数) |
TCP连接的端点叫套接字。
TCP的三次握手:
1.SYN=1,seq=x.
2.SYN=1,ACK=1,seq=y,ack=x+1
3.ACK=1.seq=x+1,ack=y+1
四次挥手:
1.FIN=1,seq=u
2.ACK=1,seq=v,ack=u+1
3.FIN=1,ACK=1,seq=w,ack=u+1
4.ACK=1,seq=u+1,ack=w+1
3.流量控制与可靠传输机制
流量控制的方式:
停止等待:发送方发送一帧,等待应答消息到达后再发送下一帧
滑动窗口:发送方窗口内的序列号代表了那些已经被发送但还没有收到确认的帧,或者那些可以发送的帧,每收到一个帧的确认,发送窗口就向前滑动一个帧的位置。当发送方窗口达到最大尺寸时,会强行关闭网络层,直到有一个空闲缓冲区出来。在接收端只有收到帧的发送序号在接收窗口内才收下,并将窗口前移一个位置,否则丢弃。
可靠传输机制:
使用确认和超时重传两种机制共同完成,又称自动请求发送(ARQ)
停止等待协议:发送方发送一个帧后,必须得到确认才能发送下一帧,若规定时间内没有收到确认,则重传原始帧。
后退N帧(GBN):发送最大窗口2^n-1,如果某帧出错,接收方只能简单的丢弃后续所有帧。
选择重传(SR):WT<=2^(n-1),wr<=2(n-1),Wt<=Wr.若一帧出错,现将后续帧存入接收方的缓冲区,收到重传帧后,再按正确顺序发送给主机。
4.TCP的拥塞控制
对网络某资源的需求超过了该资源所能提供的。
包括开环控制和闭环控制。
发送窗口<=min(rwnd,cwnd),一般认为是rwnd.
慢开始:初始cwnd=1,每收到一个报文段的确认,cwnd+1.所以在一个RTT内呈现指数增长。
拥塞避免:到达阈值后,每经过一个RTT,cwnd+1.直至出现拥塞,阈值变为cwnd的一半,cwnd=1,重新慢开始。
快重传:只要连续收到3个重复确认,就立即重传。
快恢复:连续收到3个重复确认时,cwnd变为现在的阈门值即原来的一半,执行拥塞避免算法。