【计算机网络】第3章 运输层(上)

本文涉及的产品
数据传输服务 DTS,同步至DuckDB 3个月
简介: 【计算机网络】第3章 运输层

运输层

文章目录

运输层

3.1 运输层服务

3.2 复用与分解

无连接的复用和分解

面向连接分解

3.3 无连接传输: UDP

3.4 可靠数据传输的原则

rdt2.1

rdt2.2

流水线协议

滑动窗口协议

Go-Back_N

选择重传

3.5 面向连接的传输: TCP

报文段结构

3.6 拥塞控制的原理

3.7 TCP拥塞控制


3.1 运输层服务

一,运输层和网络层的比较


运输层为相互通信的应用进程提供了逻辑通信


运输层: 进程间的逻辑通信


网络层: 主机间的逻辑通信



二,运输层协议数据的封装


通常链路层最大传输单元,为1500个字节


TCP具有最大报文长度(MaximumSegment Size,MSS),需减去ip请求头,20个bit,减去20个TCP报头,就是报文长度最大为1460



二,因特网运输层协议


可靠的、按序的交付(TCP)


拥塞控制

流量控制

连接建立

不可靠、不按序交付(UDP)


“尽力而为”IP协议基础上 不提供不必要服务的扩展

它们都是不保证时延和带宽,具体在业务层保证


3.2 复用与分解

多路复用与多路分解将由网络层提供的主机到主机的交付服务延伸到进程到进程的交付服务


分解:将运输层接收到的报文段交付给正确的套接字(一路到多路,向上)


复用:从多个套接字收集数据,用首部封装数据(多路到一路,向下)

无连接的复用和分解

UDP套接字由二元组标识:


目标ip

目标端口

思考:


假定在主机C上的一个进程有一个具有端口号6789的UDP套接字。假定主机A和主机B都用目的端口号6789向主机C发送一个UDP报文段。这两台主机的这些报文段在主机C都被描述为相同的套接字吗?如果是这样的话,在主机C的该进程将怎样知道源于两台不同主机的这两个报文段?


答:是的,两个报文段都将指向同一个套接字。UDP套接字由二元组标识。对于每个接收到的报文段,操作系统都将向进程提供其源IP地址,通过所收到的IP数据报可以确定各个报文段的起源


面向连接分解

TCP套接字由四元组标识:


源IP地址

源端口号

目的IP地址

目的端口号

思考:假定在主机C端口80上运行的一个Web服务器。假定这个Web服务器使用持续连接,并且正在接收来自两台不同主机A和B的请求。被发送的所有请求都通过位于主机C的相同套接字吗?如果它们通过不同的套接字传递,这两个套接字都具有端口80吗?讨论和解释之


答:对于每个持久连接,Web服务器都会创建一个单独的“连接套接字”。每个连接套接字由一个四元组标识:(源IP地址、源端口号、目标IP地址、目标端口号)。当主机C接收到IP数据报时,它会检查数据报中的这四个字段,以确定它应该将TCP报文段的有效负载传递到哪个套接字。因此,来自A和B的请求通过不同的套接字。A和B的请求会通过80端口找到Web服务器进程, 就这里而言它们通过C的欢迎套接字进行三次握手连接, 这个欢迎套接字具有端口80.当它们与服务器进程建立连接的时候,服务器进程会单独为它们分配套接字, 通过专门的“连接套接字”响应客户端的请求. 这两个套接字就不具有80端口了


多线程Web服务器


当今高性能Web服务器通常只使用一个进程,但为每个新的客户连接创建一个具有新连接套接字的新线程


3.3 无连接传输: UDP

UDP协议特点


无连接创建(它将增加时延)


简单:在发送方、接收方无连接状态


段首部小


无拥塞控制: UDP能够尽可能快地传输


丢包


对应用程序交互失序


应用:


DNS

路由表更新

SNMP(简单网络管理协议)

要想有可靠性,必须在应用层增加


UDP检验和


