当前位置: 首页 > news >正文

计算机网络-运输层

运输层

湖科大计算机网络
参考笔记,如有侵权联系删除

概述

运输层的任务:如何为运行在不同主机上的应用进程提供直接的通信服务

运输层协议又称端到端协议

在这里插入图片描述

运输层使应用进程看见的好像是在两个运输层实体之间有一条端到端的逻辑通信信道

运输层为应用层提供了两种不同的协议:

  • 面向连接的TCP
  • 无连接的UDP

端口号、复用与分用

TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程(为了使运行不同操作系统的计算机应用进程能够实现网络通信):

  • 端口号用16比特表示,取值范围0-65535:
  • 熟知端口号:0-1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议,例如FTP使用21/20,HTTP使用80,DNS使用53
  • 登记端口号:1024-49151,为没有熟知端口号的应用程序使用。
  • 短暂端口号:49152-65535,留给客户进程暂时使用。
  • 端口号只具有本地意义,端口号只是为了标识本计算机应用层中各进程,不同计算机的相同端口号没有联系

在这里插入图片描述

在这里插入图片描述

UDP与TCP的对比

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意:实际网络中,两端都可发送接收;一个TCP包含上千个报文段是很常见的

在这里插入图片描述

在这里插入图片描述

TCP的流量控制

滑动窗口机制:

  • TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小
  • TCP发送方收到接收方的零窗口通知后,启动持续计时器。持续计时器超时后,向接收方发送零窗口探测报文

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TCP的拥塞控制

拥塞:对网络中某一资源的需求超过了所能提供的可用部分,网络性能变坏

若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降

屏幕截图 2024-04-06 174321

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

快重传:使发送方尽快进行重传,而不是等超时重传计时器超时再重传

  • 要求接收方不要等待自己发送数据才捎带确认,而是要立即发送确认
  • 收到了失序的报文段也要立即发送对已收到报文段的重复确认
  • 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传

在这里插入图片描述

发送方一旦收到3个重复确认,就知道只是丢失了个别报文段,于是执行快恢复算法

  • 发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半,开始执行拥塞避免算法
  • 也有的快恢复门限ssthresh值和拥塞窗口cwnd值再增大一些,等于新的ssthresh+3

在这里插入图片描述

TCP超时重传时间的选择

不能直接利用某次测量得到的RTT样本来计算超时重传时间RTO

利用每次测量的RTT样本,计算加权平均往返时间RTTs(又称平滑的往返时间)

显然,超时重传时间RTO应略大于加权平均往返时间RTTs

在这里插入图片描述
在这里插入图片描述

Karn算法:在计算加权平均往返时间RTTs时,只要报文段重传了,就不采用其往返时间RTT样本。

问题:报文段时延突然增大很多,并且保存很长一段时间。根据算法导致重传时间无法更新。

修正:报文段每重传依次,就把超时重传时间RTO增大一些,典型做法取为旧的2倍

TCP可靠传输的实现

发送方的发送窗口并不总是和接收方的接收窗口一样大

TCP通常对不按序到达的数据是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程

TCP要求接收方必须有累积确认和捎带确认机制

  • 接收方不应该过分退迟发送确认
  • 捎带确认并不经常发生

TCP的通信是全双工通信

TCP基于以字节为单位的滑动窗口实现可靠传输

在这里插入图片描述

TCP连接建立

三次握手:
在这里插入图片描述

TCP连接释放

四次挥手:
在这里插入图片描述

是否需要时间等待?

如果没有,如果第四次挥手丢失,服务器会一直发送第三次挥手

在这里插入图片描述

TCP报文段的首部格式

TCP报文段等于首部加数据载荷

在这里插入图片描述

序号:占32比特,取值范围[0,2^32-1],序号增加到最后一个,下一个序号又回到0。

指出本TCP报文段数据载荷的第一个字节的序号··

确认号:占32比特,取值范围[0,2^32-1],序号增加到最后一个,下一个序号又回到0。

指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认

若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据

确认标志位ACK:=1确认号字段有效;=0确认号字段无效

