计算机网路第3章-运输层

news2024/11/17 23:37:58

概述和运输层服务

运输层协议为运行在不同主机上的应用进程提供了逻辑通信,从应用程序角度看,通过使用逻辑通信,就好像运行在不同主机上的进程直接相连在一起一样。

运输层和网络层的关系

网络层提供主机之间的通信,而运输层提供了不同主机上的不同进程的通信。

运输层只负责将自己的报文段提交给网络层或从网络层下载报文段,并不负责报文段在网络中的运输。

因特网运输层概述

因特网为用户提供了两种基本的运输层协议:

TCP(传输控制协议)和UDP(用户数据报协议)

其中,UDP和TCP最基本的责任是,将两个端系统间IP的交付服务扩展为运行在端系统上两个进程之间的交付服务。

将主机间交付扩展到进程间交付被称为运输层的多路复用与多路分解。

UDP和TCP也可以在报文段首部中包括差错检查字段,以提供完整性检查。

其中,进程到进程的数据交付和差错检查是两种最低限度的运输层服务,也是UDP只能提供的两种服务。

多路复用与多路分解

在接收端,运输层检查这些字段,标识出应用进程端口号,进而将报文段定向到该套接字。

将运输层报文段中的数据交付到正确的套接字的工作称为多路分解。

从源主机中不同套接字收集数据块,并为每块封装首部信息生成报文包,然后将报文报提交给网络层,这些工作被称为多路复用。

运输层报文段的基本组成

1.套接字有唯一的标识符。(即主机IP和端口号)

2.报文报有源端口号字段,目的端口号字段。(UDP报文段只有这两个,TCP还包括源IP字段和目的IP字段。)

其中端口号是一个16比特的数值,范围在0~65535之间。

其中0~1023是周知端口号,这是保留给某些众所周知的应用所使用的

诸如HTTP端口号是80。

无连接的多路复用与多路分解

即UDP所提供的多路复用和多路分解。

一个UDP套接字是由一个二元组全面标识的,该二元组包含一个目的IP和一个目的端口号

因此,如果两个UDP报文段拥有不同的源IP地址,但是具有相同的目的IP和目的端口号,这两个报文段就会被同一个UDP套接字所接收。

源端口号的用途是什么呢?

很简单,源端口号/源IP用来返回一个响应报文,响应报文中的目的IP和目的端口号就是请求报文的源IP和源端口号。

面向连接的多路复用和多路分解

即TCP所提供的多路复用和多路分解。

TCP与UDP一个细微区别就是,TCP是由一个四元组唯一标识的(目的IP、目的端口号、源IP、源端口号)这四个部分,只要有一个不同,那么就被TCP认为是两个不同的报文段,需要被两个独立的TCP套接字所接收。

下面,我们来阐述一个TCP报文段从网路到达目的主机的一个过程。

1.TCP服务器应用程序有一个“欢迎套接字”,该套接字在12000端口号上等待用户发来的连接建立请求。

2.现在有两条报文段被发送过来,两条报文段中,只有源IP不一样,其余的源端口号、目的IP、目的端口号皆相同。

3.欢迎套接字接收这两个报文段,同时进行分析判断两个报文段是否一致,因为两个报文段的源IP不一样,所以被认为是两个不同的报文段!

4.欢迎套接字创建两个新的TCP套接字,分别接收两个TCP连接请求报文段。

无连接运输:UDP

UDP只是做了运输协议所能做的最少工作:(多路复用/分解、差错检测)

实际上,如果应用程序使用的是UDP协议,那么UDP将会直接跟IP打交道。

值得注意的是,UDP发送报文段之前,发送方和接收方并没有握手,所以UDP也被称为是无连接的。

DNS就是一个常见的使用UDP协议的例子。

UDP的优点

1.关于发送什么数据以及何时发送的应用层控制更为精细

采用UDP的时候,只要应用程序将数据塞进UDP,UDP就会把数据打包进UDP报文段并且立即传送给网络层。

同时UDP相较于TCP没有拥塞控制机制,因此UDP可以比TCP有更加强大的性能体验,因为它并不需要额外的性能支出,用来提供额外的服务(拥塞控制机制、安全性保护等)

2.无需连接建立

TCP在开始连接之前,需要经过三次握手。

而UDP无需握手,即不需要构建连接,因此省去了建立连接的时间。

为此UDP协议没有建立连接的时延,这对于一些时延要求很低的应用程序,是必不可少的。

3.无连接状态

TCP需要在端系统中维护连接状态,包括接收和发送缓存、拥塞控制参数以及序号与确认号的参数。

而UDP不需要提供这些参数,因此UDP相较于TCP一般可以保持更多的活跃用户。

4.分组首部开销小

UDP报文段首部仅有:

目的IP和目的端口号。

而TCP报文段首部包含:

目的IP和目的端口号、源IP和源端口号。

