0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

传输层的主要功能是什么

科技绿洲 来源:Linux开发架构之路 作者:Linux开发架构之路 2023-11-11 16:18 次阅读

一、传输层的主要功能是什么?

分割并重新组装上层提供的数据流,为数据流提供端到端的传输服务。

二、传输层如何区分不同应用程序的数据流?

因为,对应传输层而言,它只需要知道目标主机上的哪个服务程序来响应这个程序,而不需要知道这个服务程序是干什么的。因此,我们只需要能够抽象的表示出来这些应用程序和服务程序即可。我们使用端口号来抽象标识每个网络程序。

图片

因此:在同一IP地址(同一个目标主机)上不同的端口号是两个不同的链接。IP地址和端口号用来唯一的确定网络上数据的目的地。

三、传输层有哪些协议?

传输层的两大协议:TCP(传输控制协议)UDP(用户数据包协议)

TCP是一个可靠的面向链接的协议,UDP是不可靠的或者说无连接的协议。

可以用打电话和发短信来说明这种关系:

UDP就好似发短信,只管发出去,至于对方是不是空号(网络不可到达)能不能收到(丢包)等并不关心。

TCP好像打电话,双方要通话,首先,要确定对方不是开机(网络可以到达),然后要确定是不是没有信号(),然后还需要对方接听(通信链接)。

四、什么是UDP协议?

UDP数据包结构如下图所示

源端口(16)目标端口(16)
报文长度(16)校验和(16)
数据(可变)

UDP为应用程序提供的是一种不可靠的、无连接的分组交付,因此,UDP报文可能会出现丢失、乱序、重复、延时等问题。因为它不提供可靠性,它的开销很小。(开销很小具体指什么?下文揭秘)

五、为什么有了UDP,还需要TCP?

问题4中已经说到,UDP为应用程序提供的是一种无连接、不可靠的分组交付。当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。

六、什么是TCP协议?

传输控制协议TCP是一个面向链接的、可靠的通信协议。1. 在开始传输前,需要进行三次握手建立链接 2. 可靠性:在传输过程中,通信双方的协议模块继续进行通信 3. 通信结束后,通信双方都会使用改进的三次握手来关闭链接

TCP数据包结构如下图

源端口(16)目标端口(16)
序号(32)
应答号(32)
头长度(4)保留(6)编码位(6)窗口(16)
校验和(16)紧急(16)
可选项(如果有,0或32)
数据(可变)

七、怎么理解协议和程序?

如同我们自定义的应用层协议一样:协议只是给出了一组规范,规定我们应该怎么样(按什么规则)保存数据。

在计算机间传输的永远都是二进制字节码(对于传输层,可以理解为传输的始终是下层的IP数据包),是计算机中的程序通过对这些字节码进行逻辑分析、判断,来控制程序完成差错控制等功能。 至于解析这些字节码的程序,则可以有不同的实现,只要我们按照规则来解析,并作出相应的控制,我们大可以自己写个程序是实现相应功能。

八、TCP是否真的有链接?

我们都知道,TCP通过完成三次握手来建立链接的,但是这种连接是面向虚电路的,是物理上不存在的,只是双方的TCP程序,逻辑上的认为建立了这样的链接。

九、链接是如何建立的(逻辑上)?

假设:当我们在主机A上启动一个程序,通过TCP去链接主机B上的9091端口。

图片

整个过程是怎么样的呢?逻辑上我们可以这么理解建立链接的过程:

1.SYN:seq=X;

1.1 A的TCP程序,为这个链接分配一个端口(设为9090)。

1.2 同时逻辑上的将TCP连接的状态设置为:正在连接。(通过在链接状态表中添加一条记录,记录中状态为:正在连接)

1.3 同时,随机生成一个初始序列号X,生成一个TCP包,将初始化序列号X设置为TCP中的序列号,发送给主机B。

2.SYN:seq=Y ACK:ack=X+1;

2.1 B上TCP程序收到该数据包,查询9091端口状态,如果可以链接。

2.2 同样的,在逻辑上的将TCP连接的状态设置为:正在连接

2.3 同时,随机生成一个初始化序列号Y,根据接收的序列号X,生成应答号X+1,生成一个TCP包,将序列号和应答号分别设置到TCP包头中,将TCP数据包发给主机A。

3.SYN:seq=X+1 ACK:ack=Y+1.

3.1 A上的TCP程序接收到数据包,查询9090端口状态。

3.2 根据收到的SYN:seq=Y;ACK:ack=X+1; 封装一个TCP包 SYN:seq=x+1;ACK:ack=Y+1;发送给主机B。同时,TCP程序将链接状态表中该条记录状态设置为已连接。

3.3 主机B收到数据包,TCP程序将链接状态表中该条记录状态设置为已连接。

至此,一个TCP链接建立(三次握手)完成。

我们可以看到:

第一:传送的都是IP数据包,其实只是将收到的数据包交给TCP程序处理。

