计算机网络_04_传输层

news2024/11/19 1:52:25

文章目录

  • 1.什么是传输层
  • 2.传输层提供了什么服务
  • 3.传输层协议TCP

1.什么是传输层

传输层是OSI七层体系架构中的第四层, TCP/IP四层体系架构中的第二层, 从通信和信息处理两方面来看,“传输层”既是面向通信部分的最高层,与下面的三层一起共同构建进行网络通信所需的线路和数据传输通道,同时又是面向用户的最低层,因为无论何种网络应用,最终都需要把各种数据报传送到对方。应用层的用户数据通过传输层协议在不同网络中的主机间进行传输,因为仅靠网络层把数据传送到目的主机上还是不够的,还必须把它交给目的主机的应用进程。
在这里插入图片描述
当网络层把源主机上发出的数据包传送给目的主机后,还需要将数据交到对应的应用程序进程. 位于两台网络主机间的真正数据通信主体不是这两台主机,而是两台主机中的各种网络应用进程。因为在同一时刻,两主机间可以进行多个应用通信. 而这里的应用进程识别就要依靠“传输层”了,它通过“端口”将不同应用进程进行对应的。
在这里插入图片描述

2.传输层提供了什么服务

传输层的主要作用就是为它的上层提供端到端的数据传输服务, 即保证应用层的数据能够从源主机安全的到达目的主机上对应的应用进程.

1.什么是端到端的服务?

端到端通信是传输层为主机之间上的应用进程提供的通信服务. 传输层的数据段通过网络层将数据段交付到对端主机的目的进程,不管目的主机有多远,中间有多少机器,只要在两头间的应用进程间建立连接,就说已经是端到端连接了(两个进程间的连接),即端到端是逻辑链路,这条路可能经过了很复杂的物理路线,但两端程序不管,就好像它们是直接相连的一样,只认为是两端的直连.
在这里插入图片描述
你比如你要将数据从A传送到E,中间可能经过A→B→C→D→E,对于传输层来说他并不知道b,c,d的存在,他只认为我的报文数据是从a直接到e的,这就叫做端到端。

2.如何实现端到端的服务?

传输层实现端到端的服务有两种方式,一种是面向连接的,一种是面向无连接的.

面向连接:在提供传输服务前需要先建立专门的传输连接(类似一条专门用于两个进程之间进行通信的虚拟信道),而且这条连接是可管理的,在需要或通信结束时进行拆除。面向连接的传输服务是可靠的传输服务,而且可提供拥塞控制和差错控制功能,如TCP提供的传输服务。

无连接:在提供服务前不需要建立专门的传输连接,直接向目的节点发送数据,不管是否有可传输的通道,只提供不可靠(仅做尽力传输)的传输服务,如UDP提供的传输服务。

上述服务与网络层提供的面向连接和无连接服务很像,但网络层是通信子网的一个组成部分,网络服务质量并不可靠,如频繁地丢失分组,网络层系统可能崩溃或不断地进行网络复位。对于这些情况,用户将束手无策,因为用户不能对通信子网加以控制。而传输层能对通信子网进行管理和控制(什么进行管理和控制,网络层信息该丢还是丢,只不过丢了之后能够知道并重新对数据进行发送或其它操作管理)。

3.传输层服务

传输层要完成端到端的透明数据传输,至少要分为两个步骤:一是应用进程之间虚拟传输连接的建立(此处仍仅针对面向连接的传输层协议),二是源端用户数据沿着传输连接传送到目的端。

在整个数据传输过程中,传输层服务需要完成以下8个方面的基本功能:传输层寻址、传输连接建立、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复.

4.连接与释放连接服务

|4.1传输层寻址

虽然网络层把数据分组从源主机传送到了目的主机,但是这并不代表数据的传输过程就全部完成了,因为数据分组还没有真正地交付给相应的应用进程,此时应用进程才是数据通信主体。而我们又知道,同一时间的通信双方可能存在许多并发应用进程,那么源端来的数据分组该交给哪个应用进程呢?这就涉及传输层的寻址问题了。

传输层(二)传输层寻址方案

|4.2连接建立

