计算机网络-自顶向下方法-笔记【第3章-传输层】
计算机网络-自顶向下方法-笔记【第3章-传输层】
学习的课程及图片来源:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
文章目录
- 计算机网络-自顶向下方法-笔记【第3章-传输层】
- 3 传输层
- 3.1 概述和传输层服务
- 3.2 多路复用和解复用
- 3.3 无连接传输:UDP
- UDP 报文格式
- 3.4 RDT 可靠数据传输原理
- RDT 1.0
- RDT 2.0
- RDT 2.1
- RDT 2.2
- RDT 3.0
- 停止等待协议的问题
- 流水线协议
- 滑动窗口协议
- 发送窗口
- 接收窗口
- Go-Back-N
- Selective repeat
- 异常情况
- Go-Back-N 重发N
- Selective repeat 选择性重发
- 思考题
- 3.5 面向连接的传输:TCP
- TCP报文段结构
- TCP往返延迟RTT和超时
- TCP可靠数据传输
- 简化的TCP:不考虑重复ACK,流量控制,拥塞控制
- 快速重传
- TCP流量控制
- TCP连接管理
- 三次握手
- 四次挥手
- 3.6 拥塞控制原理
- 拥塞的原因/代价
- 拥塞控制方法
- ATM 采用网络辅助的拥塞控制
- 3.7 TCP 拥塞控制
- TCP 采用端到端的拥塞控制
- 如何检测拥塞
- 速率控制方法
- 策略
- TCP 吞吐量
- TCP 公平性
- 总结
3 传输层
3.1 概述和传输层服务
传输层加强了网络层的服务,但有些服务是可以加强的,有些服务是不能加强的,如延时和带宽是不能加强的,取决于网络层
3.2 多路复用和解复用
复用/解复用技术:
将多条运输连接上的数据汇集到一条网络连接上传输。本来逻辑上是有多个进程之间的通讯线路的,但通过复用(标识两者之间)只需要一条线路即可,在目标端对所有的信息解复用,分发给不同的应用进程
- 因此套接字仅为本主机的IP和端口,因此即使源IP和端口不同,目标相同,那么都将定位到相同的socket
- 但TCP捆绑4元组,只要有一个不一样,就是不同的socket
3.3 无连接传输:UDP
仅仅在IP上增加了复用和解复用功能
事务性:一次往返就结束
要在UDP上提供可靠传输,既利用UDP的高效,又要可靠,那么只能在应用层增加可靠性
(没有第三种协议,因为TCP、UDP能够支持85%以上的应用,再增加会出现协调等问题)
UDP 报文格式
数据报:无连接的,每个数据单元都是独立发送的
校验和是验证报文传输过程中有没有出错,如果发现校验不对,那么这个UDP报文会被丢弃
在计算校验和的时候,需要在UDP数据报之前增加12字节的伪首部,伪首部并不是UDP真正的首部。只是在计算校验和,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算校验和。这样的校验和,既检查了UDP数据报,又对IP数据报的源IP地址和目的IP地址进行了检验。
UDP报文的头部小,固定的8个字节的头部,如上,64 bit。载荷即有效传输的数据部分占比大
将报文段(包含数据和头部,甚至有一些IP的伪头部)切分成若干个16 bit,将所有的16 bit数字加起来,注意求和时高位有进位需要进位回滚(将进到更高位的1加到最低位上去)。最后和再取反码,得到校验和。
收到数据报校验时,计算出所有的和,然后再加上校验和,得到全1,0xFFFF,那么说明没有出错(可能有残存错误)
3.4 RDT 可靠数据传输原理
RDT在有些网络中在网络层实现,通常是由TCP在传输层实现
要向上层应用提供可靠的服务,但是所依赖的下层服务却是不可靠的 (best effort)。
渐进地开发RDT:先假设下层是完全可靠的,再逐个去掉假设,变成不可靠的,从而处理这个不可靠,再将其变成可靠,逐个进行,直到所有假设都去掉
RDT 1.0
仅仅是封装和解封装即可
RDT 2.0
使用校验和 checksum来检验错误
- 发送方要编码检错,接收方要解码校验
- 接收方要告诉发送方,是正确的ACK Acknowledgment,还是错误的NAK Negative Acknowledgment
- 发送方要保存副本,ACK则无需处理,等待上层有没有新的调用,NAK则重新发送副本(检错重传)
RDT 2.1
但是显然ACK/NAK也是可能出错的【这个信息同样是需要校验的,校验和】,因此发送方可能无法判断接收方返回的信息是什么
- 因此对发送的packet编号0和1【在01之间切换即可】,发送方先发送p0
- 接收方返回的信息ACK出错了,发送方无法识别,则发送方认为是NAK,再发一次p0
- 接收方本来在等待编号1,但收到相同编号的内容,因此知道是ACK发送失败,因此将收到的重复信息丢弃,但仍然再返回ACK确认
停止等待协议 stop-and-wait protocol :每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
RDT 2.2
取消NAK,而是对ACK编号,使用前一个分组(即最后一个正确接收的分组)的ACK作为该分组的NAK
这样可以为后续一次发送多个分组做好准备
同理ACK传输错误和上面RDT 2.1一样处理即可
RDT 3.0
增加了分组可能丢失的情况
超时重传机制:重传时间一般设置为比正常一个往返稍长一点的时间,一旦超过这个时间,一般就能确定分组丢失,然后重传即可
- 数据链路层的timeout一般是确定的,因为就是在两个节点之间传输
- 而传输层的timeout是自适应的,即需要根据情况调整,因为中间可能跨越的节点数目会变化
如果是ACK丢失了,那么重传会导致数据重复问题,但接收方可以根据分组序号知道重复,从而丢弃即可
在上面的有限状态机图中,右上角可以看到如果收到的ACK乱码/与发出的编码不匹配,说明需要重发,但这样是空,即不做处理,原因是想通过超时来处理,因为没有收到正确的,最终会导致超时,从而重发
设置一个合律的timeout很重要,如果设置时间太短了,也能正常工作,但会导致分组的发送和应答重复,效率低,如下
RDT 3.0对于停止等待协议是完备的,可以处理所有的情况
停止等待协议的问题
但停止等待协议的效率很低,特别是在信道容量(同时能容纳的“车“的数量,等于TR,R是带宽,T是信道从头到尾传输的时间)很大时,就像告诉公路很长,其中同一时间可以容纳很多车辆前后排列,但如果一次仅仅一辆车在行驶,行驶出高速公路后再让下一辆车上高速,显然效率太低了
传输时间=分组长度/链路带宽
可见,传输时间远小于往返延迟RTT,因此时间利用率很低0.027%,只有传输时间是在忙的,其他时间都是空闲的,等待信息的返回
有效吞吐=带宽*时间利用率=270kbps,相当于1Gbps的链路只用到了270kbps
流水线协议
流水线协议 pipeline protocol :一次发送多个未经确认的分组
滑动窗口协议
Sliding-window protocol
发送窗口大小 | 接收窗口 | |
---|---|---|
停止等待协议 | 1 | 1 |
流水线协议——GBN | >1 | 1 |
流水线协议——SR | >1 | >1 |
发送窗口
发送窗口是发送缓冲区的子集,是指发送但未确认的分组
上层应用可以继续将要发送的分组存放在发送缓冲区,当发送后发送窗口的前沿便移动一格,最大可以到发送缓冲区的大小
接收窗口
接收窗口=接收缓冲区
【SR和GBN原理一样,都是序号最小的到来才移动,并且窗口中要包含到来的分组序号才会接收并返回ACK,否则丢弃】
Go-Back-N
GBN接收窗口大小是1,0,1分别到来,然后接收方分别接收解封装,并将数据data交给上层,再返回ACK0,ACK1,接收窗口向右移动,但如果下一个到来的是3而不是2,说明乱序,那么接收方会把3号分组丢弃,然后发送顺序到来的序号最大的分组的确认【累计确认,表明这个序号及以前的分组已经接收】即ACK1,接下来又来了4号分组,同样丢弃并且返回ACK1
Selective repeat
SR中滑动窗口大于1,比如上面为5,先到了0,那么接收窗口右移一格,包含12345,然后返回ACK0,顺序到来1,接收窗口再右移一格,包含23456,返回ACK1,但接下来到来3,说明乱序,但由于接收窗口中可以包含3,说明可以接收3,那么会返回ACK3【非累计确认,仅仅是这个分组的独立确认**】,但接收窗口不移动,仍然包含23456,接下来到来4,返回ACK4,,接收窗口仍不移动,只有接收窗口中序号最小的到来才会导致移动。如果这时候来了2,会返回ACK2,因为此时234都到了,那么接收方会将234一起有序的交给上层(要有序交给上层,因此在乱序时要缓存),并且接受窗口右移3格
异常情况
Go-Back-N 重发N
出现了前面的2号没有收到,收到3时接收方返回ACK1,那么发送方的发送窗口不能移动
【但是注意,如果此时发送窗口<发送缓冲区,那么发送缓冲区内的分组是可以被发送的,被发送后进入发送窗口。同理如果缓冲区中的分组未满,那么上层是可以将新的分组放到发送缓冲区的】
那么2号分组的计时器会超时timeout,因此发送方需要将发送窗口(即已发送但未确认的分组)全部再顺序发送一遍【因为GBN中2号分组没到,那么后面的所有分组都会被丢弃】
【注意:GBN中只有一个计时器,即在滑动窗口大小从0变成1时启动一个计时器,同时也只需要对最小序号的分组计时即可。当收到最小序号的ACK时,那么会把计时器重置,发送窗口右移动;如果收到ACK后,窗口大小变成0,那么关闭计时器;在超时重发时也会重置计时器】
计算机网络-自顶向下方法-笔记【第3章-传输层】相关推荐
- 【计算机网络】学习笔记:第五章 传输层【王道考研】
基于本人观看学习b站王道计算机网络课程所做的笔记,不做任何获利 仅进行交流分享 特此鸣谢王道考研 若有侵权请联系,立删 如果本篇笔记帮助到了你,还请点赞 关注 支持一下 ♡>
- 计算机网络-自顶向下方法-笔记【第2章-应用层】
计算机网络-自顶向下方法-笔记[第2章-应用层] 学习的课程及图片来源:中科大郑烇.杨坚全套<计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)>课 ...
- 计算机网络自顶向下方法笔记01
<计算机网络自顶向下方法>学习笔记.之前学习过计算机网络微课,已经对计网中的很多概念都有了印象和一定的了解了,这时候再读自顶向下感觉比较轻松了.这本书没有涉及太多物理层的内容,第一章为概述 ...
- 计算机网络自顶向下方法笔记02
<计算机网络自顶向下方法>学习笔记02:运输层. 运输层介于应用层与网络层之间,为应用层提供了直接的通信服务.在应用层时已经介绍了两种运输层协议UDP和TCP,本章主要介绍这两个协议和运输 ...
- 《计算机网络 自顶向下方法》 第2章 应用层 Part1
常见的应用层协议有哪些? HTTP(HyperText Transfer Protocol):超文本传输协议 FTP(File Transfer Protocol):文件传输协议 SMTP(Sim ...
- 【计算机网络---自顶向下方法笔记1】计算机网络和因特网概述
今年大年初四,首先祝大家新年快乐哦~停更了好久,虽然有些忙过节了,但还是要对知识进行巩固啊! 本次的学习教材是黑皮书<计算机网络-自顶向下方法>,作者:James F.Kurose与Kei ...
- 读书笔记之: 计算机网络(第4版)- 第6章 传输层
第6章 传输层 第1节 传输服务 1.传输层向上层提供服务 2. 传输服务原语 3. 传输协议数据单元TPDU 4. 伯克利套接字Socket 客户端 第2节 传输协议要素 1. 传输层与数据链路层的 ...
- 《计算机网络--自顶向下方法》第三章--运输层
3.1概述和运输层服务 运输层协议为运行再不同主机上的应用进程之间提供了逻辑通信(logic communication)功能 运输层协议是在端系统中而不是在路由器中实现的 3.1.1运输层和网络层的 ...
- 计算机网络-自顶向下方法(7th) 第一章 Review Questions 中英对照
SECTION 1.1 R1 What is the difference between a host and an end system? List several different types ...
最新文章
- 彻底解决Linux索引节点(inode)占用率高的告警
- matlab怎么分析一段音频,Matlab分析音频
- centos7 安装php nts,centos7安装php7,亲测可行
- 巧用windows快捷键
- 的微波感知_微波遥感的特点
- Altium Designer 18 怎么导出CAD文件
- 《从零构建前后分离的web项目》准备 - 前端了解过关了吗?
- 在.net 当中如何XML序列化一个Collection
- Pr人像视频后期处理磨皮美白插件工具素材【汉化】
- 数字逻辑实验-交通灯控制设计
- python正态分布代码_Tests for normality正态分布检验(python代码实现)
- comsol显示电场计算结果_comsol电磁场仿真案例
- 使用torchvision 中的roi_pool/roi_align函数时报错
- 每日一滴——更新pycharm_nltk包中模块的安装
- 分享一个强大的在线写API接口文档的工具showdoc
- C语言strchr()函数以及strstr()函数的实现
- HDOJ 4069 Squiggly Sudoku 精确覆盖+搜索
- 在x86汇编中将寄存器设置为零的最佳方法是什么:xor,mov或?
- AgentWeb 介绍
- 终于,月入 20000 !!
热门文章
- 为什么文本框里的字只显示一半_word字体显示不全及显示一半怎么回事?
- CAN 数据帧,远程帧,错误帧,以及出错重连
- vue中控制浏览器滚动
- 祝福 Eric 的下一段旅程|Flutter 3.3 现已发布
- 乌镇·Conflux CTO伍鸣:让公链的“不可能三角”成为可能
- networkx igraph相互转换+效率比较
- 安卓开发用什么语言?Jetpack-MVVM-高频提问和解答,Android校招面试指南
- 有你真好,我的程序员老公
- wps大纲栏显示在右边_5分钟帮你搞定PPT!金山偷偷上线WPS智能PPT完全免费
- 数仓实时数据同步 debezium