将报文所有内容分隔为16比特整数序列,初始UDP校验和位置全为0,然后全部相加后,取反,即为UDP校验和


当数字作加法时,最高位进比特位的进位需要加到结果中



思考:UDP提供的是端到端的差错检测,链路层对传输过程的帧进行差错检查。因此UDP提供的差错检查是否没有必要?

我没搞懂

3.4 可靠数据传输的原则

不可靠信道的特点决定了可靠数据传输协议(rdt) 的复杂性

我们逐渐递增地研究可靠数据传输协议(rdt) 的发送方和接收方


###rdt1

底层信道非常可靠:无比特差错且分组按序无丢失

发送方:

接收方:

但是完美的信道不存在

###rdt2

具有比特差错的底层信道:有比特差错,但分组按序无丢失

与rdt1相比,增加了检错,反馈(ACK为正确收到,NAK为错误收到),重传的机制

它是一个停等协议:发送方发出1个分组,等待 接收方响应后再继续发送

发送方:

接收方:


rdt2有重大缺陷,如果ACK/NAK受损,接收方不清楚将是什么情况,如果重传的话,会导致重复,因此我们需要对每个分组增加序列号,也就是进化成rdt2.1

rdt2.1

发送方,处理受损的ACK/NAK


接收方,处理受损的ACK/NAK


注意:rdt2.1的发送方状态增加了一倍,状态必须“记住”是否 “当前的”分组具有0或1 序号;接收方必须检查是否接收到的分组是冗余的


问题1:两个序号seq. #’ s (0,1) 将够用. ( 为什么?)


因为是停等协议


问题2:必须检查是否收到的ACK/NAK受损?


必须检查,这样才知道发送的包是否成功接收


rdt2.2

这是一个无NAK的协议,只需要在ACK里面带有分组的序号,如果需要不正确,重传即可

###rdt3

能够处理具有差错和丢包的信道

方法:发送方等待ACK一段“合理的”时间,如果没有等待到就重传,简单来说就是加一个定时器

发送方:


rd3效率很低,网络资源利用率很低,由于停等协议

但是停等协议如果不存在的话,发送方网络和接收方的网络能够对报文重排,那么比特交替协议将不能正确工作,将会乱序


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
缓存 网络协议 算法
计算机网络 第四章 运输层(习题)
计算机网络 第四章 运输层(习题)
570 1
|
网络协议 算法 网络性能优化
计算机网络学习记录 运输层 Day5(1)
计算机网络学习记录 运输层 Day5(1)
139 0
|
人工智能 网络协议 数据挖掘
计算机网络——运输层(1)暨小程送书
计算机网络——运输层(1)暨小程送书
|
缓存 网络协议 算法
计算机网络 | 运输层知识点汇总-2
计算机网络 | 运输层知识点汇总
390 0
|
缓存 网络协议 算法
计算机网络 | 运输层知识点汇总-1
计算机网络 | 运输层知识点汇总
396 0
|
存储 缓存 网络协议
计算机网络-运输层
运输层概述 这里我们对运输层进行概述,之前文章所介绍的计算机网络体系结构中的物理层,数据链路层以及网络层,他们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信, 如图所示,局域网1上的主机与局域网2上的主机,通过互联的广域网进行通信,网络层的作用范围是主机到主机,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。 Ap是应用进程的英文缩写词,如何为运行在不同主机上的应用进程提供直接的通信服务,是运输层的任务,运输层协议又称为端到端协议,如图所示运输层的作用范围是应用进程到应用进程,也称为端到端。 接下来我们从计算机网络体系结构的角度来看运输层。
265 0
|
缓存 网络协议 算法
【计算机网络】应用层和运输层网络协议分析
【计算机网络】应用层和运输层网络协议分析
|
缓存 网络协议 算法
【计算机网络】第3章 运输层(下)
【计算机网络】第3章 运输层
|
网络协议 网络性能优化
第五章 运输层【计算机网络】4
第五章 运输层【计算机网络】4
170 0
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
418 17

热门文章

最新文章