计算机网络-运输层

运输层

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

概述

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

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

在这里插入图片描述

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

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

  • 面向连接的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日快乐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

导出加入域控的电脑清单

要导出加入域控的所有电脑清单,包括计算机名等基本信息,可以使用 PowerShell 中的 Get-ADComputer cmdlet。下面是一个基础示例脚本,用于从Active Directory (AD)中批量导出所有加入域的计算机名称及可能的其他相关信息,并将其保存…

嘉轩智能工业科技诚邀您参观2024第13届生物发酵展

参展企业介绍 自2005年成立以来,嘉轩一直致力于工业智能永磁滚筒的研发、制造及销售,具有十多年的从业经验,公司主营产品包括工业智能永磁滚筒、机电智能诊断、工业智能电机等,高效智能自驱动永磁滚筒为我公司目前主导产品&#x…

thinkphp6使用阿里云SDK发送短信

使用composer安装sdk "alibabacloud/dysmsapi-20170525": "2.0.24"封装发送短信类 发送到的短信参数写在env文件里面的 #发送短信配置 [AliyunSms] AccessKeyId "" AccessKeySecret "" signName"" templateCode"&…

SpringFramework实战指南(八)

SpringFramework实战指南(八) 5.1 场景设定和问题复现5.2 解决技术代理模式5.1 场景设定和问题复现 准备AOP项目 项目名:spring-aop-annotation pom.xml <dependencies><!--spring context依赖--><!--当你引入Spring Context依赖之后,表示将Spring的基础依赖…

第四十七章 为 Web 应用程序实现 HTTP 身份验证

文章目录 第四十七章 为 Web 应用程序实现 HTTP 身份验证Apache 中的标准 HTTP 身份验证 (mod_auth)在处理请求的同时在 CSP 中进行身份验证。 第四十七章 为 Web 应用程序实现 HTTP 身份验证 Apache 模块&#xff08;mod_csp*.so/dll 和 CSPa*[Sys].so/dll&#xff09;允许 I…

Go语言中如何实现继承

完整课程请点击以下链接 Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间 Go语言中没有传统意义上的类和继承的概念&#xff0c;但可以通过嵌入类型&#xff08;embedded types&#xff09;来实现类似的功能。嵌入类型允许一个结构…

第一部分 Vue讲解(代码版)

1.第一个vue实例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-w…

Android Activity 介绍

Activity Activity 是一个应用组件&#xff0c;用户可与其提供的屏幕进行交互&#xff0c;以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕&#xff0c;但也可小于屏幕并浮动在其他窗口之…

系统参数指标:QPS、TPS、PV、UV等

QPS QPS&#xff1a;Queries Per Second 是每秒查询率&#xff0c;是一台服务器每秒能够相应的查询次数&#xff0c;是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准&#xff0c;即每秒的响应请求数&#xff0c;也即是最大吞吐能力。 TPS TPS&#xff1a;Tra…

性能优化 - 你知道开发React项目中,可以做哪些性能优化吗

难度级别:中高级及以上 提问概率:75% 在React项目开发中,面临着比较大的问题就是组件更新以及重复渲染的问题,基于这两点,我们可以在日常开发工作中,可以通过以下几点,来提升React的性能,加快组件更新对比,避免过多的重复渲染问题。 …

MySQL - MySQL数据库的事务(二)

1. SQL标准中对事务的4个隔离级别都是如何规定的? 数据库中多个事务并发时可能产生的问题包括脏写、脏读、不可重复读、幻读几个问题,那么针对这些多事务并发的问题,实际上SQL标准中就规定了事务的集中隔离级别,用来解决这些问题。 在SQL标准中规定了4中事务隔离级别,就…

刷题DAY48 | LeetCode 198-打家劫舍 213-打家劫舍II 337-打家劫舍III

198 打家劫舍&#xff08;medium&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统…

Linux笔记-对xargs的理解(2023-12-13)

此篇记录在个人笔记库的时间是2023-12-13&#xff0c;公布到互联网上的时间是2024-04-09 这个命令最开始是在5年前看人用过&#xff0c;当时不太理解&#xff0c;最近又看到有人在用&#xff0c;突然间就通了&#xff0c;也查阅了点资料&#xff0c;记录下这个笔记&#xff1a…

吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.5-4.8

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第四周&#xff1a;深层神经网络(Deep Neural Networks)4.5 为什么使用深层表示&#xff1f;&#xff08;Why deep representations?&#xff09; 第一门课&#xff1a;神经网络和深度学习 (…

CKA 基础操作教程(五)

Kubernetes Ingress 理论学习 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 资源示例&#xff1a; apiVersion: networking.k8s.io/v1 # 指定 Kubernetes 中使用的 API 版本 kind: Ingress # 指定对象…

c语言 :柔性数组与c/c++内存领域的划分

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一 柔性数组&#xff08;1&#xff09;什么是柔性数组1&#xff09;柔性数组的声明2&#xff09;柔性数组的特性 &#xff08;2&#xff09;柔性数组的使用 二 c/c内…

APx500音频分析仪硬件简介

两通道模拟输出&#xff0c;两通道或以上的模拟输入接口 线性编码数字音频接口&#xff08;AES/EBU,TOSLINK,SPDIF&#xff09;Linear PCM 脉冲密度调制码流&#xff08;需要APx-PDM选件支持&#xff09; Bluetooth蓝牙音频码流&#xff08;需APx-BT选件支持&#xff09; 最…

linux安装docker(可靠)

卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.配置Docker的yum库 首先要安装一个yum工…

企业微信客户联系功能获取token接口走代理报403错误

问题描述:项目中在实现企业微信-客户联系功能时,第一步是调用接口获取企业token. https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpidxxx&corpsecretxxx. 我们的网络架构分为: 外网,DMZ区,内网. 服务部署在内网,访问外网需要走DMZ区代理转发. 我们的DMZ区nginx中配置的…

用二八定律分析零售数据,不就更直观了吗?

20%的商品贡献了80%的销售金额&#xff0c;你会不会想知道这些商品的销售金额、毛利、销售金额累计占比、毛利累计占比&#xff0c;会不会想知道这些商品在各个门店的销售表现&#xff1f;看是否能进一步提高销售金额&#xff0c;提高毛利。这样的报表该怎么做&#xff1f;奥威…