传输层有两个重要术语TSAP与TPDU,它们贯穿整个传输层数据连接以及传输服务的始末.

TSAP(Transport Layer Service Access Point):传输层服务访问点是上层(应用层)调用下层(传输层)的一个逻辑接口,其实就是我们所说的端口,端口用来标识应用层的进程.

TPDU(Transport Layer Data Unit):传输层与对等层之间传输的报文,也就是"数据段",其实每一层都有每一层的SAP和PDU.

传输层TCP数据段格式:
在这里插入图片描述

源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。
目的端口号:16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。
序列号:对数据包进行标记,以便在到达目的地后重新重装,假设当前的序列号为 s,发送数据长度为 l,则下次发送数据时的序列号为 s + l,每发送一次数据,就累加一次该数据字节数的大小。在建立连接时由计算机生成一个随机数作为序列号的初始值,用来解决网络包乱序问题。客户端的序列号为上一个服务器端的确认号.
确认序号:收到对方报文后都要发送一个确认报文(包含确认号)表示确认收到该报文,并表明期望收到的下一个报文段的序号值。 TCP 的可靠性,是建立在「每一个数据报文都需要被确认收到」的基础之上的,用来解决不丢包的问题。客户端的确认号,是上一个服务器端的序列号+负载数据.
数据偏移:TCP 报文段的头部长度 ,它指出了 TCP报文段的数据起始处距离TCP报文的起始处有多远。
由于 4 位二进制数能表示的最大十进制数字是 15,这也侧面限制了 TCP 首部的最大长度
保留: 保留为今后使用,但目前应置为 0
标志位: 6位标志位,每一位的值只有 0 和 1

  • ACK:当 ACK = 1 的时候,确认号(Acknowledgemt Number)有效,称携带 ACK 标志的 TCP 报文段为确认报文段,为0表示数据段不包含确认信息,确认号被忽略。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 设置为 1
  • SYN:当 SYN = 1 的时候,表明这是一个请求连接报文段。 一般称携带 SYN 标志的 TCP 报文段为同步报文段。 在 TCP 三次握手中的第一个报文就是同步报文段,在连接建立时用来同步序号。对方若同意建立连接,则应在响应的报文段中使 SYN = 1 和 ACK = 1。
  • FIN:当 FIN = 1 时,表示此报文段的发送方的数据已经发送完毕,并要求释放 TCP 连接。一般称携带 FIN 的报文段为结束报文段。在 TCP 四次挥手释放连接的时候,就会用到该标志。
  • RST:当 RST = 1时,表示 TCP 连接中出现严重错误,需要释放并重新建立连接。 一般称携带 RST 标志的 TCP 报文段为复位报文段。
  • PSH:当PSH=1时,表明该数据段高优先级,接收方TCP应尽快将数据推给接收程序,不要等到整个TCP序列缓存都填满了后再交付。
  • URG:当URG=1时,表明此数据段应尽快传送,而不要按本来的队列次序来传送。与紧急指针字段共同使用,紧急指针指出在本数据段中紧急数据所在的最后一个字节的位置,使接管方知道紧急数据有多长。

窗口大小:该字段明确指出了现在允许对方发送的数据量,它告诉对方本端的 TCP 接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。 窗口大小的值是指,从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。假如确认号是 701 ,窗口字段是 1000。这就表明,从 701 号算起,发送此报文段的一方还有接收 1000 (字节序号是 701 ~ 1700) 个字节的数据的接收缓存空间。
校验和:由发送端填充,接收端对 TCP 报文段执行 CRC 算法,以检验 TCP 报文段(头部+有效载荷)在传输过程中是否损坏,如果损坏这丢弃。
紧急指针:仅在 URG = 1 时才有意义,指出本数据段中的紧急数据字节数,同时指出了紧急数据的末尾在数据段中的位置,发送方 TCP 把紧急数据插入到本数据段有效载荷的最前面,而在紧急数据后面的数据仍是普通数据。
选项和填充:可扩展部分。

