计算机网络(五)——传输层

news2025/1/18 21:09:53

一、功能

       传输层的主要功能是向两台主机进程之间的通信提供通用的数据传输服务。功能包括实现端到端的通信、多路复用和多路分用、差错控制、流量控制等。

       复用:多个应用进程可以通过同一个传输层发送数据。

       分用:传输层在接收数据后可以将这些数据正确分发给相应的应用进程。

       端口号:在传输层中用端口号来区分一台主机上的不同应用进程。端口号只在本主机中有实际意义,用来唯一标识一个进程,不同主机的相同端口号之间没有联系。

二、UDP

        UDP是一种简单无连接且不可靠的传输层协议,只在IP数据报服务的基础上增加了复用和分用以及差错检测功能。在使用UDP协议进行通信之间不会建立连接,减少了网络开销以及发送时延。UDP不保证可靠交付,也没有拥塞控制。UDP是面向报文的,即无论应用层给UDP多长的报文,UDP都会完整地发送出去。基于这些特性,UDP常用于对实时性要求很高且对少量数据丢失不敏感的场景中

        UDP在进行差错检测时会在UDP报文前加上一个伪首部,之所以称其为伪首部是因为伪首部只负责参与差错检测,并不会发送出去。发送方首先会将首部的检验和部分填入全0,并在数据部分的后面填充0以使整个报文的长度为偶数个字节。然后以两个字节为单位对添加了伪首部的UDP报文作二进制反码求和运算就得到了校验和,最后将这个校验和替换掉原来填充的0,并去掉伪首部就可以将这个UDP报文转交给网络层了。接收方在收到UDP报文后也会先在报文前面加上伪首部,然后以两个字节为单位对UDP报文作二进制反码运算。如果结果为全1说明报文正确,否则表明报文在传输时出现了错误,接收方就会丢弃这个报文。UDP本身是不会要求发送方重新发送的,这也体现了UDP的不可靠性。TCP和UDP的差错检测相同,也使用了伪首部,不同的是当数据出错时TCP会要求发送方重新发送

