计算机网络-第五章-运输层
本章节重要概念:
1. 运输层为相互通信的应用进程提供逻辑通信。 2. 端口和套接字的意义; 3. 无连接的UDP的特点; 4. 面向连接的TCP的特点; 5. 在不可靠的网路上实现可靠传输的工作原理,停止等待协议和ARQ协议。 6. TCP的滑动窗口、流量控制、拥塞控制和连接管理。
1 运输层协议概述
进程之间的通信:
从运输层角度来说。通信的真正端点并不是主机而是主机中的进程
。运输层有一个重要的功能——复用和分用
;
运输层有两种协议:
面向连接的TCP协议和无连接的UDP
。
UDP:用户数据报协议;传数据前不需要建立连接
;
TCP:传输控制协议;提供面向连接的服务
;
运输层的端口:
服务器使用的端口号:系统端口号0—1023;常用的熟知端口号
登记端口号:数值为1024~49151;
客户端使用的端口号:数值为49152~65535.此类端口号仅在客户进程运行时才动态选择,故而又叫短暂端口号;
2用户数据报协议UDP
UDP概述
- 1 UDP是无连接的
- 2 UDP使用尽最大努力交付
- 3 UDP是面向报文的
- 4 UDP没有拥塞控制
- 5 UDP支持一对一,一对多,多对多的交互通信
UDP的首部开销小,只有8字节。
UDP首部格式:
1 源端口:在需要对方回信时使用。不需要时可以全为0; 2 目的端口:在终点交付报文时必须使用; 3 长度:UDP用户数据报的长度,其最小值是8(仅首部有); 4 检验和:检查UDP用户数据报在传输中是否有错,有错就丢弃
;
3传输控制协议TCP概述
TCP主要特点
1 TCP是面向连接的运输层协议 2 每一条TCP连接只能有两个端点,即为每一条TCP连接只能是点对点(一对一)。 3 TCP提供可靠交付的服务。保证传输的数据无差错、不丢失、不重复、按序到达。 4 TCP提供全双工通信 5 面向字节流:↓
TCP连接:连接是最基本的抽象;TCP连接的端点叫套接字或插口;端口号拼接到IP地址即构成套接字。
套接字socket=(IP地址:端口号)
4可靠传输的工作原理
理想信道不产生差错
不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据;
停止等待协议:
每发送完一组数据就停止发送,等待对方确认。收到确认后再发送下一组数据;
1无差错情况:如图所示:
出差错处理:超时重传设置超时计时器;
需要注意的三点:
1 在发送完一个分组后,必须暂时保留已发送的分组副本, 只有收到相应的后才能清楚; 2 分组和确认分组都必须进行编号 3 超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些;
确认丢失和确认迟到:采取的动作
1 丢弃这个重复的分组,不向上层交付;
2 向发送端发送确认,不能认为已经发送过确认就不再发送。
信道利用率
计算公式:Td/(Td+RTT+Ta)
连续ARQ协议
窗口滑动协议比较复杂,这里只简要
说明连续ARQ协议;下图是其工作原理:
TCP报文段的首部格式
(1) 源端口和目的端口:
源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
(2)序号字段
序号字段占 4 字节。要明确的是:TCP是面向字节流的(UDP是面向报文的),也就是说TCP
连接中传送的数据流中每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。(3)确认号
确认号字段占 4
字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。确认号是接收方发送给发送方的,这个字段告诉发送方:作为接收方,他想收到的下一个报文段的第一个序号字段(4)数据偏移
数据偏移(即首部长度)占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段起始处有多远。“数据偏移”的单位是 32 位字(以4 字节为计算单位)。
(5)紧急URG
紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
(6)确认ACK
确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。
(7)推送PUSH
推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1
的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。(8)同步SYN
同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。
(9)终止FIN
终止 FIN (FINis) —— 用来释放一个连接。FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
(10)窗口字段
窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
5 TCP可靠传输实现
以字节位单位的滑动窗口
超时重传时间的选择
选择确认SACK
6 TCP的流量控制
所谓流量控制就是 让对方发送速率不要太快,要让对方能及时接收;
利用窗口滑动实现流量控制;下图说明控制过程:
传输效率
7 TCP的拥塞控制
拥塞控制就是防止过多的数据注入到网络中,这样可以使网路中的路由器或链路不至于过载;
开环控制和闭环控制:
开环控制在设计网络时事先把有关发生拥塞的因素考虑周到,从而来保证网络工作时不产生拥塞;但整个系统运行起来就无法中途改正
。
闭环控制:在于反馈环路;
1 监测网络系统方便监测拥塞何时何地发生;
2 把拥塞发生的信息传达可采取行动的地方;
3 调整网络系统的运行以解决出现的问题
;
TCP拥塞控制方法:
1 慢开始和拥塞避免;|
1 慢开始由小到大逐渐增大发生窗口;
2 拥塞避免让拥塞窗口cwnd“加法增大
”即为线性增长,控制增长速率;下图是拥塞避免的示例图:
cwnd快重传避免超时:
8 TCP运输连接管理
过程:连接建立、数据传送、连接释放
连接建立需要解决的问题:
- 1 每一方确知对方的存在;
- 2 协商参数(最大窗口值、时间戳选项等)
- 3 能过对运输实体资源进行分配
TCP连接:三报文握手建立TCP连接
TCP释放:
如果你觉得有用的话一键三连呀 点赞+收藏+转发
下面是本章节的思维导图:
原图点这里
本文来自博客园,作者:taotooler,转载请注明原文链接:https://www.cnblogs.com/taolo/p/17225882.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?