第二:链接状态,只是TCP程序中的一个逻辑状态。

十、所谓的建立TCP链接开销很大,具体是指什么?

从九中,很容易看出。要简历TCP链接,必须进行三次IP数据包的成功传输。

十一、三次握手的目的是什么?

TCP是面向链接的,在面向链接的环境中,开始传输数据之前,在两个中端之间必须先建立一个链接。建立链接的过程可以确保通信双方在发送应用程序数据包之前,都已经准备好了传送和接收数据。并且使通信双方统一了初始化序列号。

十二、TCP如何提供可靠性?

在传输过程中,通信双方的协议模块继续进行通信,从而确保了传输的可靠性。 针对乱序:在通过三次握手进行链接时,序列号被初始化。在传输过程中,TCP继续使用这个序列号来标记发送的每一个数据段,没传送一个数据段,序列号加一。接收方依据序列号重装收到的数据段。 针对丢包:在传输过程中,接收方收到一个数据段后,会用ACK应答码向发送端回复一个IP包进行应答,确认号ACK用来告诉发送端哪些数据包已经成功接收,发送方对未被应答的报文段提供重传。 针对重复:接收端收到数据段后,查看序列号,如果已经成功接收改数据包,则丢弃后面这个数据段。 针对延时:延时造成的第一个问题,就是数据包达到接收端时乱序。当延时严重时,接收端一直未收到数据段,则不会回复ACK,发送端认为丢包,重发。

十三、什么是预期确认?什么是肯定确认与重新传输?哪些情况会重传?

1.确认号ACK会告诉发送端哪些数据段已经成功接收,并且确认号会向发送端指出接收端希望收到的下一个序列号。即,确实号ACK为上个数据序列号+1,这种机制称为预期确认。

2.为了提高效率,我们在发送端,将数据段保存在缓冲区中,直道发送端收到来自接收端的确认号。这种机制被称为“肯定确认与重新传输”。

3.当发送端在给定时间间隔内收不到那个数据段的应答时,发送端就会重传那个数据段。 情况1:网络延时/环路,数据段丢失 情况2:网络延时,数据段推迟到达 情况3:数据段成功到达,应答因为1.2不能达到。

十四、TCP中,序列号和应答号有哪些作用?

从以上10,11,12中,很明显的可以看到

1、依靠序列号重组数据段

2、依靠数据包消除网络中的重复包

3、依靠序列号和应答号进行差错重传,提高了TCP的可靠性

十六、为什么需要窗口技术?

前面我们已经说了,TCP的可靠性,是通过预期确认来实现的。即发送方发送一个数据段后,需要得到对方的确认后,才会发送下一个数据段。因此,假设一个数据段大小为64KB(IP包最大值),一次发送和确认需要的时间为500MS,则,1S内,只能传送128KB的数据,如果带宽为1M,显然很浪费带宽。为了充分利用带宽,我们使用窗口技术。滑动窗口允许发送方在收到接收方的确认之前发送多个数据段。(窗口大小决定了在收到确认前可以发送的数据段数量)

十七:如何实现流量控制?

窗口数决定了当前传输的最大流量。当我们在传输过程中,通信双方可以根据网络条件动态协商窗口大小,调整窗口大小时,即可实现流量控制。(在TCP的每个确认中,除了ACK外,还包括一个窗口通知)

十八、UDP的开销很小,具体是指什么?

1.因为UDP是无连接的。在传输数据之前,不需要进行复杂的三次握手来建立连接。2.在传输数据时,没有协议间通信流量(确认信号),也不需要浪费不必要的处理时间(接收确认信号再发一下)。3;传输结束后,也不用再用改进的三次握手来端口连接。

十九、UDP数据包、TCP数据包大小如何确认?

1、无论TCP还是UDP数据包,都需要交给Internet层封装为IP包,而一个IP包,包头中的长度位为16位,所以IP包最大为2的16方,即65535(64KB还需要减去各种包头长度)。

2、TCP因为面向流,且可以凭借序列号对大文件进行分段和重组,因此,TCP可以用来传输较大的文件。而UDP,如果要传输大于64KB的数据,则需要自己在应用层进行差错控制。

3、为了提高传输效率和减少网络通信量(协议间的通信),TCP也会一次传输足够多的数据。

4、因为MTU的存在,TCP包和UDP包不是越大越好。(在路由中分包,在接收端重组,加大路由与接收端负担,增大丢包概率。分组丢失,整个数据包重传。)

二十:UDP适用哪些环境?TCP适用哪些环境?

适合UDP的环境:

1、在高效可靠的网络环境中(不需要考虑网络不好导致的丢包、乱序、延时、重复等问题),因为UDP是无连接的服务,不用消耗不必要的网络资源(TCP中的协议间通信)和处理时间(预期确认需要的时间),从而效率要高的多。2、在轻权通信中,当需要传输的数据量很小(可以装在一个IP数据包内)时。如果我们使用TCP协议,那么,先建立连接,一共需要发送3个IP数据包,然后数据传输,1个IP数据包,产生一个确认信号的IP包,然后关闭连接,需要传输5个IP数据包。使用TCP协议IP包的利用率为1/10。而使用UDP,只需要发送一个IP数据包。哪怕丢包(服务不成功),也可重新申请服务(重传)。

