传输层
传输层服务概述
复用和分用
源端口是用作返回地址的,当B需要回发一个报文段给A时,B到A的报文段中的目的端口号便从A到B的报文段中的源端口号中取值。
UDP
UDP首部仅有8字节,TCP首部20字节
可靠数据传输原理
对于上层实体提供的服务抽象就是:数据可以通过一条可靠的信道进行传输。
但是一般情况,我们可以将较低层视作不可靠的点对点信道。
RDT2.1考虑了ACK/NAK受损的情况,因此想到了进行重传,但是重传可能会产生重复分组,因此采用序列号来确定收到的分组是否需要重传,而且只需要使用1比特的序号。为什么只需要1比特的序号呢,因为针对rdt2.0我们是假设信道是有序的,不会丢包的,所以只需要0,1来分别表示两个分组即可。
例如接收端在等待编号0的封包,结果收到封包1,此时会回传ACK1给来源端,而正在等候ACK0的来源端收到ACK1 表示封包0可能遗失,所以会再重送封包0。
rdt3.0同时考虑到封包遗失与资料错误的情形,除了使用ACK机制,另外在传送端多了倒数计时器,封包送出去如果超过时间仍未收到ACK或是收到不正确编号的ACK,则再送出封包一次。
停等操作
滑动窗口协议
[0,send_base]对应于已经发送并被确认的分组。[base,nextseqnum-1]对应已经发送但还未确认的分组。
[nextseqnum,base+N-1]对应能用于那些要被立即发送的分组。
最后大于或等于base+N的序号是不能被使用的,知道流水线中未被确认的分组得到确认为止。
GBN(Go Back N步)
SR(Selective Repeat)
GBN的缺陷是只要不是接收方想要的,就一直丢弃,重传的话是从timeout的分组开始,全部重传,比较浪费资源。
TCP
TCP流量控制
即使RcvWindow=0,sender也会发送很小的信息以保证接收方与发送方的通讯,从而发送方来了解RcvWindow的大小
TCP连接管理
拥塞控制原理
拥塞控制是保证网络不堵
流量控制保证接收方不堵