三、TCP

        TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。

        面向连接是指:在使用TCP协议进行通信时,通信双方会先建立一条TCP连接,然后开始发送数据;当数据传输完毕后会将这条连接释放掉。

        可靠传输是指:第一,TCP在建立连接时会采用三次握手的形式来确保连接是可靠的。第二,接收方会对接收的数据进行差错检测,确保数据在传输过程中没有出现差错。第三,如果数据在传输时没有出现差错或丢失,那么接收方需要在规定时间内向发送方返回确认报文;如果发送方没有在规定时间内收到确认报文就会重新发送,确保发送的数据是可靠的。第四,TCP支持流量控制,通过滑动窗口机制来动态控制发送方的发送速率,避免接收方因来不及接收数据而丢弃。最后,TCP支持拥塞控制,会根据网络的拥塞情况调整发送的数据量,防止过多的数据涌入网络,进一步提升传输的可靠性。

       基于字节流是指:TCP将应用层发送过来的所有数据看成是一连串的字节序列(也就是字节流),TCP不会区分哪一部分是一个整体,只负责将这些字节按顺序编号之后分割成大小合适的一个个报文进行发送。接收方会根据字节的编号把这些报文按照顺序进行重组,还原成原来的字节流,再交由应用层来将字节流划分为不同的消息整体。

       TCP的三次握手

       客户端会先向服务器端发送连接请求报文段用来请求建立TCP连接;服务器端收到后会为本次连接分配缓存和变量,并向客户端发送确认报文段表示允许建立连接;客户端收到确认报文段后会为本次连接分配缓存和变量,并向服务器端发送对确认报文的确认,此时连接就成功建立了。

       TCP的四次挥手

       当客户端的数据发送完毕后会向服务器端发送连接释放报文段,表示自己已停止发送数据,但仍可以接收服务器端的数据。随后服务器端会向客户端发送确认报文段,此时客户端到服务器端方向的TCP连接被释放。待服务器端发送完数据后会向客户端发送连接释放报文段,客户端收到之后会给服务器端返回一个确认报文段,服务器端收到后便会关闭连接,而客户端会在发送完确认报文后再等待一段时间才会关闭连接。当客户端和服务器端都关闭连接后本次TCP连接彻底结束。

       客户端会在发送完确认报文后再等待一段时间才会关闭连接有两个原因

       一是为了确保确认报文能够被服务器成功接收到。如果确认报文在发送时出现了问题,服务器端会让客户端重发确认报文,此时客户端需要保持连接状态才能响应重发请求;只有服务器端收到了确认报文才会关闭连接。

      另一个原因是为了防止在旧连接中的数据对新建立的连接产生干扰。在旧连接中的数据可能会因为网络繁忙等原因一直处在网络中,如果客户端在发送完确认报文后立即关闭旧连接而开启新的连接,那么这些旧连接中的数据很有可能在新连接的过程中才到达,此时这些数据会被认为是新连接中传输的数据进而对新连接产生干扰。由于数据在网络中传输有生存时间,所以等待一段时间可以让这些旧连接的数据在网络中自然消逝,防止对新连接产生干扰。

       TCP的流量控制:发送方会估计当前网络的拥塞程度,进而自己确定一个发送窗口大小,称之为拥塞窗口;同时,接收方会根据自己当前接收缓存的大小来确定接收窗口的大小。那么发送窗口的实际大小为拥塞窗口和接收窗口的最小值。在通信过程中拥塞窗口和接收窗口是不断变化的,并通过滑动窗口机制来动态控制发送窗口,实现流量控制。

       TCP的拥塞控制:包括慢开始拥塞避免快重传快恢复

       慢开始:拥塞窗口初始为1个最大报文段长度,发送方每收到一个对新报文段的确认就把拥塞窗口增加一个最大报文长度;如果接收窗口足够大,那么下一次就会发送两个最大报文长度的数据;以此类推,拥塞窗口会以指数形式增长。慢开始用于快速探测网络的承载能力。

       拥塞避免:当拥塞窗口达到一个阈值时会进入拥塞避免阶段,此时每经过一个往返时间拥塞窗口只增加1个最大报文长度,从指数增长转为线性增长。拥塞避免用来降低拥塞发生的风险。

       快重传:接收方在收到一个失序报文段后会立即报告给发送方,如果连续收到了多个失序报文,那么接收方也会连续报告给发送方;当发送方连续收到3次报告后会立即重发丢失的报文而不必等待相应报文的计时器超时。

       快恢复:发送方在执行快重传后会将拥塞窗口变为原来的一半,随后采取拥塞避免的方式调整拥塞窗口。快恢复能够在避免网络拥塞的同时保持快速的数据传输。

       TCP和UDP的区别

       ①TCP是面向连接的协议,在数据传输前要建立连接;而UDP不需要建立连接。

       ②TCP提供可靠的传输服务,而UDP是不保证可靠传输。

       ③TCP由于要建立连接且要保证数据的可靠性,所以传输速率较低且网络开销较大;而UDP没有这些复杂的机制,发送过程简单,传输速率高,且实时性较好。

       ④TCP适用于对数据的准确性和完整性要求很高的场景,如文件传输、电子邮件等;UDP适用于对实时性要求很高且对数据准确性要求较低的场景,如实时会议、直播等。

       TCP和UDP也有相同之处,比如都是全双工通信差错检测方式相同等。

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

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

相关文章

基于Oracle与PyQt6的电子病历多模态大模型图形化查询系统编程构建

一、引言 1.1 研究背景阐述 在当今数字化时代,医疗行业正经历着深刻的变革,数字化转型的需求日益迫切。电子病历(EMR)作为医疗信息化的核心,其管理的高效性和数据利用的深度对于提升医疗服务质量、优化临床决策以及推动医学研究具有至关重要的意义。传统的电子病历管理系…

算法(蓝桥杯)贪心算法7——过河的最短时间问题解析

一、题目描述 在漆黑的夜里,N位旅行者来到了一座狭窄且没有护栏的桥边。他们只带了一只手电筒,且桥窄得只够让两个人同时过。如果各自单独过桥,N人所需的时间已知;若两人同时过桥,则所需时间是走得较慢的那个人单独行动…

《贪心算法:原理剖析与典型例题精解》

必刷的贪心算法典型例题! 算法竞赛(蓝桥杯)贪心算法1——数塔问题-CSDN博客 算法竞赛(蓝桥杯)贪心算法2——需要安排几位师傅加工零件-CSDN博客 算法(蓝桥杯)贪心算法3——二维数组排序与贪心算…

SQL2000在win10上安装的方法

安装前最好先关闭防火墙和一些杀毒软件,因为这些软件在安装过程中可能会碰到注册表等一下杀毒软件比较敏感的地带,如果违反杀毒软件的规则会被当做病毒强行终止删除 首相找到C盘下window文件中的sysWOW64文件 鼠标右键,点击属性、安全、高级 …

【12】Word:张老师学术论文❗

目录 题目 ​NO2 NO3 NO4 NO5 NO6 NO7.8 题目 NO2 布局→页面设置→纸张:A4→页边距:上下左右边距→文档网格:只指定行网格→版式:页眉和页脚:页脚距边界:1.4cm居中设置论文页码:插入…

