Standford CS144 lab3
- 总览
- lab3需要实现TCPSender ,TCPSender的作用是将发送字节流转化为TCPsegment
- 激动人心的是,在lab4中,将实现一个真实的TCPConnection,并通过它联通Internet世界
- TCP Sender
- TCPSender负责从一个ByteStream读取字节并将其转换成一序列外送TCP segments;另外,TCP revceiver可以是任何一个可靠的TCP receiver,建立一套Internet通信标准才是最重要的。
- TCPSender在TCPSegment中写入各个字段,比如序列号,SYN标志,有效载荷,FIN标志,TCPSender只能够读ackno和the window size这两个字段,标红的字段就是了
- TCPSender需要做的是
- 查看追踪接受者的window,也就是处理ackno与window size
- 尽可能填满窗口,也就是说及时的从ByteStream读数据,并创建与发送TCPsegments,直到the window满了或者ByteStream空了
- 跟踪查看哪个报文段流失了,我们将这种报文段称作
outstanding segments
,也就是未完成的报文段
- 对于
outstandin sgements
,需要做到超时重传,这里实现了ARQ,ARQ是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,它通常会重新发送。ARQ包括停止等待ARQ协议和连续ARQ协议,连续ARQ又分为回退N帧ARQ协议、选择性重传ARQ协议。ARQ协议是对滑动窗口的一个很好的实现