传输层建立/拒绝连接需要用到三种类型的TPDU一一CR,CC,RJ
CR:连接请求数据段
CC:连接确认数据段
RJ:拒绝数据段
传输层建立/拒绝连接的大致流程:
在这里插入图片描述
TCP建立连接/断开连接的流程:
在这里插入图片描述
TCP规定,建立连接时发送的同步数据段(即SYN = 1的报文段)不能携带数据,但要消耗掉一个序号.

  • Ⅰ:建立连接时,主机A发送同步报文,并将同步位SYN置为1,确认位ACK置为0(代表当前报文的确认序号无效),随机产生一个序列号seq=k,然后将该数据包发送给主机B,主机A进入SYN_SENT状态,等待主机B确认。
  • Ⅱ:主机B收到报文后由同步位SYN=1知道主机A请求建立连接,主机B将同步位SYN和确认位ACK都置为1,确认序号ack=J+1,随机产生一个序号seq=y,并将该报文发送给主机A以确认收到该连接请求,主机B进入SYN_RCVD状态。
  • Ⅲ:主机A收到确认报文后,检查ACK是否为1,再检查确认序号ack是否为k+1,如果正确则将确认位ACK置为1,ack=y+1(表示我收到你序号位y的报文了),并将该报文发送给主机B,主机B检查ACK是否为1,再检查ack是否为y+1,如果正确则成功建立连接,主机A和主机B进入ESTABLISHED状态,完成三次握手,随后主机A与主机B之间可以开始传输数据了。

断开连接:

  • Ⅰ:断开连接时,主机A发送一个终止报文,并将终止位FIN置为1,确认位ACK置为0,随机产生一个序列号seq=u,然后将该报文发送给主机B,用来关闭主机A到主机B的数据传送,主机A进入FIN_WAIT_1状态。
  • Ⅱ:主机B收到终止报文后,发送一个确认报文给主机A,并将确认位ACK置为1,确认序号ack=u+1,随机生成一个序号seq=v,主机B进入CLOSE_WAIT状态。
  • Ⅲ:主机B发送一个终止报文,并将终止位FIN置为1,确认位ACK置为1,随机序号seq=w,确认号=u+1,用来关闭主机B到主机A的数据传送,主机B进入LAST_ACK状态。
  • Ⅳ:主机A收到终止报文FIN后,主机A进入TIME_WAIT状态,接着发送一个确认报文ACK给主机B,确认序号为ack=w+1,序号seq=u+1,主机B进入CLOSED状态,完成四次挥手。

为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

这是因为主机B在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给主机A。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

5.数据传输服务

传输层在数据传输时提供了流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务.
传输层TCP的流量控制和拥塞控制(图文详解)
如何理解传输层的多路复用与多路分解

3.传输层协议TCP


补充:
通信子网(communication subnet,或简称子网): 是指网络中实现网络传输功能的设备及其软硬件的集合,传输设备、网络传输协议、传输控制软件等属于通信子网,是网络的内层,负责信息的传输. 简而言之就是由各种网络传输设备(中继器、集线器、网桥、路由器、网关等硬件设备)和传输线路组成,主要负责数据的传输. 通信子网对应OSI体系架构中的下三层(物理/数据链路/网络层).

资源子网:资源子网由计算机系统、终端、终端控制器、连网外设、各种软件资源与信息资源组成, 主要负责数据的处理和数据存储,资源子网对应OSI体系结构的上三层(应用/表示/会话层).
点到点传输:两个设备直接相连(中间不经过任何其它设备)的通信叫点到点通信。它只提供一台机器到另一台机器之间的通信,不会涉及到程序或进程的概念。
点到点通信是针对数据链路层或网络层来说的,因为数据链路层只负责直接相连的两个节点之间的通信,一个节点的数据链路层接受ip层数据并封装之后,就把数据帧从链路上发送到与其相邻的下一个节点。 点对点是基于MAC地址和或者IP地址,是指一个设备发数据给与该这边直接连接的其他设备,这台设备又在合适的时候将数据传递给与它相连的下一个设备,通过一台一台直接相连的设备把数据传递到接收端。由物理层、数据链路层和网络层组成的通信子网为网络环境中的主机提供点到点的服务.
序列号:TCP协议工作在OSI的传输层,是一种可靠的面向连接的数据流协议,TCP之所以可靠,是因为它保证了传送数据包的顺序。顺序是用一个序列号来保证的。响应包内也包括一个序列号,表示接收方准备好这个序列号的包。在TCP传送一个数据包时,它会把这个数据包放入重发队列中,同时启动计时器,如果收到了关于这个包的确认信息,便将此数据包从队列中删除,如果在计时器超时的时候仍然没有收到确认信息,则需要重新发送该数据包。另外,TCP通过数据分段中的序列号来保证所有传输的数据可以按照正常的顺序进行重组,从而保障数据传输的完整。
TCP序列号是两个方向的,每个方向有自己的序列号,这个序列号是随机产生的.
客户端的序列号为上一个服务器端的确认号,客户端的确认号,是上一个服务器端的序列号+负载数据.