软件授权管理中的软件激活向导示例

软件激活向导示例 在软件许可中,提供许可应该是简单和安全的。这适用于想要在中央许可证服务器上创建新许可证的软件开发人员,也适用于需要在其设备上获得许可证的最终用户。如果所讨论的系统有互联网连接,或是暂时的连接,就可以…

基于微信小程序的摄影竞赛系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

在IDEA中使用通义灵码插件:全面提升开发效率的智能助手

在IDEA中使用通义灵码插件:全面提升开发效率的智能助手 随着软件开发行业对效率和质量要求的不断提高,开发者们一直在寻找能够简化工作流程、提升代码质量的工具。阿里云推出的通义灵码插件正是这样一个旨在帮助开发者更高效地编写高质量代码的强大工具…

【Unity3D】利用Hinge Joint 2D组件制作绳索效果

目录 一、动态绳索 (可移动根节点) 二、静态绳索 三、利用Skinning Editor(Unity2022.3.15f1正常使用) 四、注意事项 一、动态绳索 (可移动根节点) 动态绳索 DynamicRope空物体 Anchor和whitecircle是相同位置的物体&#xff…

游戏引擎学习第80天

Blackboard:增强碰撞循环,循环遍历两种类型的 t 值 计划对现有的碰撞检测循环进行修改,以便实现一些新的功能。具体来说,是希望处理在游戏中定义可行走区域和地面的一些实体。尽管这是一个2D游戏,目标是构建一些更丰富…

2025.1.15——四、布尔注入

题目来源:ctfhub技能树 目录 一、基本操作:整理已知信息,得到本题为布尔注入 方法一:手工盲注(不推荐) step 1:判断具体形式 step 2:查询字段数 step 3:通过回显判…

PE文件:节表-添加节

在所有节的空白区域都不够存放我们想要添加的数据时,这个时候可以通过添加节来扩展我们可操作的空间去存储新的数据(如导入表、代码或资源)。 过程步骤 1.判断是否有足够的空间添加节表 PE文件的节表紧跟在PE头之后,每个节表的…

【前端动效】HTML + CSS 实现打字机效果

目录 1. 效果展示 2. 思路分析 2.1 难点 2.2 实现思路 3. 代码实现 3.1 html部分 3.2 css部分 3.3 完整代码 4. 总结 1. 效果展示 如图所示,这次带来的是一个有趣的“擦除”效果,也可以叫做打字机效果,其中一段文本从左到右逐渐从…

Python基于Django的图像去雾算法研究和系统实现(附源码,文档说明)

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

了解 BM25:一种高效的文本检索算法

什么是 BM25? BM25(Best Matching 25)是一种在信息检索领域非常著名的算法,它属于 TF-IDF 的改进版本,是许多现代搜索引擎和文本检索系统的核心算法之一。BM25 基于概率检索模型(Probabilistic Informatio…

PenGymy论文阅读

这里发现idea被人家先发了,没办法,资料收集的不够全面,现在来学习一下这个项目 这篇论文的贡献如下: 总的来说,他的主要工作是构建逼真的仿真环境,然后根据这个仿真环境生成真实的靶场,使得这个…

猫贫血吃什么能快速补血?

各位铲屎官们,看到自家猫咪无精打采、小脸苍白,是不是特别心疼?贫血可是猫咪健康的大敌,今天就来给大家支支招,哪些食物和方法能让猫咪快速补血,恢复活力! 一、红肉及内脏类 红肉是补血的“主力…

Redis 性能优化:多维度技术解析与实战策略

文章目录 1 基准性能2 使用 slowlog 优化耗时命令3 big key 优化4 使用 lazy free 特性5 缩短键值对的存储长度6 设置键值的过期时间7 禁用耗时长的查询命令8 使用 Pipeline 批量操作数据9 避免大量数据同时失效10 客户端使用优化11 限制 Redis 内存大小12 使用物理机而非虚拟机…

wireshark抓路由器上的包 抓包路由器数据

文字目录 抓包流程概述设置抓包配置选项 设置信道设置无线数据包加密信息设置MAC地址过滤器 抓取联网过程 抓包流程概述 使用Omnipeek软件分析网络数据包的流程大概可以分为以下几个步骤: 扫描路由器信息,确定抓包信道;设置连接路由器的…

在 Fluent 网格划分中使用薄网格特征

薄体模型的网格划分策略 薄体网格划分对于有效模拟薄壁结构或厚度明显小于其他尺寸的几何形状非常有利。当使用此类几何结构时,传统的体积网格划分技术可能会导致单元数量增加,因为它们试图捕获具有许多不必要单元的薄尺寸。薄体网格划分通过专门沿薄方…