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

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 【计算机网络】第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效率很低,网络资源利用率很低,由于停等协议

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


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5月前
|
网络协议 算法 网络性能优化
计算机网络学习记录 运输层 Day5(1)
计算机网络学习记录 运输层 Day5(1)
34 0
|
6月前
|
缓存 网络协议 算法
计算机网络 第四章 运输层(习题)
计算机网络 第四章 运输层(习题)
|
6月前
|
人工智能 网络协议 数据挖掘
计算机网络——运输层(1)暨小程送书
计算机网络——运输层(1)暨小程送书
|
11月前
|
缓存 网络协议 算法
计算机网络 | 运输层知识点汇总-2
计算机网络 | 运输层知识点汇总
90 0
|
11月前
|
缓存 网络协议 算法
计算机网络 | 运输层知识点汇总-1
计算机网络 | 运输层知识点汇总
95 0
|
存储 缓存 网络协议
计算机网络-运输层
运输层概述 这里我们对运输层进行概述,之前文章所介绍的计算机网络体系结构中的物理层,数据链路层以及网络层,他们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信, 如图所示,局域网1上的主机与局域网2上的主机,通过互联的广域网进行通信,网络层的作用范围是主机到主机,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。 Ap是应用进程的英文缩写词,如何为运行在不同主机上的应用进程提供直接的通信服务,是运输层的任务,运输层协议又称为端到端协议,如图所示运输层的作用范围是应用进程到应用进程,也称为端到端。 接下来我们从计算机网络体系结构的角度来看运输层。
48 0
|
缓存 网络协议 算法
【计算机网络】应用层和运输层网络协议分析
【计算机网络】应用层和运输层网络协议分析
|
缓存 网络协议 算法
【计算机网络】第3章 运输层(下)
【计算机网络】第3章 运输层
|
网络协议 网络性能优化
第五章 运输层【计算机网络】4
第五章 运输层【计算机网络】4
51 0
|
14天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密