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

2023-10-25 16:45
文章标签 运输 计算机网

本文主要是介绍计算机网路第3章-运输层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述和运输层服务

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

运输层和网络层的关系

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

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

因特网运输层概述

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

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就必须在端到端基础上在运输层提供差错检测。

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

这篇关于计算机网路第3章-运输层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/283874

相关文章

计算机网络(运输层)

运输层概述 概念 进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到三层(到网络层)的功能。 进程之间通信流程 以体系结构的角度来看

首发!《物流运输行业电子签最佳实践案例集》重磅发布

近日,法大大重磅发布《物流运输行业电子签最佳实践案例集》,旨在分享在物流行业深耕近10年的经验,为物流企业提供基于电子签技术的数字化创新参考。 该案例集精选中原大易、G7易流、河北快运、万联易达、浙江新颜物流、内蒙古多蒙德、天津小铁马和吉泰物流等物流企业为典型代表,呈现企业利用电子签名和数字化技术优化业务流程、提升服务质量、增强竞争力的成功案例,涵盖了从合同签署、货物追踪到供应链管理等多个方面的

助力航运管理数字智能化,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建江面河道运输场景下来往航行船只自动检测识别系统

在全球化浪潮的推动下,物流行业作为连接世界的桥梁,其快速发展与进化不仅重塑了国际贸易的格局,更深刻影响着全球贸易金融的进程。其中,海运作为大宗商品跨国、全球化贸易的支柱性运输方式,其重要性不言而喻。随着各国对航海运输的重视日益加深,构建世界级一流的海运队伍与港口设施已成为共同的目标。然而,传统的海运管理模式往往受限于工业化思维的束缚,缺乏数字化、智能化的技术支撑,难以适应快速变化的市场需求与竞争态

AW303 运输小猫

题目地址 易错点: 笔者由于没有进行数据初始化(排序以及数据填充)和状态转移中的一个字母r写成了l而调试了近一个小时. #include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#define ll long longusing namespace std;const ll INF=0x

如何用Java SpringBoot实现G县乡村生活垃圾治理运输地图?

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、Python、微信小程序、大数据实战项目集 ⚡⚡文末获取源码 文章目录 ⚡⚡文末获取源码G县乡村生活垃圾治理运输地图系统-研究背景G县乡村生活垃

油气界的“透视眼”!红外热像仪在油气储存及管道运输方面的应用

油气储存设施和管道由于老化、腐蚀、操作不当或自然灾害等原因,可能会发生泄漏,油气一旦遇到火源或高温环境,很容易引发火灾或爆炸。 红外热像仪在油气储存及管道运输方面的应用,具有显著的优势和重要性。它能够实时监测设施的运行状态,直观定位故障点,提高检测效率,预防事故的发生,从而确保油气储存和管道运输的安全与稳定。 油气储罐监测 储罐作为石化企业不可或缺的核心设施,承载着大量甲、乙类危险性

【计算机网络】[第五章:运输层][自用]

1 运输层概述 (1)概述: (2) 2 端口号、复用、分用的概念 (1) (2)不同的应用报文在传输层封装为TCP报文段,则叫做TCP复用;UDP复用同理;而UDP复用所得用户数据报和TCP复用得到的TCP报文段,在网络层都要使用IP协议封装成IP数据报,这叫做IP复用。         IP数据报首部中,协议字段的值,用来表明IP数据报数据载荷部分,封装的是何种数据单元。 (3)

计算机网络:运输层 - TCP 流量控制 拥塞控制

计算机网络:运输层 - TCP 流量控制 & 拥塞控制 滑动窗口流量控制拥塞控制慢开始算法拥塞避免算法快重传算法快恢复算法 滑动窗口 如图所示: 在TCP首部中有一个窗口字段,该字段就基于滑动窗口来辅助流量控制和拥塞控制。所以我们先讲解滑动窗口。 首先,发送方会维护一个发送缓存: 应用程序会把想要发送的数据写入到发送缓存中,而在发送缓存内部,维护一个发送窗口

计算机网络:运输层 - 概述

计算机网络:运输层 - 概述 运输层的任务端口号复用与分用UDP协议首部格式 TCP协议面向字节流 运输层的任务 物理层、数据链路层以及网络层,他们共同解决了将主机通过网络互联起来所面临的问题,实现了主机到主机的通信。 网络层的作用范围是主机到主机,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。 AP1 和 AP2 是局域网LAN1上主机A中

计算机网络5:运输层

概述 进程间基于网络的通信 计算机网络中实际进行通信的真正实体,是位于通信两端主机中的进程。 如何为运行在不同主机上的应用进程提供直接的逻辑通信服务,就是运输层的主要任务。运输层协议又称为端到端协议。 运输层向应用层实体屏蔽了下面网络核心的细节(例如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。 根据应用需求的不同,因特网的运输层