综上,我们可以明白DNS为什么要使用UDP协议了,因为UDP协议没有建立连接的时延,这对于DNS来说非常重要,如果DNS采用TCP协议,那么DNS发送一个主机名查询报文段,将会获得较大的时延,这对于用户的体验是非常糟糕的。

虽然UDP协议不保证数据传输是可靠的,但这对于DNS是可容忍的,当使用UDP协议时,查询报文返回一个出错的数据后,DNS可以选择拒绝将出错数据传送给应用程序,或者将出错数据传送给应用程序并且给出报错信息。

不过值得注意的是,UDP虽然并不提供安全性保证,但可以在应用程序开发的时候,由开发人员在应用程序中内置安全性保护措施,从而使UDP也具有保护措施。

UDP报文段结构

UDP首部只有四个字段,每个字段占用两个字节。

长度字段指明了UDP报文段中的字节总数(首部加数据)。

检验和字段用来验证UDP报文段是否出错。

UDP检验和

UDP检验和提供了差错检测功能,但是这种功能仅仅能判断报文段是否出错,并不能判断出是哪一位字节或者哪些位字节出错,且不具备纠错的能力。

为此在UDP套接字检测到UDP报文段出错后,只能选择丢弃该报文段,或者将该报文段仍提交给应用数据,但附加一个出错信息用来应用程序提供报错信息。

UDP检验和的演算

UDP接收方对报文段中的所有16比特字的和进行反码运算,同时任何溢出都会被直接丢弃。

例如,下面我们由3个16比特的字:

0110 0110 0110 0000

0101 0101 0101 0101

1000 1111 0000 1100

其中按两个的和是:

1011 1011 1011 0101

再将这个和与上面的第三个比特相加,得:

0100 1010 1100 0010

再将这个和取反:

1011 0101 0011 1101

这就变成了检验和。

在接收方UDP套接字中,如果全部的四个比特字(原先的三个比特字和检验和)加在一起,如果该分组中没有出现错误,那么该和会是:

1111 1111 1111 1111

即全是1,但若16位中的某一位或多位出现了0,那么该分组中就出现了差错。

为什么UDP要具有差错检测

首先,如果端到端数据传输要提供差错检测(即不同主机上的不同应用进程传输),那么UDP就必须在端到端基础上在运输层提供差错检测。

这是一个在系统设计中被称为颂的端到端原则

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

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

相关文章

面试官的一句话,让五年功能测试老手彻夜难眠!

小王是一名软件测试工程师,已经在目前的公司做了四五年的功能测试。虽然一直表现得非常努力,但他还是没能躲过裁员。只能被动跳槽,寻找更好的职业机会。 然而事情并没有像他想象中那样顺利。在多次面试中小王屡屡碰壁,被面试官吐槽…

leetcode:面试题 17.04. 消失的数字(找单身狗/排序/公式)

一、题目: 函数原型:int missingNumber(int* nums, int numsSize) 二、思路: 思路1 利用“找单身狗”的思路(n^n0;0^nn),数组中有0-n的数字,但缺失了一个数字x。将这些数字按位异或0…

Antv G6入门之旅--combo图

目录 什么是AntV G6 G6 的特性 G6 文档 安装 1 在项目中使用 NPM 包引入 2 在 HTML 中使用 CDN 引入 使用 Step 1 创建容器 Step 2 数据准备 Step 3 创建关系图 Step 4 配置数据源,渲染 React 中使用 G6 Combo图 什么是AntV G6 G6 是一个图可视化引擎…

深度学习模型不确定性方法对比

©PaperWeekly 原创 作者|崔克楠 学校|上海交通大学博士生 研究方向|异构信息网络、推荐系统 本文以 NeurIPS 2019 的 Can You Trust Your Model’s Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift 论文为主线…

机器学习笔记 - 特斯拉的占用网络简述

一、简述 ​ 2022 年,特斯拉宣布即将在其车辆中发布全新算法。该算法被称为occupancy networks,它应该是对Tesla 的HydraNet 的改进。 自动驾驶汽车行业在技术上分为两类:基于视觉的系统和基于激光雷达的系统。后者使用激光传感器来确定物体的存在和距离,而视觉系统…

acwing第 126 场周赛 (扩展字符串)

5281. 扩展字符串 一、题目要求 某字符串序列 s0,s1,s2,… 的生成规律如下: s0 DKER EPH VOS GOLNJ ER RKH HNG OI RKH UOPMGB CPH VOS FSQVB DLMM VOS QETH SQBsnDKER EPH VOS GOLNJ UKLMH QHNGLNJ Asn−1AB CPH VOS FSQVB DLMM VOS QHNG Asn−1AB,其…

day10_面向对象_抽象_接口

