写在前面
本章前言提到
运输层协议为运行在不同主机上的应用进程提供逻辑通信功能
而前面的应用层协议不也是服务于应用进程的吗,那二者的区别或者界限在哪里?我的理解是应用层协议更多的是一种规范,一个特有的应用程序与网络上的主机通信的时候有一个约定的协议,在这个协议框架之下可以愉快的交流而不是鸡同鸭讲,而运输层协议就是一个贴心服务的信使,全程伴随应用层协议下发的报文。这里专业的解释就是上面引用的部分。
可靠数据传输原理
假设考虑底层传输协议的丢包的可能性,就进化出rdt3.0,主要增加了超时重传的机制,同时由于超时重传,但事实上可能是由于网络导致的延迟,在未发送的时候可能在这网络链路中的包就回来了,这个时候需要忽略掉它。这部分在习题中画.
进一步改进
为了避免停等模式的低效率,再引入窗口和流水线的机制,这里又分为
- 回退N步
- 选择重传
TCP
在保证数据可靠传输的时候有一个关键的技术就是累计确认,也就是说接收端发送的ACK一定能保证该ACK所代表字节数之前的字节已经是完全收到的,很多 情况在累计确认的机制下会很容易
习题
P3
1)加法要注意回卷然后求反
2)使用反码的好处最关键的一点是一般的校验和都是双字节,对于小端系统和大端系统的交互,字节顺序会是反的,字节顺序不同的原码加法一般结果是不同的,但是反码却有无视字节顺序的特点,
3)接收方计算出的校验和与发送方传输过来的校验和不同即出现差错
4)1比特的差错一定会导致校验和不同,但是2比特的差错却不一定
本章习题都很重要,但是太多了,就没有在博客上写。博客上就写一些理论性比较强的