UDP很适合这种客户机向服务器传送简单服务请求的环境。此类应用层协议包括TFTP , SNMP , DNS ,DHCP等。

3、在对实时性要求很强的通信中:在诸如实时视频直播等对实时性要求很高的环境中,从而允许一定量的丢包的情况下(直播比赛,前面丢失的包,重传出来已经意义不大了),UDP更适合。(可以根据具体需要通过应用层协议提供可靠性,不用像TCP那么严格。)

适合TCP协议的环境:

当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常的时候。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 端口
    +关注

    关注

    4

    文章

    820

    浏览量

    31588
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79543
  • 数据流
    +关注

    关注

    0

    文章

    112

    浏览量

    14208
  • 传输层
    +关注

    关注

    0

    文章

    29

    浏览量

    10839
收藏 人收藏

    评论

    相关推荐

    JESD204B是什么?JESD204B种类

    数据传输层的主要功能将AD转换器采样的数据映射成8bit位宽的字节数据。先将所有的采样数据线性的排开,然后添加控制字和控制位得到words,也可以选择不加控制字和控制位,则words和之前排列的采样数据相同,添加控制字和控制位有两种方法,第一种在每一个采样点的末尾添加
    的头像 发表于 06-29 08:57 2.3w次阅读
    JESD204B是什么?JESD204B种类

    请问TIMx有哪些主要功能

    TIMx简介TIMx主要功能
    发表于 11-09 08:56

    MusrLicManage的主要功能

    MusrLicManage简介MusrLicManage主要功能
    发表于 12-16 07:22

    ECC是什么?有什么主要功能

    ECC是什么?有什么主要功能
    发表于 06-21 07:00

    STM32 - DMA的定义及主要功能

    1. 简介DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能 是用来搬数据,但是不需要占用 CPU,即在传输数据的时候,CPU 可以干其他的事情,好
    发表于 08-24 07:06

    网卡实现的主要功能是什么

    从介质访问控制方法的角度局域网可分为哪几类?以太网交换机是根据什么去转发数据帧的?网卡实现的主要功能是什么?
    发表于 10-20 06:24

    DC的主要功能或者主要作用是什么

    什么是DC?DC能接受多少种输入格式?DC的主要功能或者主要作用是什么?如何配置DC?
    发表于 10-20 07:02

    系统数据传输的拓扑结构下的几种数据映射形式

    1数据传输层 数据传输层的主要功能将AD转换器采样的数据映射成8bit位宽的字节数据,并且根据应用的情况不同,分为4中情况: 一个AD转换器内的单个转换单元对应一条数据传输通道 一个A
    发表于 11-17 09:45 4769次阅读
    系统数据<b class='flag-5'>传输</b>的拓扑结构下的几种数据映射形式

    采用NIOSII处理器实现IEEE-1394b双向通信数据传输设计

    以及1394套片进行控制,实现了双向数据传输。其主要功能是将外部视频数据打包,按照1394b协议,传输到主机端进行实时显示,并实现与主机的相互通信。
    的头像 发表于 01-08 09:23 1820次阅读
    采用NIOSII处理器实现IEEE-1394b双向通信数据<b class='flag-5'>传输</b>设计

    bios的主要功能

    本视频主要详细介绍了bios的主要功能,分别是BIOS系统设置程序、POST上电自检、BIOS系统启动自举程序、硬件IO和中断服务。
    的头像 发表于 03-28 15:10 6719次阅读

    叶片泵有什么主要功能

    鸿承机电:深圳力士乐叶片泵有什么主要功能
    发表于 11-26 15:52 2926次阅读

    直线导轨的主要功能

    直线导轨的主要功能
    的头像 发表于 07-26 17:42 730次阅读
    直线导轨的<b class='flag-5'>主要功能</b>

    变压器的主要功能

    ,本篇文章将从以下几个方面来逐一介绍变压器的主要功能。 一、变压器的基本原理 变压器是一种利用电磁感应原理来实现电能传输的设备。其主要由铁心、绕组、绝缘材料和外壳组成。铁心是变压器的主要
    的头像 发表于 09-04 17:25 1775次阅读

    滤波器的主要功能和作用

    滤波器的主要功能和作用是处理信号,根据特定的频率响应特性对信号进行频率选择、增强或抑制。以下是滤波器的主要功能和作用。
    的头像 发表于 10-27 11:16 1389次阅读

    连接器基础知识大讲解

    连接器是一种电子元件,它能在各种设备间建立物理连接,实现信号、数据或电源的传输。其主要功能为建立连接、提供电接触面及机械支撑,协助方便地进行设备的拆装以及提高设备性能。
    的头像 发表于 03-22 09:46 127次阅读