计算机网络-运输层

运输层

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

概述

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

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

在这里插入图片描述

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

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

  • 面向连接的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"&…

第一部分 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;但也可小于屏幕并浮动在其他窗口之…

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

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

刷题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; 最…

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

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

Ceph学习 -4.Ceph组件介绍

文章目录 1.Ceph组件介绍1.1 组件介绍1.2 流程解读1.2.1 综合效果图1.2.2 数据存储逻辑 1.3 小结 1.Ceph组件介绍 学习目标&#xff1a;这一节&#xff0c;我们从组件介绍、流程解读、小结三个方面来学习。 1.1 组件介绍 无论是想向云平台提供 Ceph 对象存储和 Ceph 块设备服务…

Xinstall助力提升用户体验:一键打开App用户页面

在移动互联网时代&#xff0c;App已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着App数量的激增&#xff0c;如何让用户更便捷地打开和使用App&#xff0c;提升用户体验&#xff0c;成为了开发者和广告主们亟待解决的问题。此时&#xff0c;Xinstall作为国内专业…

[Linux][权限][粘滞位]详细解读,深入了解Linux权限

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户(root)、普通用户 超级用户&#xff1a;可以在Linux系统下做任何事情&#xff0c;不受限制普通用户&#xff1a;在Linux下做有限的事情&#xff0c;可以有多个超级用户的命令提示符是**“#”&#xff0c;普通用户的命…

Linux中磁盘管理

一.磁盘管理的概括和简要说明 磁盘空间的管理&#xff0c;使用硬盘三步&#xff1a; &#xff08;1&#xff09;分区&#xff1a; &#xff08;2&#xff09;安装文件系统格式化 &#xff08;3&#xff09;挂载&#xff1a; 硬盘的分类&#xff1a; &#xff08;1&#x…

基于单片机自动增益放大电路0-3倍系统

**单片机设计介绍&#xff0c;基于单片机自动增益放大电路0-3倍系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机自动增益放大电路0-3倍系统是一个电子工程领域的创新设计&#xff0c;它结合了单片机技术和自动增益…

安卓开机启动流程

目录 一、整体框架二、流程代码分析2.1 Boot ROM2.2 Boot Loader2.3 Kernel层Kernel代码部分 2.4 Init进程Init进程代码部分 2.5 zygote进程zygote代码部分 2.6 SystemServer进程SystemServer代码部分 2.7 启动Launcher与SystemUI 三、SystemServices3.1 引导服务3.2 核心服务3…

Openstack(T)部署ceilometer-gnocchi-panko-aodh

前言&#xff1a;简单概述4个服务做什么&#xff0c;如何协同起来 ceilometer负责采集数据&#xff0c;采集的数据分为计量数据和事件数据&#xff0c;计量数据交给gnocchi处理(本文gnocchi将计量数据存储在ceph存储池中)&#xff0c;事件数据存储在panko中&#xff0c;aodh负…