TCP规定,在连接建立后所有传送的TCP报文都必须把ACK置1。

数据偏移:占4比特,并以4字节为单位。

指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远(实际上指出了TCP报文段的首部长度)

首部固定长度20字节,因此数据偏移字段最小值为(0101)(二进制)

首部最大长度60字节,因此数据偏移字段最大值为(1111)(二进制)

保留:占6比特,保留为今后使用,目前应置为0。

窗口:占16比特,以字节为单位。

指出发送本报文段的一方的接收窗口

流量控制

校验和:占16比特,检查TCP报文段的首部和数据载荷。计算时,加上伪首部。

同步标志位SYN:在TCP连接建立时同步序号。

终止标志位FIN:用来释放TCP连接。

复位标志位RST:用来复位TCP连接。=1表明出现了异常,需要重新建立连接。

推送标志位PSH:=1尽快上交应用进程。

紧急标志位URG:=1紧急指针有效,=0无效。

紧急指针:占16比特,以字节为单位,用来指明紧急数据长度。

当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送

选项:

  • 最大报文长度MSS选项:TCP报文段数据载荷部分最大长度
  • 窗口扩大选项:提高吞吐率
  • 时间戳选项:计算往返时间RTT;防止序号绕回PAWS
  • 选择确认选项

填充:确保报文段首部被4整除
指明紧急数据长度。

当发送方有紧急数据时,可将紧急数据插队到发送缓存的最前面,并立刻封装到一个TCP报文段中进行发送

选项:

  • 最大报文长度MSS选项:TCP报文段数据载荷部分最大长度
  • 窗口扩大选项:提高吞吐率
  • 时间戳选项:计算往返时间RTT;防止序号绕回PAWS
  • 选择确认选项

填充:确保报文段首部被4整除


408日快乐

相关文章:

  • 数学建模-最优包衣厚度终点判别法(主成分分析)
  • c#:简洁实现if-else语句
  • 背包问题四种类型
  • 如何在CentOS安装Nexus容器无公网IP远程管理本地仓库
  • ios swift5 “Sign in with Apple“(使用苹果登录)怎样接入(第三方登录)集成AppleID登录
  • 联网电脑上安装好的Python库转移到离线设备上
  • MFC通用静态库制作与使用
  • 10-热点文章-定时计算
  • 六、企业级架构缓存篇之memcached
  • AcWing-游戏
  • 02 _ 分布式系统的指标:啥是分布式的三围
  • 计算机体系结构(1) 介绍和基础
  • iOS MT19937随机数生成,结合AES-CBC加密算法实现。
  • C语言从入门到实战————文件操作
  • 【头歌-Python】 函数自学引导
  • Effective Java 笔记(一)
  • flutter的key在widget list的作用以及必要性
  • hadoop集群管理系统搭建规划说明
  • js正则,这点儿就够用了
  • VuePress 静态网站生成
  • 模型微调
  • 那些年我们用过的显示性能指标
  • 前端设计模式
  • 自制字幕遮挡器
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​批处理文件中的errorlevel用法
  • #DBA杂记1
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (11)MATLAB PCA+SVM 人脸识别
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (bean配置类的注解开发)学习Spring的第十三天
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (三)c52学习之旅-点亮LED灯
  • (一)基于IDEA的JAVA基础10
  • (转)Linq学习笔记
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .gitignore文件使用
  • .Net Core 中间件与过滤器
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET 使用配置文件
  • .Net8 Blazor 尝鲜
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET企业级应用架构设计系列之应用服务器
  • .Net小白的大学四年,内含面经
  • @Transactional事务注解内含乾坤?
  • [<事务专题>]
  • [30期] 我的学习方法
  • [AIGC] Redis基础命令集详细介绍
  • [C++][基础]1_变量、常量和基本类型
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [codevs] 1029 遍历问题
  • [cogs2652]秘术「天文密葬法」
  • [IE技巧] 让IE 以全屏模式启动
  • [IOI2007 D1T1]Miners 矿工配餐