计算机网络原理【三】之 传输层
感谢内容提供者:金牛区吴迪软件开发工作室
接上一篇:计算机网络原理【二】之 网络应用
文章目录
- 一、传输层的基本服务
- 1.传输层功能
- a.传输层核心功能
- b.传输层七大功能
- 2.传输层寻址与端口
- 3.无连接服务与面向连接服务
- 二、传输层的复用与分解
- 1.复用与分解
- 2.无连接的多路复用与多路分解 - UDP
- 3.面向连接的多路复用与多路分解 - TCP
- 三、停-等协议与滑动窗口协议
- 1.可靠数据传输基本原理
- 2.停-等协议
- a.停-等协议工作流程:
- b.停-等协议的缺点:
- 3.滑动窗口协议
- a.滑动窗口协议根据窗口的大小分类
- ①回退N步协议(GBN协议,Go-Back-N)
- ②选择重传协议(SR协议, Selective Repeat)
- 四、用户数据报协议(UDP)
- 1.UDP特点
- 2.UDP数据报结构
- 3.UDP校验和
- a、提供差错检测功能
- b、UDP校验和计算规则
- 五、传输控制协议(TCP)
- 1.TCP报文段结构
- 2.TCP连接管理
- a.连接建立
- 拓展:为什么需要三次握手?
- b.连接拆除
- 为什么要四次挥手?
- 3.TCP可靠数据传输
- a.可靠
- b.TCP实现可靠数据传输服务的工作机制
- c.TCP生成ACK的策略:
- 4.TCP流量控制
- 5.TCP拥塞控制
- a.拥塞
- b.拥塞控制
- c.概念补充
- d.TCP拥塞控制算法
- 1)慢启动算法
- 2)拥塞避免算法
- 3)快速重传
- 4)快速恢复
- 5)窗口调整的基本策略(Additive Increase, Multiplocative Decrease, AIMD):
一、传输层的基本服务
1.传输层功能
a.传输层核心功能
传输层核心功能:给应用进程之间提供端到端的逻辑通信服务。
只有主机才有传输层;
网络核心中的中间系统只用到下三层的功能。
b.传输层七大功能
- 对应用层报文进行分段和重组
- 面向应用层实现复用与分解
- 实现端到端的流量控制
- 拥塞控制
- 传输层寻址
- 对报文进行差错检测
- 实现进程间的端到端可靠数据传输控制
2.传输层寻址与端口
一台计算机中,不同应用进程用 进程标识符(进程ID) 来区分。
在传输层使用协议端口号,通常简称为端口(port)。
在全网范围内利用 『IP地址+端口号』 唯一标识一个通信端点。
黄色圈起来的部分:端口
红色圈起来的部分:进程标识符
传输层端口号为16位整数,可以编号65536个(2的16次方)
常用端口:端口号小于256的端口
端口号 | 类别 | |
---|---|---|
0-1023 | 熟知端口号 | 服务器端口号 |
1024-49151 | 登记端口号 | 服务器端口号 |
49152-65535 | 短暂端口号 | 客户端口号 |
1、服务端使用的端口号:熟知端口号和登记端口号
2、客户端使用的端口号:临时性,在客户进程运行时由操作系统随机选取唯一的未被使用的端口号。
3.无连接服务与面向连接服务
无连接服务(UDP):提供无连接、不可靠的数据报传输服务
面向连接服务(TCP):提供面向连接的、可靠的、有序的字节流传输服务
无连接服务 | 面向连接服务 |
---|---|
数据传输之前:无需与对端进行任何信息交换,直接构造传输层报文段并向接收端发送。 | 数据传输之前:需要双方交换一些控制信息,建立逻辑连接,然后再传输数据,传输结束后还需要拆除连接 |
类似于信件通信 | 类似于电话通信 |
二、传输层的复用与分解
1.复用与分解
多路复用与多路分解(复用与分解 / 复用与分用):支持众多应用进程共用同一个传输层协议,并能够将接收到的数据准确交付给不同的应用进程。
多路复用:在源主机,传输层协议从不同的套接字收集应用进程发送的数据块,并为每个数据块封装上首部信息(包括用于分解的信息)构成报文段,然后将报文段传递给网络层。
多路分解:在目的主机,传输层协议读取报文段中的字段,标识出接收套接字,进而通过该套接字,将传输层的报文段中的数据交付给正确的套接字。
2.无连接的多路复用与多路分解 - UDP
用户数据报协议(User Datagram Protocol, UDP):Internet提供无连接服务的传输层协议。
UDP套接字二元组:<目的IP地址,目的端口号>
3.面向连接的多路复用与多路分解 - TCP
传输控制协议(Transmission Control Protocol, TCP):Internet提供面向连接服务的传输层协议。
TCP套接字四元组:<源IP地址,源端口号,目的IP地址,目的端口号>
三、停-等协议与滑动窗口协议
1.可靠数据传输基本原理
不可靠传输信道在数据传输中可能发送:
- 比特差错:1001变成了1000
- 乱序:数据库1、2、5、6、3、4
- 数据丢失:数据块1、2、5
很多网络应用希望传输层提供可靠的数据传输服务。
基于不可靠信道实现可靠数据传输采取的措施:
①差错检测:利用编码实现数据包传输过程中的比特差错检测
②确认:接收方向发送方反馈接收状态。ACK(肯定确认);NAK(否定确认)
③重传:发送方重新发送接收方没有正确接收的数据。
④序号:确保数据按序提交。
⑤计时器:解决数据丢失问题。
2.停-等协议
a.停-等协议工作流程:
- 发送方发送经过差错编码和编号的报文段,等待接收方的确认。
- 接收方如果差错检测无误且序号正确,则接收报文段,并向发送方发送ACK,否则丢弃报文段,并向发送方发送NAK。
- 发送方如果收到ACK,则继续发送后续报文段,否则重发刚刚发送的报文段。
b.停-等协议的缺点:
性能差,信道利用率低
3.滑动窗口协议
流水线协议(管道协议): 允许发送方在没有收到确认前连续发送多个分组。
最典型的流水线协议:滑动窗口协议。
- 增加分组序号。
- 发送方和接收方可以缓存多个分组。
发送窗口(Ws):发送方可以发送未被确认分组的最大数量;
接收窗口(Wr):接收方可以缓存的正确到达的分组的最大数量;
发送窗口左侧序号:1、2、3、4已经收到ACK。
发送窗口:Ws=5。5、6、7、8、9为当前可以使用的分组序号。序号5是基序号
发送窗口右侧序号:10、11、12为暂时不可以使用的分组序号
当5和6成功后:
发送窗口左侧序号:1、2、3、4、5、6已经收到ACK。
发送窗口:Ws=5。7、8、9、10、11为当前可以使用的分组序号。序号7是基序号
发送窗口右侧序号:12为暂时不可以使用的分组序号
a.滑动窗口协议根据窗口的大小分类
①回退N步协议(GBN协议,Go-Back-N)
GBN协议的特点:
发送端缓存能力高,可以在没有得到确认前发送多个分组。
接收端缓存能力很低,只能接收1个按序到达的分组,不能缓存未按序到达的分组。
GBN发送方响应的3类事件:
- 上层调用
- 收到1个ACKn。GBN采用累积确认方式,即发送方收到ACKn时,表明接收方正确接收序号n以及序号小于n的所有分组。
- 计时器超时。发送方只使用一个计时器。
②选择重传协议(SR协议, Selective Repeat)
SR协议特点:
发送端缓存能力高。
接收端缓存能力高,
SR发送方响应事件:
- 上层调用。
- 计时器超时。发送方对每个分组进行计时。
- 收到ACKn。SR协议采取逐个确认方式。
四、用户数据报协议(UDP)
提供无连接、不可靠、数据报尽力传输服务。
1.UDP特点
- 应用进程容易控制发送什么数据以及何时发送,会出现分组的丢失和重复。
- 无需建立连接。
- 无连接状态。
- 首部开销小,只有8个字节(Byte)。
2.UDP数据报结构
3.UDP校验和
a、提供差错检测功能
UDP的校验和用于检测UDP报文段从源到目的地传送过程中,其中的数据是否发生了改变。
b、UDP校验和计算规则
- 所有参与运算的内容按16位对其求和。
- 求和过程中遇到溢出(即进位) 都被 回卷(即进位与和的最低位再相加)。
- 最后得到的和取反码,就是UDP的校验和,填入UDP数据报的校验和字段。
没溢出则跳过第二步,直接进行第三步
五、传输控制协议(TCP)
提供面向连接、可靠、有序、字节流传输服务。
1.TCP报文段结构
要点:
1.序号:TCP的序号是对每个应用层数据的每个字节进行编号
2.确认序号:期望从对方接收数据的字节序号,即该序号对应的字节尚未收到。用ack_seq表示。
3.首部长度:最短是20字节。最长为60字节。首部长度字段的数值单位为4字节。
TCP首部=固定首部(20字节)+选项(0-40字节)
2.TCP连接管理
以客户端上的一个应用进程与服务器上的一个应用进程建立一条TCP连接为例:
a.连接建立
拓展:为什么需要三次握手?
b.连接拆除
为什么要四次挥手?
要保证数据的传输完毕
3.TCP可靠数据传输
a.可靠
保证接收方应用进程从缓冲区读出的字节流与发送方发出的字节流是完全一样的。(无差错,不丢失,不重复,按序到达)
b.TCP实现可靠数据传输服务的工作机制
- 分段:应用层数据被分割成TCP认为最适合发送的数据块。
- 序号:发送方对发送的数据包进行编号,确保数据按序提交给接收方。
- 确认:接收方向发送方反馈接收状态,确认是否正确接收数据。
- 差错检测:利用差错编码实现数据包传输过程中的比特差错检测(甚至纠正)。
- 重传:发送方重新发送接收方没有正确接收的数据。
- 计时器:在发送方引入计时器,解决数据丢失问题。
三次重复确认: TCP发送方接收到对相同序号的3次重复ACK(第4次确认),则说明被重复确认的报文段已丢失,这时候即便计时器没有超时,也会重发该报文段(快速重传)。
计时器超时时间设置:
TimeoutInterval = EstimatedRTT + 4 * DevRTT
EstimatedRTT:抽样RTT的加权移动平均值
DevRTT:偏差RTT
c.TCP生成ACK的策略:
- 具有所期望序号的报文段按序到达,所有在期望序号及以前的报文段都已被确认。 -> TCP延迟500ms发送ACK。
- 具有所期望序号的报文段按序到达,且另一个按序报文段在等待ACK传输。 -> TCP接收方立即发送单个累积ACK,确认以上俩个按序到达报文段。
- 拥有序号大于期望序号的失序报文段到达。 -> TCP接收方立即发送重复ACK,指示下一个期望接收字节的序号。
- 收到一个报文段,部分或完全填充接收数据间隔。
4.TCP流量控制
流量控制:协调发送方与接收方的数据发送与接收速度。
在通信过程中,接收方设置报文段的接收窗口字段来将窗口大小通知给发送方。
5.TCP拥塞控制
a.拥塞
太多的主机以太快的速度向网络中发送太多的数据,超出了网络处理能力,导致大量数据分组拥挤在中间设备队列中等待转发,网络性能显著下降的现象。
b.拥塞控制
通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率、数据量,以避免拥塞或消除已发生的拥塞。
- 拥塞预防策略:预防拥塞发送。
流量整形技术,规范主机向网络发送数据的流量。 - 拥塞消除策略:基于拥塞检测机制,调整主机向网络中发送数据的速率和数量,从而逐渐消除拥塞。
c.概念补充
d.TCP拥塞控制算法
1)慢启动算法
2)拥塞避免算法
3)快速重传
4)快速恢复
5)窗口调整的基本策略(Additive Increase, Multiplocative Decrease, AIMD):
网络未发生拥塞时,逐渐『加性』增大窗口。
网络拥塞时『乘性』减小窗口。
下一篇:计算机网络原理【四】之 网络层
计算机网络原理【三】之 传输层相关推荐
- [计算机网络]第三章——传输层
文章目录 [计算机网络]第三章--传输层 3.1 概述和传输层服务 传输层概述 3.2 多路复用与多路分解 无连接的多路复用与多路分解 有连接的多路复用与多路分解 3.3 UDP|User Datag ...
- Day5-2021.1.13 计算机网络原理 第八章 传输层+第九章 应用层 河北师范大学韩老师的视频
2021年1月13日 时间都去哪了? 今日计划:计算机网络的传输层和应用层看完视频.整理计网面经.面经才是重要的,笔记不用很细心,又不是期末考试. 今日工作:计算机网络的传输层和应用层看完视频. 今日 ...
- 《计算机网络 自顶向下》第三章==传输层==随堂笔记
文章目录 第三章 传输层 3.1 传输层概述 传输层提供什么服务? 传输层协议 3.2 多路复用和解复用 多路复用 解复用 3.3 UDP(User Datagram Protocol) 3.4 可靠 ...
- 计算机网络之应用层与传输层
一.概述 OSI分层(7层) 物理层.数据链路层.网络层.运输层.会话层.表示层.应用层 TCP/IP分层(4层) 网络接口层.网络层.运输层.应用层 五层协议(5层) 物理层.数据链路层.网络层.运 ...
- 五天带你学完《计算机网络》·第三天·传输层
文章目录 一.传输层的功能✪✪ 二.端口 三.UDP✪✪ 四.TCP✪✪✪✪ 概述 可靠传输工作原理 两个协议 TCP报文段 流量控制,拥塞控制,运输连接管理✪✪✪✪ 前些天发现了一个巨牛的人工智能学 ...
- 王道考研计算机网络第五章——传输层
5.1 传输层概述 5.1.1 传输层 为应用层提供通信服务,使用网络层服务 1 传输层功能 1.传输层提供进程和进程之间的逻辑通信. 2.复用和分用 例如一家四口都要给好友写信,统一放到邮筒里,邮政 ...
- 计算机网络(五)传输层详解
目录 第五章 传输层 5.1 传输层概述 进程之间的通信 网络层与传输层的区别 传输层的两个主要协议 传输层的端口 TCP/IP传输层端口 5.2 UDP UDP需要实现的功能 UDP提供的服务 UD ...
- 计算机网络-浅谈运输层(传输层)
(记录学习,有误请一定告知) 文章目录 什么是运输层 为什么需要运输层 运输层的分用与复用 端口号 1. 什么是端口号 2. 端口号分类 无连接服务和面向连接服务 UDP(用户数据报协议) 1. 特点 ...
- 计算机网络【4】传输层
概述 传输层是只有主机才有的层次 传输层的功能: 传输层提供进程和进程之间的逻辑通信(网络层提供主机与主机之间的逻辑通信) 复用和分用 传输层对收到的报文进行差错检测 传输层有两个协议: 面向连接的传 ...
- 【计算机网络实验Mooc】传输层实验测试题
1. 网络实验入门测试题 2. 数据链路层实验测试题 3. 网络层实验测试题 4. OSPF路由协议测试题 5. 传输层实验测试题 6. 应用层实验测试题 [传输层实验测试题] TCP端口号区分上层应 ...
最新文章
- Django-缓存的配置
- SQL学习笔记-嵌套查询
- 关于Linux的用户管理的相关研究-------(一)
- 解剖人脸识别从无到有的发展史
- python用表达式解密密文_基于Python解密仿射密码
- 微软职位内部推荐-Software Engineer II-Web app
- 我心中的ASP.NET Core 新核心对象WebHost(一)
- Go中new和make的区别
- 自己封装的ASP.NET的SQLITE数据库的操作类
- 数字电子技术基础 - 半导体存储电路
- flowable设计器节点属性扩展_gooflow设计器API说明书
- creo绘图属性模板_最好用的工程图格式文件及建模模板文件
- 发票:企业级发票服务开放平台
- NBT:根际微生物组抗番茄枯萎病(IF:35.724)
- 【CSDN软件工程师能力认证学习精选】Web前端经典面试试题及答案-史上最全前端面试题(含答案)
- Android案例手册 - 实现一个华容道拼图游戏
- navicat导出数据库数据
- php求解鸡鸭同笼,鸡兔同笼的9种解法
- 如何做一名优秀的助教@助教的那些事(助教总结)
- 计算机专业考MBA有优势吗,工作后考mba有什么好处
热门文章
- python turtle库绘画_利用turtle库来画画
- HDUOJ 1002
- 机器学习四大降维方法
- 【 安信可海思Hi-12F模组】AT指令入门教程 接入鸿蒙智联
- 哈尔滨旅游名胜——防洪纪念塔
- ewomail 内部通讯_利用EwoMail一键搭建基于Linux 安全稳定的开源邮件系统
- ol7源码学习之Geometry
- php实现微信签到功能实现,微信小程序实现签到的日历功能
- ubuntu/linux系统知识(24)ubuntu自带的录屏软件
- java数据类型 两大类_Java公开课|将Java数据类型分为这两大类,就能涵盖所有类型...