参考:
端到端通信
TCP协议详解
TCP/IP协议详解
《深入理解计算机网络》之传输层总结

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

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

相关文章

bootstap_小项目

通过bootstrap画一个简单的后台管理页面&#xff0c;知识有限&#xff0c;页面粗糙&#xff0c;一种记录方式 页面效果展示 首页页面代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible&qu…

Uva11059 Maximum Product(最大乘积)

1、题目 Uva 11059 2、题意 输入 n n n 个元素组成的序列 S S S&#xff0c;你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数&#xff0c;应输出0&#xff08;表示无解&#xff09;。 1 ≤ n ≤ 18 &#xff0c; − 10 ≤ S i ≤ 10 1 \le n \le 18&…

测试小白必看!接口测试必需掌握的知识要点!

接口测试 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 接口测试原理 通过测试程序模拟客…

SpringBoot中使用JdbcTemplate访问Oracle数据库

Oracle相信大家都不陌生吧&#xff0c;一个大型的数据库&#xff0c;至于数据库&#xff0c;我相信各位都比较熟悉了&#xff0c;一个软件系统&#xff0c;不论是我们常做的App、小程序、还是传统的web站点&#xff0c;我们都有用户的信息&#xff0c;相关业务的数据&#xff0…

公司如何禁止拷贝文件

公司如何禁止拷贝文件 安企神U盘管理系统下载使用 禁止拷贝文件是一种数据安全措施&#xff0c;通常在企业中用于保护重要信息和知识产权。禁止拷贝文件的方法需要根据公司的实际情况来选择和实施&#xff0c;以下是一些常见的方法&#xff0c;可用于防止文件拷贝&#xff1a…

Splunk 之 filed 恢复

1: 背景&#xff1a; 我们在工作过程中&#xff0c;或者是和很多team 进行交互的时候&#xff0c;总会有 filed 共用的情况&#xff0c;还有就是filed 会被相同权限的同事删除等等&#xff0c;这种情况下&#xff0c;就要求做好 /opt/splunk/etc/apps 的备份工作。 如果知道原…

Amazon Lambda 转 Container Image 方式部署

背景描述 对于从 Lambda Console通过 Author from scratch 创建的函数, 可以直接在浏览器中编辑代码和调试, 非常方便. 不过由于 Lambda 函数 Quota 限制 Console 编辑器最大 3MB, 包含 Layer 和自定义 Runtim 后最大 250MB, 并且此配额不支持提限, 因此当函数体量较大时就不适…

基于AI与物联网技术的智能视频监控系统架构剖析

智能视频监控系统正逐渐成为我们日常生活和工作中不可或缺的一部分。基于物联网的智能监控系统架构为我们在各个领域提供了更高效、智能化和安全的监控解决方案。本文将以旭帆科技EasyCVR视频监控云平台为例&#xff0c;介绍基于AI、物联网的智能监控系统的架构&#xff0c;并探…

一网打尽——线粒体基因组高级分析

线粒体堪称生命活动的“能量供给站”&#xff0c;这种存在于大多数细胞中的细胞器&#xff0c;拥有自身的遗传物质和遗传体系&#xff0c;除了为细胞供能之外&#xff0c;线粒体还参与到多种细胞功能过程中&#xff0c;拥有调控细胞生长和细胞周期的能力。 典型的动物线粒体是…