今日内容 1.作业 2.final 3.抽象 4.接口 零、复习 按从大到小的顺序写出访问修饰符 public > protected > package (default)> private static修饰属性和方法的特点在内存的特点: 在方法区(不是在堆,也不是在栈)初始化的特点: 随类(字节码文件)加载到内存已经初始化使…

基于大数据的时间序列股价预测分析与可视化 - lstm 计算机竞赛

文章目录 1 前言2 时间序列的由来2.1 四种模型的名称: 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 &…

Redis不止能存储字符串,还有List、Set、Hash、Zset,用对了能给你带来哪些优势?

文章目录 🌟 Redis五大数据类型的应用场景🍊 一、String🍊 二、Hash🍊 三、List🍊 四、Set🍊 五、Zset 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO…

1300*B. Road Construction(构造菊花图)

Problem - 330B - Codeforces 解析&#xff1a; 1到任一点距离不超过二&#xff0c;并且有部分点不可以连边&#xff0c;直接统计所有不能连边的点&#xff0c;从之外的点中选一个点当作中心&#xff0c;构造菊花图即可。 #include<bits/stdc.h> using namespace std; i…

CSS常见选择器总结

1.简单选择器 简单选择器是开发中使用最多的选择器&#xff0c;包含&#xff1a; 元素选择器&#xff0c;使用元素的名称 类选择器&#xff0c;使用.类名 id选择器&#xff0c;使用#id id注意事项&#xff1a; 一个HTML文档里面的id值 是唯一的&#xff0c;不能重复 id值如…

阿里云服务器x86计算架构ECS实例规格汇总

阿里云企业级服务器基于X86架构的实例规格&#xff0c;每一个vCPU都对应一个处理器核心的超线程&#xff0c;基于ARM架构的实例规格&#xff0c;每一个vCPU都对应一个处理器的物理核心&#xff0c;具有性能稳定且资源独享的特点。阿里云服务器网aliyunfuwuqi.com分享阿里云企业…

特约|数码转型思考:Web3.0与银行

日前&#xff0c;欧科云链研究院发布重磅报告&#xff0c;引发银行界及金融监管机构广泛关注。通过拆解全球70余家银行的加密布局&#xff0c;报告认为&#xff0c;随着全球采用率的提升与相关技术的成熟&#xff0c;加密资产已成为银行业不容忽视也不能错过的创新领域。 作为…

尚硅谷kafka3.0.0

目录 &#x1f483;概述 ⛹定义 ​编辑⛹消息队列 &#x1f938;‍♂️消息队列应用场景 ​编辑&#x1f938;‍♂️两种模式&#xff1a;点对点、发布订阅 ​编辑⛹基本概念 &#x1f483;Kafka安装 ⛹ zookeeper安装 ⛹集群规划 ​编辑⛹流程 ⛹原神启动 &#x1f938;‍♂️…

gRPC之gateway集成swagger

1、gateway集成swagger 1、为了简化实战过程&#xff0c;gRPC-Gateway暴露的服务并未使用https&#xff0c;而是http&#xff0c;但是swagger-ui提供的调用服 务却是https的&#xff0c;因此要在proto文件中指定swagger以http调用服务&#xff0c;指定的时候会用到文件 prot…

WebService SOAP1.1 SOAP1.12 HTTP PSOT方式调用

Visual Studio 2022 新建WebService项目 创建之后启动运行 设置默认文档即可 经过上面的创建WebService已经创建完成&#xff0c;添加HelloWorld3方法&#xff0c; [WebMethod] public string HelloWorld3(int a, string b) { //var s a b; return $"Hello World ab{a …

Markdown语法详解

文章目录 [toc] 一、简介二、样式1. 标题2. 字体3. 引用4. 分割线5. 图片6. 超链接7. 列表8. 表格9. 代码 一、简介 以前写学习文档常用的软件都是Word或者CSDN自带的编辑器&#xff0c;但Word用起来不太灵活&#xff0c;而CSDN自带编辑器又感觉逼格不够&#xff08;主要原因&…

(自我剖析一下我博客“问答”中的第三个问题)准确率一直居低不上是什么原因引起的?

我提的问题是&#xff1a; “我使用单层GRU训练minist数据集时&#xff0c;准确率一直处于下图的状态是为什么&#xff1f; 什么原因引起的&#xff1f;” 这种debug就比较难受&#xff0c;因为程序是能跑的&#xff0c;任何“error”都没有出。这就表明在程序中有某些小细节没…

【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar

SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 Xcode14 MacOS12.6 iPhone Simulator iPhone 14 Pro Max SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建Tab…

数据集的特征提取

1、 特征提取 1.1、 将任意数据&#xff08;如文本或图像&#xff09;转换为可用于机器学习的数字特征 注&#xff1a;特征值化是为了计算机更好的去理解数据 字典特征提取(特征离散化)文本特征提取图像特征提取&#xff08;深度学习将介绍&#xff09; 2 特征提取API sklear…