传输层的TCP协议
特点:点对点,可靠的,按序的字节流传输机制,流水线机制,发送方/接收方缓存,全双工(同一连接中能够传输双向数据流)
面向连接:通信双方在发送数据前必须建立连接,状态只在连接的两端维护,流量控制机制
TCP段结构
TCP RTT和超时
规定超时需要设置定时器
定时器设置大于RTT:RTT是变化的
设置过短:不必要的重传
设置过长:对段丢失时间反应慢
估计RTT的方法
计算SampleRTT:测量从段发出去到收到ACK的时间(忽略重传)
测量多个后求出平均值,形成RTT的估值EstimatedRTT
EstimateRTT = (1-a)*EstimateRTT+a*SampleRTT(指数加权移动平均,典型值:0.125)
定时器超时时间的设置:EstimateRTT+“安全边界”|EstimateRTT变化大->较大的边界
TCP发送方事件
从应用层收到数据:
创建Segment,序列号是Segment第一个字节的编号,开启计时器,设置超时时间
超时:
重传引起超时的Segment,重启定时器
收到ACK:
如果确认此前未确认的Segment,更新Send Base,如果窗口还有未被确认的分组,重启定时器
快速重传机制
TCP的实现中,如果发生超时,超时时间间隔将重新设置,即将超时时间间隔加倍。
通过重复ACK检测分组丢失,如果sender收到对同一数据的3个ACK,则假定该数据之后的段已经丢失。
快速重传机制:在定时器超时之前即进行重传
TCP流量控制
接受方可有空间为Buffer中的可用空间
Receiver通过在Segment的头部字段将RCVwindow告诉sender
Sender限制自己已经发送的但还未收到ACK的数据不超过接收方的空间RCVwindow尺寸
TCP连接管理
TCP sender和receiver在传输数
提前需要建立连接
初始化TCP变量
Seq.#
Buffer和流量控制信息
Client:连接发起者;Server:等待客户连接请求
TCP的三次握手:
四次挥手