【BUG】Nginx转发失败解决方案

最近在做项目的时候出现了一个问题&#xff0c;琢磨了好久&#xff0c;来浅浅记录一下。 这个项目后端使用的是gateway网关和nacos实现动态的路由&#xff0c;前端使用nginx来管理前端资源&#xff0c;大体流程&#xff1a;浏览器发起请求&#xff0c;经过nginx代理&#xff0c…

智能化燃气场站建设4要点!

关键词&#xff1a;智慧燃气、智慧燃气场站、智慧燃气建设、智慧燃气平台、 设备设施数字化管理平台 建 议 建设智能燃气场站&#xff0c;首先&#xff0c;要调研现有场站&#xff0c;摸清掌握现有场站智能化数据。在现有设施基础上&#xff0c;对现有燃气场站进行技术升级设…

Angular-03:组件模板

各种学习后的知识点整理归纳&#xff0c;非原创&#xff01; 组件模板 ① 数据绑定② 属性绑定③ 类名绑定④ 样式绑定⑤ 事件绑定⑥ 获取原生DOM对象6.1 在组件模板中获取6.2 在组件类中获取 ⑦ 双向数据绑定⑧ 内容投影8.1 select选择器8.2 单槽投影8.3 多槽投影 ⑨ 安全操作…

[开源]传统实体产业提供进销存管理解决方案,助传统企业降本增效

一、开源项目简介 管店云, 技术链接产业. 管店云为传统实体产业提供进销存管理解决方案&#xff0c;实现进货、库存、销售、收银、记账完整的业务场景&#xff0c;帮助传统产业实现数字化转型&#xff0c;提升管理效率&#xff0c;提高自身数字化经营的能力&#xff0c;让管人管…

Unity的碰撞检测(六)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(五)”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic&#xff0c;但是Collision Detection属性不同的碰撞检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两个游戏对象都具…

退运险业务及系统架构演进史

作者&#xff1a;曾利⺠、杨代铭 ⽂章简介&#xff1a;本⽂回顾退运险上线⼗年以来相关系统架构的演进。 背景    退运险对于我司来说是⼀个举⾜轻重⼀款产品&#xff0c;初创时期贡献了99.9%的 保费收⼊&#xff0c;随着公司的发展各类产品的不断创新&#xff0c;退运险的…

前端移动web高级详细解析一

01-平面转换 简介 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用 概念&#xff1a;改变盒子在平面内的形态&#xff08;位移、旋转、缩放、倾斜&#xff09; 平面转换也叫 2D 转换&#xff0c;属性是 transform 平移 transform: translate(X轴移动距…

YOLOv5算法改进(21)— 添加CA注意力机制 + 更换Neck网络之BiFPN + 更换损失函数之EIoU

前言:Hello大家好,我是小哥谈。通过上节课的学习,相信同学们一定了解了组合改进的核心。本节课开始,就让我们结合论文来对YOLOv5进行组合改进(添加CA注意力机制+更换Neck网络之BiFPN+更换损失函数之EIoU),希望同学们学完本节课可以有所启迪,并且后期可以自行进行YOLOv5…

记一次任意文件下载到Getshell

任意文件下载&#xff08;Arbitrary File Download&#xff09;是一种常见的 Web 攻击技术&#xff0c;用于窃取服务器上任意文件的内容。攻击者利用应用程序中的漏洞&#xff0c;通过构造恶意请求&#xff0c;使应用程序将任意文件&#xff08;如配置文件、敏感数据等&#xf…

IDE的组成

集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09;是用于提供程序开发环境的应用程序&#xff0c;一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务…

这场研讨会硬件工程师不要错过

在高速PCB设计中如何保障高频信号的传输和接收&#xff0c;以及保证信号完整性和稳定性&#xff1f; 如何解决EMI抑制、时钟分配和功率供应的问题&#xff1f; 如何使用开源EDA工具 KiCad&#xff1f; 如何使用DFM软件高质量提升pcb产品制造&#xff0c;优化制造成本&#x…