精华内容
下载资源
问答
  • 属于网络传输层通信技术的是
    千次阅读
    2021-06-16 07:36:27

    网络传输是指用一系列的线路(光纤,双绞线等)经过电路的调整变化依据网络传输协议来进行通信的过程。其中网络传输需要介质,也就是网络中发送方与接收方之间的物理通路,它对网络的数据通信具有一定的影响。常用的传输介质有:双绞线、同轴电缆、光纤、无线传输媒介。网络协议即网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议。网络协议通常被分为几个层次,通信双方只有在共同的层次间才能相互联系。

    网络传输技术是网络的核心技术之一,传输线路带宽的大小,网络的通信能力,体现了网络的现代化水平。

    中文名

    网络传输技术

    外文名

    Transmission technology

    传输系统

    传输布线系统、同步数字体系等传输网络

    公用电话网、数字数据网等

    地    位

    网络的核心技术之一

    两种传输技术

    光纤传输和无线移动通信技术

    网络传输技术定义

    编辑

    语音

    传输技术(Transmission technology)指充分利用不同信道的传输能力构成一个完整的传输系统,使信息得以可靠传输的技术。传输系统是通信系统的重要组成部分,传输技术主要依赖于具体信道的传输特性。信道分为有线信道和无线信道。有线信道又可进一步细分为架空明线(传输能力一般不超过12个话路),对称电缆(用于载波通信的高频电缆一对芯线的传输能力可达120个话路),同轴电缆(其传输能力可达1800~3600个话路),光缆(单模光纤的传输能力已可达若干万个话路)等;无线信道又可进一步分为地波传播(如级长波,超长波,长波,短波等),天波传播(即经电离层反射传播,如短波),视距传播(如超短波,微波)等。由于不同信道有各自适用的频率范围,信源的信号必须通过“调制”到给定的频率范围才能进行传输,故调制技术是传输技术的关键之一。对给定的信道,使之能传输多个信源信息的技术称为“复用”,复用旨在提高信道的有效性,是传输技术的另一关键。常见的复用技术有频分复用,时分复用,码分复用,波分复用等。传输的可靠性是传输技术的另一个要点,这主要涉及信到编码技术和最佳接收技术。[1]

    光纤传输和无线移动通信技术是未来一段时期内最重要的两种传输技术。光纤传输将以其高带宽和高可靠性成为未来信息高速公路的主干传输手段;移动通信则以其高度的灵活性,机动性将成为信息社会人们普遍采用的通信形式,进而通过与光纤通信,卫星通信的结合,实现真正“全球通”已经指日可待。[1]

    网络传输技术是网络的核心技术之一,传输线路带宽的大小,网络的通信能力,体现了网络的现代化水平。常用的传输系统主要有:传输布线系统(PDS)、同步数字体系(SDH)、准同步数字体系(PDH)、数字微波传输系统、数字卫星通信系统、有线电视网(CATV)和光纤通信网等。[2]

    网络传输技术传输网络

    编辑

    语音

    网络传输技术公用电话网

    公用电话网(PSTN)是公共通信网中规模最大、历史最长的基础网络。电话网的主要用途是传输语音信号,用户的语音信息可通过传输线路和交换设备进行互传,传输的信号带宽在300Hz~3.4kHz之间。随着数字传输设备和数字交换设备不断引入,使公用电话网已经成为一个以数字设备为主体的网络。[3]

    网络传输技术数字数据网

    数字数据网是随着数据通信业务的增加而发展起来的一种新型的数字网络,以传输数字信号为主。用户通过这种专用的数字数据信道可以进行端到端的数据通信,传送数字图像和其他数字化信号。[3]

    网络传输技术综合业务数字网

    对于一个通信网,如果传输设备和交换设备都是数字化的,就构成了综合数字网(IDN),如果在IDN的基础上实现用户信息以数字形式入网,即实现数字用户环路,再加上实现长途数字载波和共路信令方式,就构成了综合业务数字网(ISDN)。它可以提供话音、数据和图像通信等各种业务。[3]

    网络传输技术ATM网

    异步转移模式(ATM)本质上是一种寻址特殊的分组通信方式,它包括异步时分复用(ATD)的快速分组交换(FPS)两种新技术。它既具有固定短时延的电路交换的特性,又具有动态分配资源的分组交换的特性。所以,ATM是吸取了电路交换和分组交换两者长处的一种新型的交换方式,其特点一是信息的传输、复用和交换以一定长度(53字节)的信元(cell)为统一的信息单位;二是对用户信元透明;三是面向连接的转移模式。ATM网在图像通信中占有较大的优势。[3]

    网络传输技术计算机网络

    计算机网络中,最常见的有局域网、广域网、城域网以及世界上最大的计算机互连网络Internet。在这些网络中,局域网是关键的基础部分,广域网、城域网、Internet都是由若干局域网通过电信网及相关的计算机通信协议互连而成。利用计算机网络,可快速便捷地传送图像信息,完成图像通信的任务。

    网络传输技术甚小天线地面站

    甚小天线地面站是一种工作在Ku频段(11~14GHz)或C频段(4~6GHz)的小型卫星地面站。VSAT利用通信卫星转发器,通过VSAT通信系统主站的控制,按需向VAST网站提供各种通信信道。VAST系统的信道误码率低,容易构成端对端的独立专用通信网。实现数据、语音、图像等多种通信。[3]

    网络传输技术技术种类

    编辑

    语音

    军事网络传输技术主要有以下几种:

    (1)高速数据网,以提高当前系统的数据流量。战术高速数据网采用的电路插件板可以显著增加大型结点和交换分机的数据吞吐量和数据路由器数量,从而显著增强传统网络系统的能力。战术高速数据网络应装备到陆军所有正在使用移动用户设备和三军联合战术通信系统的部队。

    (2)装备大容量视距无线电台,提高数据传输能力,以支持视距无线电通信。大容量视距无线电台的支线传输量将提高到2兆比特,主干线的传输量提高到8兆比特。加上异步传输模式交换系统后,可根据数据和视频要求动态地分配带宽。

    (3)装备高机动性数字化多路集群系统,提高机动性、部署能力和移动性。安装在轻型通用方舱中的交换机通过小型的模块化交换设备提供话音和信息包交换能力,将提高站场三军战术通信网络的传输量。

    (4)构建战术信息网。该系统由通信链路、卫星传送系统、战术信息系统和网络管理系统组成,用于在保障基地与部署的作战人员之间传输信息。

    (5)“特洛伊幽灵”。这是一个机动地战术卫星通信系统,通过“特洛伊”型的主网为战略与战术级的情报和信息分发提供专用的大容量、保密的点对点通信。

    (6)构建战术互联网。该系统把“21世纪部队旅及旅以下作战指挥系统”用数字化技术连接起来的“粘合剂”。它包含民用互联网技术、联合战术数字无线电台和战斗网无线电台。其主要组成部分是数据结点上使用的单行道地空无线电系统、增强型定位报告系统和数字化电台。

    (7)构建联合战术无线电系统。美国陆军将在继续优化战术互联网的同时,加速开发联合战术无线电系统,这是一个保密、多频段、多模式的数字化无线电系统。联合战术无线电系统可生成各种波形和扩展带宽,并将替换成现有的战术级无线电台。[4]

    参考资料

    1.

    靖宝庆主编.互联网与3G时代.南宁:广西人民出版社,2010:16-17

    2.

    汪海波主编.传输技术.广州:华南理工大学出版社,2006:51-52

    3.

    秦国主编.现代通信网概论.北京:人民邮电出版社,2008:157-159

    4.

    王正德主编.解读网络中心战.北京:国防工业出版社,2004:145-146

    更多相关内容
  • 【计算机网络传输层知识点总结

    万次阅读 多人点赞 2020-07-04 16:22:47
    传输层传输层的两个主要协议:概念: UDP(User Datagram Protocol)在 OSI 模型中处于传输层属于无连接协议。UDP 尽最大可能交付, 面向报文, 没有拥塞控制, 支持单播、多播、广播的交互通信。UDP 既可以使用...

    TCP/IP 是互联网相关的各类协议族的总称,其中包括 TCPUDP,IP,FTP,HTTP,ICMP,SMTP 等。TCP/IP 中两个具有代表性的传输层协议是 TCP 和 UDP:
    在这里插入图片描述


    传输层:

    • 作用:为上面的应用层提供通信服务,提供应用进程间的逻辑通信
    • 在 OSI 七层参考模型中,传输层是 面向通信部分的最高层用户功能中的最底层
    • 两大重要的功能:1)复用,2)分用。复用是指,在发送端,多个应用进程共用一个传输层。分用是指,在接收端,传输层会根据端口号将数据分派给不同的应用进程
    • 传输层和网络层的区别:1)网络层为不同主机提供通信服务,而传输层为不同主机的不同应用提供通信服务;2)网络层只对报文头部进行差错检测,而传输层对整个报文进行差错检测

    传输层的两个主要协议:

    • 传输控制协议 TCP(Transmission Control Protocol)
    • 用户数据报协议 UDP(User Datagram Protocol)

    1. 用户数据报协议 UDP

    概念: UDP(User Datagram Protocol)在 OSI 模型中处于传输层,属于无连接协议。UDP 尽最大可能交付面向报文没有拥塞控制支持单播、多播、广播的交互通信。UDP 既可以使用 IPv4 也可以使用 IPv6

    【用户数据报协议 UDP 的特点】

    • 面向无连接(目的是减少开销和发送时延):通信前不需要建立连接,通信结束也无需释放连接,即 UDP 客户与服务器不必存在长期的关系
    • 尽最大努力交付:它是尽力而为交付,不能确保每一个数据报都送达
    • 不可靠性:由于 “尽最大努力交付” 的,所以不保证每个数据报都到达目的地,也不保证各个数据报的先后顺序跨网络保持不变,也不保证每个数据报只到达一次
    • 面向报文:对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部
    • 没有拥塞控制:当网络出现堵塞不会使源主机的发送速率降低,这对实时视频会议比较重要,即允许在网络发生堵塞时丢失一些数据,但不允许数据有太大时延
    • 支持一对一,一对多,多对一,多对多的交互通信(单播、多播、广播),而TCP只支持一对一通信
    • 首部开销小(只有 8 个字节),而TCP头部至少20字节

    相关解释:

    (1)面向无连接:不需要像 TCP 一样在发送数据前进行三次握手,想发就直接发了,它只是数据的搬运工,不会对数据进行任何拆分和拼接操作。具体来说,就是在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头,标识一下是 UDP 协议,然后就传递给网络层了;在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作。

    (2)有单播、多播、广播功能:支持一对一、一对多、多对多、多对一的方式传输方式。

    (3)面向报文:所谓面向报文就是指UDP数据传输的单位是报文,且不会对数据作任何拆分和拼接操作。在发送端,应用程序给传输层的UDP什么样的数据,UDP不会对数据进行切分,只增加一个UDP头并交给网络层(IP层)。在接收端,UDP收到网络层的数据报后,去除IP数据报头部后遍交给应用层,不会作任何拼接操作。

    (4)不可靠性:首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。UDP只会把想发的数据报文一股脑的丢给对方,并不在意数据有无安全完整到达。

    (5)头部开销小:只有 8 字节,相比 TCP 的至少 20 个字节要少得多,在传输数据报文时是很高效的。UDP 头部包括:端口号(源+目的) + 报文长度 + 检验和。

    (6)没有拥塞控制:UDP始终以恒定的速率发送数据,并不会根据网络拥塞情况对发送速率作调整。这种方式有利有弊。弊端:网络拥塞时有些报文可能会丢失,因此UDP不可靠。优点:有些使用场景允许报文丢失,如:直播、语音通话,但对实时性要求很高,此时UDP还是很有用武之地的。

    【UDP 报文头(共8个字节)】

    1. 源端口(2个字节)
    2. 目的端口(2个字节)
    3. 整个数据报的长度(2个字节)
    4. 数据报的检验和(2个字节)
      在这里插入图片描述
    • 源端口(可选):接收端可以利用这个字段的值作为发送响应的目的地址,但是发送端不一定必须把自己的端口号写入,如果不写入则把这个字段设置为 0,这样接收端就不用发送响应。
    • 目的端口:必须指定,UDP 做广播时也必须指定目的端口号。
    • UDP 长度:表示 UDP 报文头 + UDP 数据的总长度。
    • UDP 检验和:用于检验数据在传输过程中是否被损坏,损坏则直接丢弃。

    关于如何校验数据是否被损坏:发送方会计算报文段中所有 16 bit 字的和,并计算该和的反码,这个反码作为 UDP 报文段中的检验和字段。接收方收到报文后也计算所有 16 bit 字的和,同时加上检验和,如果没有差错,得到的结果是全 1 的,如果出现一个 0,说明数据有差错。

    参考:UDP报文结构及检验和

    2. 传输控制协议 TCP

    概念: TCP(Transmission Control Protocol)是 面向连接 的,提供可靠交付,有 流量控制拥塞控制,提供 全双工通信,面向 字节流,每一条 TCP 连接只能是 点对点 的(一对一)的传输层通信协议。TCP将用户数据打包成报文段,它发送后会启动一个定时器。TCP 既可以使用 IPv4 也可以使用 IPv6

    【传输控制协议 TCP 的特点】

    • 面向连接的:通信前需要建立连接(三次握手),通信结束也需要释放连接(四次挥手)
    • 提供可靠交付:保证数据无重复、无丢失、无错误、与发送端顺序一致。当使用 TCP 向另一端发送数据时,它要求对端返回一个确认,如果没有收到确认,TCP 会自动重传数据并等待更长时间,数次重传失败后,TCP 才放弃
    • 面向字节流:把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块
    • 提供流量控制: TCP 会告诉对端它能接收多少字节的数据,称作“通知窗口”,该窗口任何时刻都指出接收缓冲区中的可用空间,从而确保发送端发送的数据不会溢出接收缓冲区
    • 提供拥塞控制
    • 点对点通信(单播):TCP 只能提供点到点的通信,而 UDP 可以任意方式的通信
    • 提供全双工通信:全双工通信指的是 TCP 的两端既可以作为发送端,也可以作为接收端,且两个方向可以同时进行发送和接收,就好比双行道(UDP 其实也可以是全双工的)

    相关解释:

    (1)面向连接:面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,建立连接是为数据的可靠传输打下基础。

    (2)仅支持单播:每条 TCP 传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。

    (3)面向字节流:TCP 不像 UDP 一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。所谓面向字节流指的是 TCP 以字节为单位。虽然传输的过程中数据被划分成一个个数据报,但这只是为了方便传输,接收端最终接受到的数据将与发送端的数据一模一样。

    (4)可靠传输:对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

    (5)提供拥塞控制:当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞。

    (6)提供全双工通信:TCP 允许通信双方的应用程序在任何时候都能发送数据,因为 TCP 连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)。

    【其他补充】

    (1)关于 TCP 面向字节流和 UDP 面向报文区别的解释

    TCP 的传输方式好比向水桶加水和从水桶接水,往水桶倒几次水和接几次水是没有必然联系的。比如说,现在有 5L 水,你可以一次性都倒进桶里,然后分 5 次接完;也可以分 7 次倒进去,一次性接完或者分几次接完,都随便你。但要注意,倒水的时候不能超过目前水桶剩余的总容量,否则水就会溢出。

    每个 TCP Socket 连接在当前主机上有都有一个发送缓冲区和一个接收缓冲区(因为是全双工的),缓冲区好比水桶,往发送缓冲区加数据,从接收缓冲区读数据。假如调用一次 write 发送了 100 个字节(实际是放在了发送缓冲区里),对端可以分 10 次接收,每次 10 个字节;也可以调用 10 次 write 发送数据,每次 10 个字节,对方一次接收。但是发送的数据量不能大于对端的接收缓存容量(流量控制),否则缓存满了就会丢弃数据。

    UDP 的传输方式好比读信(报文),信要一封一封的读,也就是发送端调用了几次 write,接收端必须以相同次数的 read 读取。接收端在接收时,每次最多只能读取一个报文,报文和报文之间不会合并。

    TCP 面向字节和 UDP 面向报文是由两者传输方式和特性决定的,TCP 仅支持一对一的连接,也就是发送端是确定的,只要保证数据有序到达就能恢复出原始信息。而 UDP 是无连接的协议,只要知道接收端的 IP 和端口,且网络可达,任何主机都可以向接收端发送数据,此时不管是按字节接收还是一次读取多个报文,都会导致数据混乱,这样的数据是没有意义的。

    (2)TCP 全双工和流量控制的实现

    每个 TCP Socket 连接创建后,都会自动分配两个缓冲区:输入缓冲区和输出缓冲区(buffer),关闭 Socket 将丢失输入缓冲区的数据,但会继续传送输出缓冲区中遗留的数据。TCP 全双工通信模式和流量控制都是依赖这两个缓冲区实现的。
    在这里插入图片描述
    主机 A 调用 write() / send() 向对端发送数据,其实并不是立即向网络中传输数据,而是先将数据写入输出缓冲区中,再由 TCP 协议将数据从输出缓冲区取出发送到目标机器。一旦将数据写入到缓冲区,write() / send() 函数就可以成功返回,不管数据到底有没有到达目标机器,也不管它们何时被发送到网络,这些都是 TCP 协议负责的事情。TCP协议独立于 write() / send() 函数,数据有可能刚被写入输出缓冲区就发送到网络,也可能在缓冲区中不断积压,多次写入的数据被一次性发送到网络,比如 nagle 算法,这取决于当时的网络情况、当前线程是否空闲等诸多因素,不由程序员控制。read() / recv() 函数同样,也是从输入缓冲区中读取数据,而不是直接从网络中读取。

    对于TCP,如果收端一直没有读取数据,其接收缓冲区满了之后,发生的动作是:收端通知发端,接收窗口关闭(win=0),即滑动窗口的实现。保证 TCP 套接口接收缓冲区不会溢出,从而保证了 TCP 是可靠传输。因为对方不允许发出超过所通告窗口大小的数据。 这就是 TCP 的流量控制,如果对方无视窗口大小而发出了超过窗口大小的数据,则接收方 TCP 将丢弃它。

    输入输出缓冲区的默认大小一般都是 8K,可以通过 getsockopt() 函数获取。

    【TCP头部】

    TCP 头部长度有 20 字节的固定部分,选项部分长度不定,但最多 40 字节,因此 TCP 头部在 20-60 字节之间。
    在这里插入图片描述
    在这里插入图片描述
    报头字段含义解释:

    • 源端口(Source Port):数据发起者的端口号
    • 目的端口(Destination Port):数据接收者的端口号(传输层和网络层一大重要区别就是传输层指定了数据报发往的应用进程,因此需要端口号标识)
    • 序列号(Sequence Number,seq):用于在数据通信中解决网络包乱序(reordering)问题,以保证应用层接收到的数据不会因为网络上的传输问题而乱序
    • 确认号(Acknowledgment Number,ack):表示当前主机作为接收端时,期望接收的下一个字节的编号是多少,因此确认号是当前主机已经正确接收的最后一个字节序号(seq)+ 1
    • 报头长度(Offset):数据包头部的长度,存储报文头中有多少个32bit,存储长度为 4bit,最大可表示(2 ^ 3+2 ^ 2+2 ^ 1 + 1)x 32bit = 60bytes 的报文头
    • 保留字段(Reserved):均为 0
    • 标识符(TCP Flags):TCP有 7 种标识符,用于表示 TCP 报文的性质。它们只能为 0 或 1
    • 窗口大小(Window):用于实现 TCP 的流量控制
    • 检验和(Checksum):该字段检验的范围包括头部和数据这两部分。由发端计算和存储,并由收端进行验证
    • 紧急指针(Urgent Pointer):紧急指针在 URG=1 时才有效,它指出本报文段中的紧急数据的字节数
    • 选项字段(TCP Options):可选的,且长度可变,最长40字节,最常用的选项字段为 MMS:最大报文长度

    TCP 标识符(TCP Flags): TCP有 7 种标识符,用于表示 TCP 报文的性质。它们只能为 0 或 1

    • URG = 1:当 URG 字段被置1,表示本数据报的数据部分包含紧急信息,此时紧急指针有效。
    • ACK = 1:ACK 被置 1 后确认号字段才有效,TCP 规定,在连接建立后传送的所有报文段都必须把 ACK 置1。
    • PSH = 1:当接收方收到 PSH=1 的报文后,会立即将数据交付给应用程序,而不会等到缓冲区满后再提交。一些交互式应用需要这样的功能,降低命令的响应时间。
    • RST = 1:当该值为 1 时,表示当前 TCP 连接出现严重问题,必须要释放重连。
    • SYN = 1:SYN 在建立连接时使用。当 SYN=1,ACK=0时,表示当前报文段是一个连接请求报文。当 SYN=1,ACK=1 时,表示当前报文段是一个同意建立连接的应答报文。
    • FIN = 1:FIN=1 表示此报文段是一个释放连接的请求报文。

    【TCP 的连接和终止】

    服务端先调用 socket 函数(返回一个套接字),然后套接字与地址、端口绑定(bind),对端口进行监听(listen),调用 accept 阻塞,等待客户端连接。这时如果有个客户端调用 socket 函数(返回一个套接字),然后连接服务器(connect),如果连接成功,客户端和服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理,然后将响应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

    • TCP 连接是一种抽象的概念,表示一条可以通信的链路。每条 TCP 连接有且仅有两个端点,表示通信的双方。且双发在任意时刻都可以作为发送者和接收者。
    • 一条 TCP 连接的两端就是两个套接字,套接字 = IP地址:端口号,因此,TCP连接 =(套接字1,套接字2)=(IP1:端口号1,IP2:端口号2)

    2.1 TCP 三次握手

    基本思想让我知道你已经知道了

    TCP 协议中,主动发起请求的一端称为客户端,被动连接的一端称为服务端。不管是客户端还是服务端,TCP 连接建立完后都能发送和接收数据。
    在这里插入图片描述
    最初服务器和客户端都为 CLOSED 状态。在通信开始前,双方创建各自的传输控制块(TCB)。
    服务器创建完 TCB 后便进入 LISTEN 状态,此时准备接收客户端发来的连接请求。

    • 第一次握手:服务器 B 处于 监听(LISTEN) 状态,此时客户端 A 向 B 发送请求连接报文段。该报文段中 SYN = 1,ACK = 0,seq = x,A 进入 同步已发送(SYN-SENT) 状态,等待服务器确认;(A 问 B 你可以吗?)【ps:SYN = 1,ACK = 0 表示该报文段为请求连接报文;seq = x,x 为本次 TCP 通信的字节流的初始序号,TCP 规定 SYN=1 的报文段不能有数据部分,但要消耗掉一个序号】
    • 第二次握手:服务器 B 收到 A 的连接请求报文段,如果同意建立连接,则向 A 发送连接确认:SYN = 1,ACK = 1,seq = y,ack = x + 1,进入 同步已收到(SYN-RCVD) 状态;(B 告诉 A 我可以)【ps:SYN = 1,ACK = 1 表示该报文段为连接同意的应答报文;seq = y 表示服务端作为发送者时,发送字节流的初始序号;ack = x+1 表示服务端希望下一个数据报发送序号从 x+1 开始的字节】
    • 第三次握手:客户端 A 收到 B 同意连接的应答后,再向 B 发送一次确认报文段,该报文段头部为:ACK = 1,seq = x+1,ack = y+1,客户端发送完这个确认报文后就进入 已建立连接(ESTABLISHED) 状态(A 再告诉 B 我也可以)
    • B 收到 A 的确认后,B 也进入 已建立连接(ESTABLISHED) 状态,完成三次握手

    字段含义

    • 序列号 seq:占 4 个字节,用来标记数据段的顺序,TCP 把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号 seq 就是这个报文段中的第一个字节的数据编号。
    • 确认号 ack:占 4 个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。
    • 确认号 ACK(标志位):占 1 位,当 ACK=1 时,表示确认号有效,反之无效。
    • 同步号 SYN(标志位):连接建立时用于同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若同意连接,则在响应报文段中使得 SYN=1,ACK=1。因此,SYN=1 表示这是一个连接请求,或连接接受报文。SYN 这个标志位只有在 TCP 建立连接时才会被置 1,握手完成后 SYN 标志位被置 0。
    • 终止号 FIN(标志位):用来释放一个连接。FIN=1 表示此报文段的发送方的数据已经发送完毕,并要求释放运输连接。
    • URG:紧急指针是否有效。为1,表示某一位需要被优先处理。
    • PSH:提示接收端应用程序立即从TCP缓冲区把数据读走。
    • RST:对方要求重新建立连接,复位。

    ACK、SYN 和 FIN 这些大写的单词表示标志位,其值要么是 1,要么是 0;ack、seq小写的单词表示序号。

    【简化版】

    TCP 三次握手经历了:1)客户端向服务器发送一个 SYN J,服务器向客户端响应一个 SYN K,并对 SYN J 进行确认 ACK J+1,最后客户端再向服务器发一个确认 ACK K+1

    1. 客户端调用 connect 主动打开,客户端向服务器发送 SYN J(告诉服务器客户端将要发送的数据的初始序列号),此时 connect 进入阻塞状态。
    2. 服务器监听到连接请求(SYN J),调用 accept 接受请求,向客户端发送 SYN K(告诉客户端服务器将要发送的数据的初始序列号)、ACK J+1,此时 accept 进入阻塞状态。
    3. 客户端收到 SYN K、ACK J+1 后,connect 返回,并对 SYN K 进行确认;服务器收到 ACK K+1 后,accept 返回。此时三次握手完毕,连接建立。

    在这里插入图片描述
    其他解释:

    TCP 的三次握手还是挺有意思的,基本思想就是 “让我知道你已经知道” 了。 服务器监听请求,客户端发起连接请求(第一次连接),请求在路上可能存在丢失的风险, 所以当请求到了服务器后如果服务器同意建立连接会给客户端一个回信(第二次连接),告诉它:我已经收到请求,可以连接。 但是回信也存在一个问题,那就是回信能不能到客户端?它需要客户端给他一个回信说我已经收到批准通知了, 如果客户端一直不回复的话意味着客户端没有收到批准通知。因此客户端一收到批准通知就立马回复(第三次连接):OK 老铁我收到你的批准通知了。至此,三次握手结束。

    这种“让我知道你已经知道了”的想法是一种约定俗成的 可靠信息交互的基本方式, 基于此想法构建的信息交互框架叫做协议。

    【相关面试题】

    1)为什么用三次握手?

    1. (主要原因)通过三次握手避免打开历史连接请求。如果客户端发送的连接请求在网络中滞留太久,客户端等待一个超时重传时间后,就会重新请求连接。有三次握手,服务器虽然收到了两个连接请求,并回发了两个请求确认,但客户端不会回应前一个请求确认,就不会打开这个失效的链接请求【具体就是通过服务端返回的 ack 来验证的,如果客户端发现不是自己期望的 ack 号,就会发起 RST 报文中止这个失效链接】。
    2. 通过三次握手同步双方的初始序列号

    【图解:避免打开历史连接请求】
    在这里插入图片描述
    【图解:同步双方的初始序列号】
    在这里插入图片描述
    图片来源:为什么需要三次握手

    相关解释:

    • 失效的连接请求:若客户端向服务端发送的连接请求丢失,客户端等待应答超时后就会再次发送连接请求,此时,上一个连接请求就是失效的。
    • 历史的连接请求:若客户端向服务器发送的连接请求因为某种原因滞留,客户端等待应答超时后再次发送一个新的连接请求,后来发送的请求先到达了服务端,并成功建立了连接;前一个请求后到达服务端,此时该连接请求就是历史的重复请求。

    2)为什么不能用两次握手进行连接?

    答: 三次握手完成两个重要的功能,既:1)双方都知道彼此已准备好,2)允许双方就初始序列号进行协商,这个序列号在握手过程中进行发送和确认。

    如果把三次握手改成两次握手,可能发生死锁。比如:客户端发出去的一个连接请求由于某些原因在网络节点中滞留导致延迟,客户端等待一个超时时间后重新请求,那么前一个请求就是失效的,但是却又到达了服务端,此时服务端仍然认为这是客户端的建立连接请求第一次握手,于是服务端回应了客户端,这是第二次握手,但是客户端并不会发来新的数据,服务端就这么傻等着,形成了死锁。

    3)如果已经建立了连接,但是客户端突然出现故障了怎么办?

    答: TCP 设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为 2 小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔 75 秒钟发送一次。若一连发送 10 个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

    2.2 TCP 四次挥手

    TCP 连接是全双工的,因此在四次挥手中,每个方向都必须单独地进行关闭。前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接。
    在这里插入图片描述

    • 第一次挥手:客户端 A 发送连接释放请求,并停止发送数据,该请求只有报文头,主要参数:FIN = 1,seq = u。此时客户端进入 终止等待1(FIN-WAIT-1) 状态;【FIN=1 表示该报文段是一个连接释放请求,seq = u,u-1 是 A 向 B 发送的最后一个字节的序号】
    • 第二次挥手:服务器 B 收到 A 的释放请求后发出确认,确认报文包括:ACK = 1,seq = v,ack = u + 1。此时 TCP 处于半关闭状态,服务器进入 关闭等待(CLOSE-WAIT) 状态,B 能向 A 发数据但 A 不会向 B 发数据。此时 A 进入 终止等待2(FIN-WAIT-2) 状态,等待 B 传输最后的数据并发送连接释放请求。第二次挥手完成后,A 到 B 方向的连接已经释放,B 不会再接收数据,A 也不会再发送数据。但 B 到 A 方向的连接仍然存在,B 可以继续向 A 发送数据。【ACK=1:除TCP连接请求报文段以外,TCP通信过程中所有数据报的ACK都为1,表示应答;seq=v,v-1是B向A发送的最后一个字节的序号;ack = u+1 表示希望收到从第 u+1 个字节开始的报文段,并且已经成功接收了前 u 个字节】
    • 第三次挥手:当 B 不再需要连接时,向 A 发送连接释放请求,请求头:FIN = 1,ACK = 1,seq = w,ack = u + 1,此时 B 进入 最后确认(LAST-ACK) 状态,等待 A 的确认
    • 第四次挥手:A 收到 B 的请求释放后进行确认,ACK = 1,ack = w + 1,B 进入 CLOSED 状态,A 进入 TIME-WAIT 状态,等待 2 MSL(Maximum Segment Lifetime,最大报文存活时间)若没有收到 B 的重发请求的话,就释放连接并进入 CLOSED 状态。

    补充:

    • 服务器结束 TCP 连接的时间要比客户端早一些;
    • TCP 关闭时,每一端都要发送一个 FIN;
    • 进程中止时所有打开的 TCP 连接上都会发出一个 FIN;
    • 客户端和服务器端都可以执行主动关闭,通常情况是客户端主动,HTTP 则是服务器主动。
    • 2 MSL 是两倍的 MSL(Maximum Segment Lifetime)。MSL 指一个片段在网络中最大的存活时间,2MSL 就是一个发送和一个回复所需的最大时间。如果直到 2MSL,Client 都没有再次收到 FIN,那么 Client 推断 ACK 已经被成功接收,可以结束 TCP 连接。

    【简化版】

    1. 应用进程调用 close,执行主动关闭,该端 TCP 发送 FIN M,表示数据发送完毕。
    2. 另一端收到 FIN M 后,执行被动关闭,对发来的 FIN 进行确认 ACK M+1,意味着不会再收到来自主动关闭端的信息。
    3. 一段时间后,被动关闭端也调用 close 关闭它的套接口,并发送一个 FIN N 给主动关闭端。
    4. 主动关闭端收到 FIN N 后对其进行确认 ACK N+1。
      在这里插入图片描述

    【相关面试题】

    1)为什么用四次挥手?

    答: 主要原因在于 TCP 连接是全双工的,每个方向都必须单独地进行关闭,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接。关闭连接时,当 B 端收到 A 端的 FIN 报文通知时,仅仅表示 A 端没有数据发给 B 了,但未必 B 的数据也已经都发给 A 了,所以 B 不会立马关闭 Socket,当 B 发送完自己想发的全部数据后,再发送 FIN 给 A 表示 B 也同样没有数据给对方了。针对每一个 FIN 报文,都需要一个 ACK,所以需要四次挥手。

    2)为什么要有 TIME-WAIT 状态?

    答: (1)为了保证 TCP 全双工连接的可靠性,用来重发可能丢失的 ACK 报文。 若 A 发完确认应答 ACK 后直接进入 CLOSED 状态,那么如果该 ACK 丢失,B 等待超时后就会重新发送连接释放请求,但此时 A 已经关闭了,不会作出响应,因此 B 永远无法正常关闭。因此 A 在 TIME-WAIT 状态等待 2 MSL 时间,如果在该时间内再次收到 FIN,那么 A 会重发 ACK 并再次等待 2MSL。(2)为了允许老的重复分节在网络中消失。若关闭某个 TCP 连接后,又建立了一个新的 TCP 连接且其 IP 地址和端口和之前 TCP 连接相同,此时就会被误解为同一个 TCP。为了保证不出现这种情况,TCP 要求不能给处于 TIME-WAIT 状态的连接启动新的化身,这就保证了当成功建立一个 TCP 连接时,来自该连接先前化身的老重复分组已经消失。

    3)为什么连接的时候是三次握手,关闭的时候却是四次握手?

    答: 主要在于 同步 和 应答 是否能同时发送,其实握手也是四次,只不过由于同步和应答合成了一次握手,所以才是三次握手。建立连接时,当服务端收到客户端的 SYN 连接请求报文后,可以直接发送 SYN+ACK 报文。其中 ACK 报文是用来应答的,SYN 报文是用来同步的。但关闭连接时,当服务端收到 FIN 报文时,很可能并不会立即关闭 Socket,所以只能先回复一个 ACK 报文,告诉 Client 端," 你发的 FIN 报文我收到了,但只有我 Server 端所有的报文都发送完了,我才能发送 FIN 报文 "。因此不能一起发送。故需要四步握手。

    4)四次挥手一定需要 4 个报文段吗?

    答:不一定,如果收到对方的 FIN 报文时,自己的全部数据也都已经发给对方了,就可以将 ACK 与 FIN 合并为一个报文段,此时仅需 3 个报文。

    5)UDP 和 TCP 有什么区别?
    在这里插入图片描述

    • TCP 向上层提供 面向连接的可靠的服务 ,UDP 向上层提供 无连接的不可靠服务,TCP 保证数据顺序,UDP 不保证
    • TCP 传输单位为 TCP 报文段,UDP 传输单位为用户数据报
    • 虽然 UDP 并没有 TCP 传输来的准确,但有实时性要求高对系统资源要求少网络开销小等优点,当某个程序的目标是尽快地传输尽可能多的信息时,可以使用 UDP。对数据准确性要求高,速度可以相对较慢的,可以选用 TCP
    • TCP 对应的协议包括:FTP(文件传输协议)、SMTP(邮件传送协议)、HTTP(从Web服务器传输超文本到本地浏览器的传送协议)等。UDP对应的协议包括:DNS(域名解析服务)、SNMP(简单网络管理协议)、TFTP(简单文件传输协议)等。

    6)如何用 UDP 实现可靠传输?

    答: 可以参考 TCP,引入序列号保证数据顺序,引入确认应答保证对端收到数据,引入超时重传确保所有数据都能到达。

    2.3 Socket 基本操作

    套接字(Socket)是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。

    常用套接字接口函数:

    1)socket() 函数int socket(int domain, int type, int protocol);,domain 为协议域,type 为套接口类型,protocol 为协议。

    • 协议域决定了套接口的地址类型,可选参数:AF_INET、AF_INET6、AF_LOCAL。比如 AF_INET 决定了要用 IPv4 地址 + 端口号组合。
    • 套接口类型可选参数:SOCK_STREAM(流套接字)、SOCK_DGRAM(数据报套接字)、SOCK_RAW(原始套接字)、SOCK_SEQPACKET 等。
    • 协议可选参数:IPPROTO_TCP、IPPROTO_UDP、IPPROTO_SCTP 等,分别对应 TCP 协议、UDP 协议、STCP 协议。

    注意 type 和 protocol 不可以随意组合,比如 SOCK_STREAM 用于提供面向连接、可靠的数据传输服务,所以不可以和 IPPROTO_UDP 组合使用。

    2)bind() 函数int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);,sockfd 为套接字,通过 socket() 函数创建;addr 为指向协议地址的指针;addrlen 指出 addr 中结构体的长度。

    服务器在启动时会绑定一个地址(IP + 端口号)用于提供服务,客户端可以通过该地址来连接服务器。所以服务端会在 listen 前调用 bind,而客户端就不需要。

    3)listen() 函数int listen(int sockfd, int backlog);

    listen 仅由服务器调用。socket 创建一个套接口时,默认是一个主动套接口,也就是将会调用 connect 发起连接。listen 将未连接的套接口转换成一个被动套接口,指示内核应接受指向该套接口的连接请求。backlog 规定了内核应该为相应套接口排队的最大连接个数。

    4)connect() 函数:TCP 客户端用 connect 来建立与服务器的连接。

    5)accept() 函数:由 TCP 服务器调用。

    6)close() 函数:用于关闭套接口并终止 TCP 连接。close 操作只是使相应套接字的引用数减 1,只有当引用计数为 0 时,才会触发 TCP 客户端向服务器发送终止连接请求。

    7)shutdown() 函数int shutdown(int sockfd, int howto),sockfd 是需要关闭的套接口描述字,howto 指定了 shutdown 方式:

    • SHUT_RD:关闭连接的读端,即套接字不再接收数据,但仍然可写。
    • SHUT_WR:关闭连接的写端,进程不能对此套接字发出写操作,但仍然可读,此时称半关闭
    • SHUT_RDWR:相当于调用 shutdown 两次,第一次指定为 SHUT_RD,第二次指定为 SHUT_WR

    TCP 的半关闭:TCP 客户端在结束它的发送后,仍希望能收到来自服务器的数据,此时的状态称作 “半关闭”。半关闭可以通过调用 shutdown 函数代替 close 函数实现。

    2.4 TCP 可靠传输的实现

    TCP的可靠性表现在:它向应用层提供的数据是无差错的、有序的、无丢失的,简单的说就是:TCP最终递交给应用层的数据和发送者发送的数据是一模一样的。TCP 可靠性的实现机制:面向连接、确认应答机制、超时重传、流量控制、拥塞控制。

    1. 确认应答:TCP 对数据进行编号(seq),通过确认号(ack)告诉发送者已经收到的数据,且我希望下一个数据从哪里开始发送。
    2. 超时重传:如果发端超过一定时间未收到接收端的应答,可以认为是数据包丢失或应答丢失,此时发端会重发数据,这个时间一般是 2RTT+偏差值(RRT,报文段往返时间)。TCP 采用了自适应算法来确认超时重传时间(记录一个报文发出时间以及收到确认的时间,两者之差即为报文往返时间 RRT)。
    3. 流量控制:流量控制就是让发送方别发太快,让接收端来得及接收。主机间传数据实际是放在缓冲区的,接收端会把自己当前可用缓冲区大小放在 TCP 报文头中的 “窗口大小字段”,在应答(ACK)时通知发送端当前可接收大小。如果接收缓存区满了,就会将窗口设置为 0,这时发送方不再发送数据,但需要定期发送一个窗口探测数据段,让接收端把当前窗口大小告诉发送端。
    4. 拥塞控制:慢启动 + 拥塞避免,快重传、快恢复。

    3. 自动重传请求(ARQ协议)

    ARQ(Automatic Repeat Request)自动重传请求,是 OSI 七层模型中数据链路层的错误纠正协议之一。传统 ARQ 分为:1)停等式 ARQ(stop-and-wait),2)回退 n 帧 ARQ(go-back-n),3)选择性重传 ARQ(selective repeat)

    自动重传请求保证:当请求失败时会自动重传,直到请求被正确接收为止。这种机制保证了每个分组都能被正确接收。

    3.1 停止等待 ARQ 协议

    停止等待 ARQ 是以停止等待协议(stop-and-wait)为思想的,是最简单但也是最基础的数据链路层协议。它规定一次只发送一个分组的消息,等收到对方确认之后再继续发后面的,所以这种传输方式的缺点是发送方每次只能发送一个分组,在应答到来前必须等待,所以通信信道利用率低,传输时延大

    停止等待协议的原理:

    • 无差错的情况:A 向 B 每发送一个分组,都要停止发送,等待 B 的确认应答;A 只有收到了 B 的确认应答后才能发送下一个分组
    • 分组丢失和出现差错的情况:发送者拥有超时计时器。每发送一个分组便会启动超时计时器,等待 B 的应答。若超时仍未收到应答,则 A 会重发刚才的分组。分组出现差错:若 B 收到分组,但通过检验和字段发现分组在运输途中出现差错,B 会直接丢弃该分组,并且不会有任何其他动作。A 超时后便会重新发送该分组,直到 B 正确接收为止。分组丢失:若分组在途中丢失,B 并没有收到分组,因此也不会有任何响应。当 A 超时后也会重传分组,直到正确接收到该分组的应答为止。综上所述:当分组丢失或出现差错的情况下,A 都会超时重传分组
    • 应答丢失和应答迟到的情况:TCP 会给每个字节都打上序号(seq),用于判断该分组是否已经接收。应答丢失:若 B 正确收到分组,并已经返回应答,但应答在返回途中丢失了。此时 A 未收到应答,从而超时重传。紧接着 B 又收到了该分组,B 根据序号判断当前收到的分组是否已经接收,若已接收则直接丢弃,并补上一个确认应答(ack = seq + 1)。应答迟到:若由于网络拥塞,A 迟迟收不到 B 发送的应答,因此会超时重传。B 收到该分组后,发现已经接收,便丢弃该分组,并向 A 补上确认应答。A 收到应答后便继续发送下一个分组。但经过了很长时间后,那个失效的应答最终抵达了 A,此时 A 可根据序号判断该分组已经接收,此时只需简单丢弃即可。

    停止等待 ARQ 协议的注意点:

    1. 每发送完一个分组,该分组必须被保留,直到收到确认应答为止
    2. 必须给每个分组进行编号。以便按序接收,并判断该分组是否已被接收
    3. 必须设置超时计时器。每发送一个分组就要启动计时器,超时就要重发分组
    4. 计时器的超时时间要大于应答的平均返回时间,否则会出现很多不必要的重传,降低传输效率。但超时时间也不能太长

    3.2 连续 ARQ 协议

    为了克服停止等待 ARQ 的缺点,提出了连续 ARQ 协议,而且 TCP 实际使用的也是连续 ARQ 协议。

    连续 ARQ 协议基于滑动窗口,在发送方维持着一个一定大小的发送窗口,位于发送窗口内的所有分组都可连续发送,而不需要等待接收端的确认,发送方每收到一个确认就可以把窗口向前滑动一个分组的位置。连续 ARQ 降低了等待时间,提高了传输效率。
    在这里插入图片描述
    连续 ARQ 协议有几个关键技术点:发送窗口接收窗口累计确认

    1. 发送窗口:发送窗口的大小由接收窗口的剩余大小决定。接收方会把当前接收窗口的剩余大小写入应答 TCP 报文段的头部,发送者收到应答后根据该值和当前网络拥塞情况设置发送窗口的大小,发送窗口的大小是不断变化的(前面讲过的流量控制)。
    2. 接收窗口:接收者收到的字节会存入接收窗口,接收者会对已经正确接收的有序字节进行累计确认,发送完确认应答后,接收窗口就可以向前移动指定字节。如果某些字节并未按序收到,接收者只会确认最后一个有序的字节,从而乱序的字节就会被重新发送。
    3. 累计确认:接收方有接收窗口,所以并不需要每收到一个分组就返回一个应答,可以连续收到几个分组之后统一返回一个应答,这样可以节省流量。TCP 头部的 ack 字段就是用来累计确认,它表示已经确认的字节序号+1,也表示期望发送者发送的下一个分组的起始字节号。

    【例子】

    发送窗口由三个指针构成:p1,p2,p3

    • p1 指向发送窗口(黑色部分)的后沿(左侧),它左边的字节表示已经发送且已收到应答
    • p2 指向允许发送但尚未发送的第一个字节
    • p3 指向发送窗口的前沿(右侧),它右边的字节尚未发送,且不允许发送
      在这里插入图片描述
      p1 之前的字节表示已经发送且已收到应答;p1-p2 间的字节表示已经发送,但还没收到确认应答,这部分的字节仍需保留,因为可能还要超时重发。p2-p3 间的字节表示可以发送,但还没有发送的字节。发送者每收到一个应答,窗口就可以向前移动指定的字节。

    连续 ARQ 协议的注意点:

    1. 同一时刻发送窗口的大小并不一定和接收窗口一样大。虽然发送窗口的大小是根据接收窗口的大小来设定的,但应答在网络中传输是有时间的,有可能 t1 时间接收窗口大小为 m,但当确认应答抵达发送者时,接收窗口的大小已经发生了变化。此外发送窗口的大小还随网络拥塞情况影响。当网络出现拥塞时,发送窗口将被调小。
    2. TCP 标准并未规定未按序到达的字节的处理方式,但 TCP 一般都会缓存这些字节,等缺少的字节到达后再交给应用层处理。这比直接丢弃乱序的字节要节约带宽。
    3. TCP 标准规定接收方必须要有累计确认功能。接收方可以对多个 TCP 报文段同时确认,但不能拖太长时间,一般是 0.5s 以内。此外,TCP 允许接收者在有数据要发送的时候捎带上确认应答。但这种情况一般较少,因为一般很少有两个方向都要发送数据的情况。
    4. 其实当连续 ARQ 协议的发送和接收窗口都等于 1 时,就是停止等待 ARQ 协议。

    4. 流量控制

    1. 什么是流量控制?

    如果发送者发送过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,接收者主动控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。

    2. 流量控制的目的?

    流量控制根本目的是防止分组丢失,它是构成 TCP 可靠性的一方面

    3. 如何实现流量控制?

    滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。主要的方式就是接收方返回的 ACK 中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。

    4. 流量控制引发的死锁及解决方案

    当发送者收到了一个窗口为 0 的应答,便停止发送,等待接收者的下一个应答。但如果这个接收者返回的窗口不为 0 的应答在传输过程丢失,发送者一直等待下去,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。

    为了避免流量控制引发的死锁,TCP 使用了持续计时器。每当发送者收到一个 0 窗口的应答后就启动该计时器。时间一到便主动发送报文询问接收者的窗口大小。若接收者仍然返回 0 窗口,则重置该计时器继续等待;若窗口不为 0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生。

    5. 拥塞控制

    拥塞避免并非能够完全避免拥塞,而是说在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

    1. 拥塞控制和流量控制 的区别?

    1. 拥塞控制:拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况;
    2. 流量控制:流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收。

    2. 拥塞控制的目的?

    1. 缓解网络压力
    2. 保证分组按时到达

    3. 拥塞控制方法:慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)和快恢复(fast recovery)。

    发送方维持一个拥塞窗口 cwnd ( congestion window )的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞。

    发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。

    5.1 慢开始

    慢开始:当主机开始发送数据时,如果立即将大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在并不清楚网络的负荷情况。因此,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,这就是慢开始的思路。

    发送方维护一个拥塞窗口 cwnd(congestion window),拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。

    通常在刚刚开始发送报文段时,先把拥塞窗口 cwnd(congestion window)设置为一个最大报文段 MSS(Maximum Segment Size)的数值。在每收到一个确认后,把就拥塞窗口数值翻倍。用这样的方法逐步增大发送方的拥塞窗口(cwnd),可以使分组注入到网络的速率更加合理。
    在这里插入图片描述
    每经过一个传输轮次,拥塞窗口的大小就翻倍。一个传输轮次是说把拥塞窗口所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。

    注意慢开始的 “慢” 并不是指拥塞窗口的增长速率慢,而是指在 TCP 开始发送报文段时先设置拥塞窗口大小等于 1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大拥塞窗口大小。

    为了防止拥塞窗口 cwnd 增长过大引起网络拥塞,还需要设置一个慢开始门限 ssthresh,慢开始门限的用法如下:

    • 当 cwnd < ssthresh 时,使用慢开始算法
    • 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法
    • 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法

    若发送发没有收到确认,则表明网络出现拥塞。此时:1)慢开始门限设为当前发送窗口的一半;2)拥塞窗口设为 1;3)重新执行慢开始算法。

    慢开始算法的作用:慢开始算法将发送窗口从小扩大,而且按指数级扩大,从而避免一开始就往网络中注入过多的分组从而导致拥塞;它将窗口慢慢扩大的过程其实也在探测网络拥塞情况的过程,当发现出现拥塞时,及时降低发送速度,从而减缓网络拥塞。

    5.2 拥塞避免

    拥塞避免算法 让拥塞窗口缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口加 1,而不是加倍。这样拥塞窗口(cwnd)按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。

    无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其依据就是没有收到确认),就要把慢开始门限设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口重新设置为1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。

    慢开始和拥塞避免示意图:
    在这里插入图片描述

    • TCP连接初始化,cwnd = 1,ssthresh = 16
    • 执行慢开始算法,cwnd 经过 4 轮的指数级增长,cwnd = 16 = ssthresh,改执行拥塞避免算法,cwnd 进行线性增长
    • 假定 cwnd = 24 时网络出现超时,则 ssthresh = 12(减半),cwnd = 1(重设),开始执行慢开始算法,当 cwnd = 12 = ssthresh 时,改执行拥塞避免算法

    AIMD 算法(加法增大乘法减小算法,Additive Increase & Multiplicative Decrease):慢开始算法和拥塞避免算法合称加法增大乘法减小算法。

    • 乘法减小:指的是不管当前正使用慢开始算法还是拥塞避免算法,只要发生拥塞时,慢开始门限将会变成当前窗口的一半,并执行慢开始算法,所以当网络频繁出现拥塞时,ssthresh下降的很快,以大大减少注入到网络中的分组数。
    • 加法增大:指的是拥塞避免算法,使得发送窗口以线性的方式增长,以防止过早出现拥塞。

    拥塞避免算法的作用:拥塞避免算法使发送窗口以线性方式增长,而非指数级增长,从而使网络更加不容易发生拥塞。

    5.3 快重传

    TCP 具有累计确认的能力,因此接收者收到一个分组的时候不会立即发出应答,可能需要等待收到多个分组之后再同一发出累计确认。但是,快重传要求接收方在收到一个失序的报文段后就应立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方,可提高网络吞吐量约20%)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期
    在这里插入图片描述
    当发送端的 2001-3000 报文丢失后,发送端会一直收到接收端 1001 这样的 ACK,如果发送端主机连续三次收到同样的 1001 应答,就会将对应的数据 1001-2000 重新发送,当成功接收到 1001 之后,再次返回的 ACK 就是 6001 了,接收端在之前就已经收到(2001-7000)了,被放到了接收端操作系统内核的接收缓冲区中。

    如果发送方设置的超时计时器时限已到但还没有收到确认,那么很可能是网络出现了拥塞,致使报文段在网络中的某处被丢弃。这时,TCP马上把拥塞窗口 cwnd 减小到1,并执行慢开始算法,同时把慢开始门限值减半。这是不使用快重传的情况。

    5.4 快恢复

    快恢复原理:当发送者收到同一个分组的三个确认应答后,就基本可以判断这个分组已经丢失了,这时候无需等待超时,直接执行:1)将慢开始门限减半,2)将拥塞窗口设置为减半后的慢开始门限(不是设为1),3)执行拥塞避免算法

    解释:

    1. 将慢开始门限减半:当发送方连续收到三个重复确认 ACK 时,就执行“乘法减小”算法,把慢开始门限减半,这是为了预防网络发生拥塞;
    2. 将拥塞窗口设置为减半后的慢开始门限:如果网络阻塞,发送方就不会收到三个重复的确认,所以发送方会认为此时网络并没有拥塞,因此与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口 cwnd 不设置为1),而是把 cwnd 值设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

    快重传和快恢复的示意图
    在这里插入图片描述
    在采用快恢复算法时,慢开始算法只是在 TCP 连接建立时和网络出现超时时才使用,使用快恢复拥塞控制方法使得 TCP 的性能有明显的改进。

    慢开始算法和拥塞避免算法能保证网络出现拥塞时进行相应的处理,而快重传和快恢复是一种拥塞预防的方式,此时网络可能尚未出现拥塞,但已经有拥塞的征兆,因此得作出一些预防措施。


    参考资料:
    [1] 计算机网络传输层知识点全覆盖
    [2] TCP/IP详解–拥塞控制 & 慢启动 快恢复 拥塞避免
    [3] TCP的三次握手与四次挥手理解及面试题
    [4] TCP 和 UDP 的区别
    [5] 动窗口 停止等待 退后N帧 选择重传

    展开全文
  • 计算机网络必看之·你确定了解传输层吗?

    万次阅读 多人点赞 2021-12-11 18:37:21
    1.TCP是面向连接的传输层协议 2.每条TCP连接只能有两个端点,每条TCP连接只能是点对点的(一对一) 3.TCP提供可靠的交付服务,保证传送的数据无差错、不丢失、不重要且有序 4.TCP是面向字节流的 5.TCP提供全双工...

    🌕写在前面


    • 🍊博客主页:kikoking的江湖背景
    • 🎉欢迎关注🔎点赞👍收藏⭐️留言📝
    • 🌟本文由 kikokingzz 原创,CSDN首发!
    • 📆首发时间:🌹2021年12月12日🌹
    • 🆕最新更新时间:🎄2021年12月12日🎄
    • ✉️坚持和努力一定能换来诗与远方!
    • 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢!



    目录

    🔥1.传输层的功能

    🍊1·传输层提供进程间的逻辑通信(即端到端通信)

    🍊2·复用分用

    🌟1.什么是复用分用?

    🌟2.如何实现多路分用?

    🌟3.无连接的多路复用与分解

    🌟4.面向连接的多路复用与分解

    🌟5.套接字与线程

    🌟6.HTTP与套接字的关系

    🍊3·差错检测

    🍊4·提供两种不同的传输协议

    🔥2.传输层的寻址与端口

    🍊2.1 端口的作用

    🍊2.2 端口号

    🍊2.3 套接字

    🔥3.UDP协议

    🍊3.1 UDP的概念

    🍊3.2 UDP的优点

    🍊3.3 UDP的首部格式

    🍊3.4 UDP校验

    🌟伪首部的特点

    🌟UDP校验方法

    🔥4.TCP协议

    🍊4.1 TCP协议的特点

    🍓发送缓存

    🍓接收缓存

    🍊4.2 TCP报文段

    📜习题检测

    🍊4.3 TCP连接管理

    🍓TCP连接建立·三次握手

    🍓TCP连接的释放·4次握手

    🍊4.4 TCP可靠传输

    🍓序号机制

    🍓确认机制

    🍓超时重传

    🍓冗余ACK重传

    🍊4.5 TCP流量控制

    🍓1.流量控制的功能

    🍓2.如何实现流量控制

    🍓接收窗口rwnd

    🍓拥塞窗口cwnd

    🍊4.6 TCP拥塞控制

    🔥5.如何维护拥塞窗口呢?

    🍊5.1 慢开始和拥塞避免

    🍓1 慢开始算法

    🍓2 拥塞避免算法

    🍓3 网络拥塞的处理

    🍊2.快重传和快恢复

    🍓2.1快重传

    🍓2.2快恢复


    🔥1.传输层的功能


    🍊1·传输层提供进程间的逻辑通信(即端到端通信)

    ·网络层:提供的是主机之间的通信

    逻辑通信:传输层之间的通信好像是沿水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接;具体来说传输层向高层用户屏蔽了低层网络核心的细节(例如网络拓扑、路由协议),使应用进程看见的好像是在两个传输层实体之间有一条端到端的逻辑通信信道。

    🍊2·复用分用

    🌟1.什么是复用分用?

    A1:我们举一个通俗的写信例子,考虑有两家人,一家住在城南,一家住在城东,每家都有20多个孩子,他们互相写信,城南的家庭的所有信件由 kikoking 负责收发,城东的家庭的所有信件收发由 mrlx 进行,他们负责收集家里的信件然后交付给邮政服务传送。

    在上述这个例子中 kikoing mrlx 就好比是Socket,邮政服务为两个家庭提供逻辑通信,看似信件是由两家人互相寄出的,而其实是通过邮政服务(传输层以下的服务)传递的。

    其中每一个孩子通过他们的姓名来标识,当kikoking收到邮政服务的信件后,通过查看收件人名字而将信件亲手交付给他的兄弟姐妹,这执行的是多路分解操作

    当mrlx从兄弟姐妹那收集信件,并将它们交给邮递员时,他执行的是多路复用操作


    🌟2.如何实现多路分用?


    🌟3.无连接的多路复用与分解

    当报文段从主机A和主机B到达主机C时,主机C的传输层检查报文段中的目的端口号(6428),并将其定向到相应的套接字(6428),然后报文段中的数据通过套接字进入其所连接的进程


    🌟4.面向连接的多路复用与分解

    如上图,主机主机C向主机B发起了两个HTTP会话,主机A向主机B发起了一个HTTP会话

    尽管主机A和主机C的源端口号相同,但是对于服务器B来说依旧能够正确地分解这两个具有相同源端口号的连接,因为这两条连接有不同的源IP地址。


    🌟5.套接字与线程

    当今高性能的Web服务器通常只使用一个进程,但为每个客户新的连接创造一个新的线程(线程相当于一个轻量级的子进程)


    🌟6.HTTP与套接字的关系

    如果客户与服务器使用非持续HTTP,则对每一对请求/响应都创建一个新的TCP连接并在随后关闭,因此对每一对请求/响应创建一个新的套接字并在随后关闭。这种套接字的频繁创建和关闭会严重影响一个繁忙的Web服务器的性能。

    如果客户使用持续HTTP,则在整条连接持续期间,客户与服务器之间经由同一个服务器套接字交换HTTP报文。


    🍊3·差错检测

    ·传输层对收到的报文(首部和数据部分)进行差错检测

    ·网络层只检查IP数据报的首部,不检查数据部分是否出错


    🍊4·提供两种不同的传输协议

    ·面向连接的TCP和无连接的UDP;而网络层无法同时实现这两种协议

    网络层提供面向连接的服务——虚电路

    网络层提供无连接服务——数据报

    不可能在网络层同时出现这两种方式!

    ✨✨✨我是分割线✨✨✨

    🔥2.传输层的寻址与端口


    🍊2.1 端口的作用

    1.是传输层的服务访问点

    2.能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据通过端口交付给应用层相应的进程

    3.是软件端口——应用层的各种协议进程与传输实体进行层间交互的一种地址

    对比·硬件端口:不同硬件设备进行交互的接口


    🍊2.2 端口号

    ·应用进程通过端口号进行标识,端口号长度为16bit,能够表示65536个不同的端口号

    应用程序FTPTELNETSMTPDNSTFTPHTTPPOP
    熟知端口号212325536980110

    🍊2.3 套接字

    网络中通过IP地址来标识和区分不同的主机,通过端口号来标识和区分一台主机中的不同应用进程,端口号拼接到IP地址即构成套接字Socket在网络中采用发送方和接收方的套接字来识别端点。

    套接字Socket=(IP地址:端口号);它唯一标识网络中的一台主机上的一个应用进程

    ✨✨✨我是分割线✨✨✨

    🔥3.UDP协议


    🍊3.1 UDP的概念

    1.与IP的区别:UDP在IP数据报服务之上增加了两个最基本的服务:复用和分用 + 差错检测

    2.常用于一次性传输较少数据的网络应用,如DNS 、SNMP等

    因为对于这些应用,若采用TCP,则将为连接创建、维护、拆除带来不小的开销

    3.常用于多媒体应用(IP电话、视频会议、流媒体等)

    因为可靠传输对于这些应用来说不是最重要的,TCP的拥塞控制会导致数据出现较大的延迟,这是大忌!

    4.不保证可靠交付,但并不意味着应用对数据的要求是不可靠的,所有维护可靠性的工作可由用户在应用层完成

    5.UDP是面向报文的,报文不可分割,报文是UDP数据报处理的最小单位


    🍊3.2 UDP的优点

    1.无需建立连接,不会引入建立连接的时延

    ·DNS如果运行在TCP上,速度会慢很多;因此使用UDP

    ·HTTP使用TCP是因为对于基于文本数据的web网页,可靠性是至关重要的

    2.无连接状态,不维护连接状态,一般能支持更多的活动客户机

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

    3.分组首部开销小

    ·TCP有20B的首部开销,UDP有8B的开销

    4.没有拥塞控制,应用层能更好地控制要发送的数据和发送时间

    ·UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率

    5.支持一对一、一对多、多对一和多对多的交互通信


    🍊3.3 UDP的首部格式

    UDP数据报包含两部分:UDP首部和用户数据

    UDP首部(8B),由4个字段组成,每个字段长度为2B

    1.源端口号:在需要对方回信时选用,不需要时全0

    2.目的端口号:这在终点交付报文时必须使用到

    3.UDP长度(8B)UDP数据报的长度(包括首部和数据),其最小值是8(仅有首部)\

    4.校验和:检测UDP数据报中是否有错,有错就丢弃。该字段可选,不使用时全0

    当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用进程,如图5.3所示

    如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于端口号的应用进程),那么就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方


    🍊3.4 UDP校验

    在计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正首部,只是在计算校验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报

    UDP校验和检查首部和数据部分,而IP校验和只检查数据报的首部

    🌟伪首部的特点

    1.长度为12B

    2.伪首部不是UDP的真正首部,只在计算校验和时用到

    3.伪首部既不向下传送也不向上递交,只是为了计算校验和

    🌟UDP校验方法

    1.发送方首先把全零放入校验和字段并添加伪首部,然后把UDP数据报视为许多16位的字连接起来。

    2.若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾增加一个全零字节(但此字节不发送)。

    3.接下来按二进制反码计算出这些16位字的和,并将此和的二进制反码写入校验和字段。

    4.接收方把收到的UDP数据报加上伪首部(如果不为偶数个字节,那么还需要补上全零字节)后,按二进制反码计算出这些16位字的和。

    5.当无差错时其结果应全为1,否则表明有差错出现,接收方就应该丢弃这个UDP数据报。

    实例1.

    注意:

    1)校验时,若UDP数据报部分的长度不是偶数个字节,则需填入一个全0字节,如图5.5 所示。但是此字节和伪首部一样,是不发送的。

    2)通过伪首部,不仅可以检查源端口号、目的端口号和UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址

    这种简单的差错检验方法的检错能力并不强,但它的好处是简单、处理速度快。

    ✨✨✨我是分割线✨✨✨

    🔥4.TCP协议


    🍊4.1 TCP协议的特点

    1.TCP是面向连接的传输层协议

    2.每条TCP连接只能有两个端点,每条TCP连接只能是点对点的(一对一)

    3.TCP提供可靠的交付服务,保证传送的数据无差错、不丢失、不重要且有序

    4.TCP是面向字节流的

    5.TCP提供全双工通信,允许双方在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据

    🍓发送缓存

    发送缓存用来暂存以下数据:

    1.发送应用程序传送给发送方TCP准备发送的数据

    2.TCP已发送但尚未收到确认的数据

    🍓接收缓存

    接收缓存用来暂存以下数据:

    1.按序到达但尚未被接收应用程序读取的数据

    2.不按序到达的数据


    虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅视为一连串的无结构的字节流

    注意:TCP和UDP在发送报文时所采用的方式完全不同。UDP报文的长度由发送应用进程决定,而TCP报文的长度则根据接收方给出的窗口值和当前网络拥塞程度来决定如果应用进程传送到TCP缓存的数据块太长,TCP就把它划分得短一些再传送;如果太短,TCP也可以等到积累足够多的字节后再组成报文段发送出去


    🍊4.2 TCP报文段

    1.TCP传送的数据单元称为报文段

    2.TCP报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答

    3.一个TCP报文段分为首部数据两部分,整个TCP报文段作为IP数据报的数据部分封装在IP数据报中

    1.源端口和目的端口(2B/2B)端口是运输层与应用层的服务接口;运输层的多路复用/分用都要通过端口实现

    2.序号(4B): 范围0~ 2^{32}-1  :TCP是面向字节流的,所以TCP连接传送的字节流中的每个字节都按顺序编号,序号字段的值是指本报文段所发送的数据的第一个字节的序号

    例如,一报文段的序号字段值是301,而携带的数据共有100B,表明本报文段的数据的最后一个字节的序号是400,因此下一个报文段的数据序号应从401开始。

    3.确认号(4B)是期望收到对方下一个报文段的第一个数据字节的序号,若确认号为N,则表明到序号N-1为止的所有数据都已正确收到

    例如,B正确收到了A发送过来的一个报文段,其序号字段是501,而数据长度是200B(序号501~700),这表明B正确收到了A发送的到序号700为止的数据。因此B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701。

    4.数据偏移(占4位):即首部长度,这里不是IP数据报分片的那个数据偏移,而是表示首部长度(首部中还有长度不确定的选项字段),它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。

    数据偏移”的单位是32位(以4B为计算单位)。因此当此字段的值为15时,达到TCP首部的最大长度60B。

    5. 保留(占6位): 保留为今后使用,但目前应置为0。

    6.紧急位URG(占1位):URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据。但URG需要和紧急指针配合使用,即数据从第一个字节到紧急指针所指字节就是紧急数据。

    7.确认位ACK(占1位):仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

    8.推送位PSH(占1位):接收方TCP收到PSH=1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满后再向上交付

    9.复位位RST(占1位):RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

    10.同步位SYN(占1位)同步SYN=1表示这是一个连接请求或连接接受报文

    当SYN=1,ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则应在响应报文中使用SYN=1,ACK=1。

    11.终止位FIN(占1位):用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。

    12.窗口(占2B):范围为0~ 2^{16}-1  。它指出现在允许对方发送的数据量,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据

    例如,设确认号是701,窗口字段是1000。这表明,从701号算起,发送此报文段的一方还有接收1000字节数据(字节序号为701~1700)的接收缓存空间。

    13.校验和(占2B):校验和字段检验的范围包括首部和数据两部分。在计算校验和时,和UDP一样,要在TCP报文段的前面加上12B的伪首部(只需将UDP伪首部的第4个字段,即协议字段的17改成6,其他的和UDP一样)

    14.紧急指针(占2B):紧急指针仅在URG=1时才有意义它指出在本报文段中紧急数据共有多少字节(紧急数据在报文段数据的最前面)

    15.选项(长度可变):TC最初只规定了一种选项,即最大报文段长度(Maximum Segment Size,MSS)。MSS是TCP报文段中的数据字段的最大长度(注意仅仅是数据字段)。

    16.填充:这是为了使整个首部长度是4B的整数倍。


    📜习题检测

    解:由TCP首部信息可知

    (1)源端口号(2B):0x0D28 目的端口(2B):0x0015

    (2)序号占(4B):0x505F A906 确认号(4B):0x0000 0000

    (3)TCP首部长度: 0x7 -----> 7*4=28字节

    (4)目的端口:5+16=21 使用FTP协议的TCP连接 SYN=1、ACK=0 表示这是一个连接请求报文


    🍊4.3 TCP连接管理

    ·在TCP连接建立的过程中,要解决以下三个问题:

    1)要使每一方能够确知对方的存在

    2)要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项及服务质量等)。

    3)能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

    ·TCP连接的端口即为套接字(socket)或插口,每条TCP连接唯一地被通信的两个端点(即两个套接字)确定。

    ·TCP连接的建立采用客户/服务器方式主动发起连接建立的应用进程称为客户(Client),而被动等待连接建立的应用进程称为服务器(Server)。

    🍓TCP连接建立·三次握手

    ·特别注意:服务端资源是在完成第二次握手时分配的,而客户端资源是在完成第三次握手时分配的,这就容易使得服务器易于收到SYN洪泛攻击

    🍓TCP连接的释放·4次握手


    🍊4.4 TCP可靠传输

    Q:TCP是如何实现可靠传输的呢?

    A:TCP使用校验、序号、确认和重传等机制来达到这一目的

    🍓序号机制

    TCP首部的序号字段用来保证数据能有序提交给应用层,TCP把数据视为一个无结构但有序的字节流,序号建立在传送的字节流之上,而不建立在报文段之上。TCP连接传送的数据流中的每个字节都编上一个序号。序号字段的值是指本报文段所发送的数据的第一个字节的序号。

    如图5.9所示,假设A和B之间建立了一条TCP连接,A的发送缓存区中共有10B,序号从0开始标号,第一个报文包含0~2,则该TCP报文段的序号为0,第二个报文段的序号是3。

    🍓确认机制

    TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号.在图5.9中,如果接收方B已收到第一个报文段,此时B希望收到的下一个报文段的数据是从第3个字节开始的,那么B发送给A的报文中的确认号字段应为3。发送方缓存区会继续存储那些已发送但未收到确认的报文段,以便在需要时重传

    TCP默认使用累计确认,即TCP只确认数据流中至第一个丢失字节为止的字节。例如,在图5.8中,接收方B收到了A发送的包含字节0~2及字节6~7的报文段。由于某种原因,B还未收到字节3~5的报文段,此时B仍在等待字节3(和其后面的字节),因此B到A的下一个报文段将确认号字段置为3。

    🍓超时重传

    TCP每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段。

    设定的计时器时间应略大于一个加权平均往返时间RTTs,但也不能大太多,否则当报文丢失不饿能及时重传

    🍓冗余ACK重传

    冗余ACK就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认。

    TCP规定当发送方收到对同一个报文段的3个冗余ACK时,就可以认为跟在这个被确认报文段之后的报文段已经丢失。

    例如,发送方A发送了序号为1、2、3、4、5的TCP报文段,其中2号报文段在链路中丢失,它无法到达接收方,3、4、5号报文到达B,但它们不是B所期望收到的下一个报文,于是B就发送3个对1号报文段的冗余ACK,表示自己期望接收2号报文段。当A收到对于1号报文段的3个元余ACK,它可以认为2号报文段已经丢失。这时发送方A可以立即对2号报文执行重传,这种技术通常称为快速重传。当然,冗余ACK还被用在拥塞控制中,这将在后面的内容中讨论。


    🍊4.5 TCP流量控制

    🍓1.流量控制的功能

    TCP提供流量控制服务来消除发送方(发送速率太快)使接收方缓存区溢出的可能性,因此可以说流量控制是一个速度匹配服务,匹配发送方的发送速率与接收方的读取速率

    🍓2.如何实现流量控制

    TCP提供一种基于滑动窗口协议的流量控制机制

    🍓接收窗口rwnd

    1.在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小

    2.即调整TCP报文段首部中的“窗口”字段值,来限制发送方向网络注入报文的速率

    🍓拥塞窗口cwnd

    1.发送方根据其对当前网络拥塞程序的估计而确定的窗口值,这称为拥塞窗口

    2.其大小与网络的带宽和时延密切相关

    ·例如,在通信中,有效数据只从A发往B,而B仅向A发送确认报文,这时B可以通过设置确认报文段首部的窗口字段来将rwnd通知给A。rwnd即接收方允许连续接收的最大能力,单位是字节。发送方A总是根据最新收到的rwnd值来限制自己发送窗口的大小,从而将未确认的数据量控制在rwnd大小之内,保证A不会使B的接收缓存溢出。当然,A的发送窗口的实际大小取rwnd和cwnd中的最小值.

    ·图5.10中的例子说明了如何利用滑动窗口机制进行流量控制。设主机A向主机B发送数据,在连接建立时,B告诉A:“我的接收窗口rwnd=400(字节)“接收方进行了三次流量控制,这三个报文段都设置了ACK=1,只有在ACK=1时,确认号字段才有意义。第一次把窗口减小到rwnd=300,第二次把窗口减小到rwnd=100,最后把窗口减小到rwnd=0,即不允许发送方再发送数据。这使得发送方暂停发送到状态将持续到B重新发出一个新的窗口值为止。


    🍊4.6 TCP拥塞控制

    ·拥塞控制:防止过多的数据注入网络,保证网络中的路由器或链路不致过载。出现拥塞时,端点并不了解拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加

    ·进行拥塞控制的4种算法:慢开始、拥塞避免、快重传和快恢复

    ·发送方在确定报文段的速率要考虑:

    1.接收方的接收能力 2.从全局考虑不要使网络发生拥塞

    ·因此TCP协议要求维护以下两个端口:

    1.接收窗口rwd接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量。 ·由接收方根据其放在TCP报文的首部的窗口字段通知发送方 ·如下图中的接收方主机B通过发送rwnd=300来限制发送方的窗口大小

    2.拥塞窗口cwd发送方根据自己估算的网络拥塞程度而设置的窗口值。反映网络的当前容量。只要网络未出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入网络的分组数。发送窗口的上限值应取接收窗口rwnd和拥塞窗口cwnd中较小的一个,即

    ·发送窗口的上限值=min{rwnd,cwnd}

    ✨✨✨我是分割线✨✨✨ 

    🔥5.如何维护拥塞窗口呢?


    🍊5.1 慢开始和拥塞避免

    🍓1 慢开始算法

    使用慢开始算法后,先令拥塞窗口cwnd=1,每经过一个传输轮次(即往返时延RTT),拥塞窗口cwnd就会加倍,即cwnd的大小指数式增长。这样,慢开始一直把拥塞窗口cwnd增大到一个规定的慢开始门限ssthresh(闽值),然后改用拥塞避免算法。

    例如,A向B发送数据,发送时A的拥塞窗口为2,那么A一次可以发送两个TCP报文段,经过一个RTT后(也称一个传输轮次),A收到B对刚才两个报文的确认,于是把拥塞窗口调整为4,下一次发送时就可一次发送4个报文段。

    🍓2 拥塞避免算法

    拥塞避免算法的做法如下:发送端的拥塞窗口cwnd每经过一个往返时延RTT就增加1,而不是加倍,使cwnd按线性规律缓慢增长(即加法增大)

    根据cwnd的大小执行不同的算法,可归纳如下:

    ·当cwnd<ssthresh时,使用慢开始算法

    ·当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法

    ·当cwnd=ssthresh时,既可使用慢开始算法,又可使用拥塞避免算法(通常做法)

    🍓3 网络拥塞的处理

    网络出现拥塞时,无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(未按时收到确认,重传计时器超时),就要把慢开始门限ssthresh设置为出现拥塞时的发送方的cwnd值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。

    为什么要这么操作呢? 这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完。

    拥塞避免并不能完全能避免拥塞。利用以上措施要完全避免网络拥塞是不可能的。拥塞避免是指在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

    1.初始时,拥塞窗口置为1,即cwnd=1,慢开始门限置为16,即ssthresh=16。

    2.慢开始阶段,cwnd的初值为1,以后发送方每收到一个确认ACK,cwnd值加1,也即经过每个传输轮次(RTT),cwnd呈指数规律增长。当拥塞窗口cwnd增长到慢开始门限ssthresh时(即当cwnd=16时),就改用拥塞避免算法,cwnd按线性规律加性增长。

    3.假定cwnd=24时网络发生拥塞,更新ssthresh的值为12(即变为超时时cwnd值24的一半),cwnd重置1,并执行慢开始算法,cwnd=12时,改为拥塞避免算法。


    🍊2.快重传和快恢复

    快重传和快恢复算法是对慢开始和拥塞避免算法的改进

    🍓2.1快重传

    快重传使用了冗余ACK来检测丢包的发生,当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时

    🍓2.2快恢复

    快恢复算法的原理如下:发送端收到连续三个冗余ACK(即重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh设置为出现拥塞时发送方cwnd的一半。与慢开始(慢开始算法将拥塞窗口cwnd设置为1)的不同之处是,它把cwnd的值设置为慢开始门限ssthresh改变后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

    注:在本节的最后,再次提醒读者:发送方发送窗口的实际大小由流量控制和拥塞控制共同决定。因此,当题目中同时出现接收端窗口(rwnd)和拥塞窗口(cwnd)时,发送方实际的发送窗口大小是由rwnd和cwnd中较小的那一个确定的

    展开全文
  • 1. 物理概述物理的主要任务网络物理(Physical Layer,PH)主要任务为:如何利用传输媒体,为数据链路提供传送和接收二进制比特(bit)流的服务。 物理的具体功能物理协议的具体功能为: 确定与传输...

    有了前两篇文章的基础,相信大家已经对物理层有了一定的概念了,那物理层的功能具体怎么实现呢?

    这篇文章里,我将一一道来:

    1. 物理层概述
    2. 数据通信基础知识
    3. 数据编码技术
    4. 信道复用技术
    5. 物理层下面的传输媒体

    在这里插入图片描述

    1. 物理层概述

    物理层的主要任务

    网络物理层(Physical Layer,PH)主要任务为:如何利用传输媒体,为数据链路层提供传送和接收二进制比特(bit)流的服务。

    在这里插入图片描述

    物理层的具体功能

    物理层协议的具体功能为:

    1. 确定与传输媒体接口的特性:机械特性 电气特性、功能特性、过程特性。
    2. 比特的表示。
    3. 传输速率:每个比特的传输时间。
    4. 传输方式:单工、双工还是半双工。
    5. 位同步:收发双方的快慢一致。
    6. 线路配置:点对点还是点对多点。

    在这里插入图片描述

    2. 数据通信基础知识

    数据通信系统基本模型

    数据通信是指在不同计算机之间传送表示字符、数字、语音、图像的二进制代码0、1比特序列的过程。 一个数据通信系统包括三大部分,涉及四种通信技术:
    在这里插入图片描述

    常用术语

    • 信息(Infomation)人对现实世界的某种认识。

    • 数据(Data)是信息的表达方式(载体)。其可以是文字、声音和图象等多种不同形式。本课中,数据理解为在网络中存储、处理和传输的二进制数字编码。

    • 信号(Signals)数据传输过程中的电磁波表示形式(光、电信号、无线信号)。
      在这里插入图片描述

    • 模拟信号(analogous signal)是指信号及其振幅、频率、相位等参数随时间连续变化的信号;

    • 数字信号是离散的一系列电脉冲,它的取值是有限的几个离散数值,其强度在某个时间周期内维持一个常量级,然后改变到另一个常量级。
      在这里插入图片描述

    • 码元 (code):是在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形。值得注意的是当码元的离散状态有大于2个时(如M大于2个)时,此时码元为M进制码元。即一个码元不一定对应于一个比特。

    • 码元传输速率:是模拟信号的速率,以波形每秒的振荡数来衡量(也称为调制速率、波形速率或波特率)。通常数据传输速率(比特率)大于波特率。
      在这里插入图片描述

    数据通信的基本概念

    数据通信的理论基础

    信号在通信信道上传输时的数学表示可以根据傅立叶(Fourier)分析得出:任何电磁信号可以由若干具有不同振幅、频率和相位的周期模拟信号组成

    在这里插入图片描述

    时域观和频域观

    在网络通信中,计算机信息(数据)是以电磁波(或称信号)的形式传输的。

    • 电磁信号是时间的函数(时域观)
    • 电磁信号也可以看成频率的函数(频域观)

    计算机等终端设备的原始数据信号因为往往包含有较多的低频成分,甚至有直流成分,因此,时域中的数字信号在频域中也称为基带信号(即基本频带信号)。

    在这里插入图片描述

    单工、半双工、全双工

    从信息传送方向和时间的关系角度研究数据通信方式可以分为:

    • 单工通信:只能有一个方向的通信而没有反方向的交互。
    • 半双工通信:通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。
    • 全双工通信:通信的双方可以同时发送和接收信息。

    在这里插入图片描述

    并行通信和串行通信

    根据一次传输数据时使用的信道数,可以将计算机和外部通信方式分为:

    • 并行通信
    • 串行通信

    在这里插入图片描述

    而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。

    数据通信中的同步方式

    同步指的是通信中的接收双方在时间基准上一致。可分为:位同步、字符同步(异步通信)和报文(比特流)同步(同步通信):

    • 同步通信:信息是以报文为单位传送的;传输开始时,以同步字符使收发双方同步;从传输信息中抽取同步信息,修正同步,保证正确采样。

    • 异步通信:信息是以字符为单位传送的;每个字符由发送方异步产生,有随机性。

    在这里插入图片描述

    信道的极限容量

    任何实际的信道都不是理想的,在传输信号时会产生各种失真以及带来多种干扰。

    码元传输的速率越高,或信号传输的距离越远,或传输媒体质量越差,在信道的输出端的波形的失真就越严重。

    在这里插入图片描述
    信道容量(Channel Capacity)是指通信系统的最大传输速率(bps)。

    把能通过该信道的频率范围定义为信道带宽,显然,信道带宽总是有限的。故信道的数据传输速率受信道带宽的限制

    • 奈奎斯特准则:理想信道的二进制数据信号的最大数据传输速率 C与信道带宽B(Hz)的关系为:在这里插入图片描述
      其中n一个脉冲所表示的有效状态,应用最广的是一个脉冲表示两种状态,即n=2;

    • 香农定理:在有随机热噪声的信道上传输数据信号时,数据传输速率C与信道带宽B,信噪比S/N的关系为
      在这里插入图片描述

    香农公式

    在这里插入图片描述信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。

    只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。

    若信道带宽B 或信噪比 S/N 没有上限(当然实际信道不可能是这样的),则信道的极限信息传输速率 C也就没有上限。

    实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少。

    对于频带宽度已确定的信道,如果信噪比不能再提高了,并且码元传输速率也达到了上限值,那么还有办法提高信息的传输速率。

    这就是用编码的方法让每一个码元携带更多比特的信息量。

    3. 数据编码技术

    计算机数字信号的两种基本传输方式:

    • 基带传输:在数字信道上直接传输基带信号的方法。
      不经转换,效率高。局域网,电缆的带宽足够。
    • 频带传输:在模拟信道上利用调制解调实现基带信号传输的方法。
      解决了数字信号可利用电话系统传输的问题。
      实现多路复用,以提高传输信道的利用率。
      但需要调制解调器。

    数据编码技术研究计算机数据在信号传输过程中如何进行编码(变换)。

    用编码的方法让每一个码元携带更多比特的信息量:
    在这里插入图片描述

    基带传输编码

    在基带传输中,需要对数字信号进行编码以表示数据,即用不同的电平值代表数字信号0或1。常采用以下三种编码方法:

    1. 不归零制编码(NRZ):简单,易实现。但难于位同步,须同时传送同步时钟信号。
    2. 曼彻斯特编码:是一种自同步编码方式。
    3. 差分曼彻斯特编码:是基本曼彻斯特编码的变形。后两种编码应用普遍,已成为局域网标准编码。

    在这里插入图片描述

    频带传输编码

    基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。为了解决这一问题,就必须对基带信号进行调制 (modulation)。 通过改变振幅、频率和相位等载波特性或者这些特性的某种组合,来对数字数据进行编码(调制)。

    在这里插入图片描述 最基本的二元制调制方法有以下几种:

    • 调幅(AM):载波的振幅随基带数字信号而变化。
    • 调频(FM):载波的频率随基带数字信号而变化。
    • 调相(PM) :载波的初始相位随基带数字信号而变化。

    在这里插入图片描述

    4. 信道复用技术

    多路复用技术(Multiplexing) 就是把多路信号在单一的传输线路和用单一的传输设备来进行传输的技术。常用的多路复用技术有三类:

    • 频分多路复用(FDM,Frequency Division Multiplexing)
    • 波分多路复用(WDM,WavelengthDivision Multiplexing )
    • 时分多路复用(TDM,Time Division Multiplexing)

    在这里插入图片描述

    频分多路复用FDM

    每路信道的信号以不同的载波频率进行调制;

    各个载波频率是不重叠的, 一条通信线路就可以同时独立地传输多路信号。

    在这里插入图片描述

    波分多路复用WDM

    是频分多路复用在光纤信道上使用的一个变种。

    在一根光纤上复用80路或更多路的光载波信号称为密集波分复用DWDM;

    在这里插入图片描述

    时分多路复用TDM

    时分多路复用是将信道用于传输的时间划分为若干个时间片;每个用户分得一个时间片在这里插入图片描述
    在这里插入图片描述
    在每个用户占有的时间片内,用户使用通信信道的全部带宽。

    5. 物理层下面的传输媒体

    传输媒体也称为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路。

    传输媒体可分为两大类,即导引型传输媒体和非导引型传输媒体:

    • 导引型传输媒体中,电磁波被导引沿着固体媒体(铜线或光纤)传播。
    • 非导引型传输媒体就是指自由空间。在非导引型传输媒体中,电磁波的传输常称为无线传输。

    电信领域使用的电磁波的频谱:
    在这里插入图片描述

    导引型(有线)传输媒体

    双绞线

    双绞线是最常用的传输媒体。

    模拟传输和数字传输都可以使用双绞线,其通信距离一般为几到十几公里。可以分为:

    • 屏蔽双绞线 STP (Shielded Twisted Pair)
      带金属屏蔽层
    • 无屏蔽双绞线 UTP (Unshielded Twisted Pair)

    在这里插入图片描述

    双绞线的标准

    1991年,美国电子工业协会 EIA 和电信行业协会联合发布了一个用于室内传送数据的无屏蔽双绞线和屏蔽双绞线的标准 EIA/TIA-568。

    1995年将布线标准更新为 EIA/TIA-568-A。

    此标准规定了 5 个种类的 UTP 标准(从 1 类线到 5 类线)。

    对传送数据来说,现在最常用的 UTP 是5类线(Category 5 或 CAT5)。

    在这里插入图片描述

    同轴电缆

    同轴电缆具有很好的抗干扰特性,被广泛用于传输较高速率的数据。
    同轴电缆的带宽取决于电缆的质量。

    • 50欧同轴电缆 —— LAN / 数字传输常用
    • 75欧同轴电缆 —— 有线电视 / 模拟传输常用

    在这里插入图片描述

    光缆

    光纤是光纤通信的传输媒体。
    由于可见光的频率非常高,约为 10^8 MHz 的量级,因此一个光纤通信系统的传输带宽远远大于目前其他各种传输媒体的带宽。
    在这里插入图片描述
    在这里插入图片描述

    多模光纤与单模光纤

    在这里插入图片描述

    优点

    常用的三个波段的中心分别位于 850 nm, 1300 nm 和 1550 nm。所有这三个波段都具有 25000~30000 GHz 的带宽,可见光纤的通信容量非常大。

    1. 通信容量非常大。
    2. 传输损耗小,中继距离长。
    3. 抗雷电和电磁干扰性能好。
    4. 无串音干扰,保密性好。
    5. 体积小,重量轻。

    非导引型(无线)传输媒体

    将自由空间称为“非导引型传输媒体”。

    无线传输所使用的频段很广。

    短波通信(即高频通信)主要是靠电离层的反射,但短波信道的通信质量较差,传输速率低。

    微波在空间主要是直线传播。传统微波通信有两种方式:

    • 地面微波接力通信
    • 卫星通信

    无线局域网使用的 ISM 频段

    要使用某一段无线电频谱进行通信,通常必须得到本国政府有关无线电频谱管理机构的许可证。但是,也有一些无线电频段是可以自由使用的。例如:ISM。各国的 ISM 标准有可能略有差别。
    在这里插入图片描述

    展开全文
  • 数据通信技术基础数据通信的基本概念信息、数据和信号数据通信系统数据通信系统的性能指标数据传输速率(传码速率、传信速率)【例】求传码速率和传信速率信道带宽(模拟信道、数字信道)、误码率【例】求误码率时延...
  • OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。 完成中继功能的节点通常称为中继系统。...网关工作在第四层传输层...
  • 传输层的TCP和UDP

    千次阅读 多人点赞 2022-06-27 09:18:59
    传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。通过端口号识别应用 -通过 IP 地址、端口号、协议号进行通信识别: 五元组的作用:确定某一具体的通信。P197 端口号的确定: *...
  • 计算机网络传输层知识点全覆盖

    万次阅读 多人点赞 2017-02-12 21:59:27
    传输层概述 作用:传输层为它上面的应用层提供通信服务。 在OSI七层参考模型中,传输层是面向通信的最高层,...网络层为不同主机提供通信服务,而传输层为不同主机的不同应用提供通信服务。 网络层只对报文头部进行差错
  • 网络层安全协议 IPsec 我们经常使用的虚拟专用网(某PN),在某PN中传送的信息都是经过加密的,而IPsec就是提供的这个服务。 IPsec并不是一个单一协议,而是能够在IP提供互联网通信安全的协议族。IPsec并没有限定...
  • 每一层的校验只校验本层的数据,传输层是段,网络层是包,链路层是帧。 数据链路层 数据链路层FCS是为了防止网卡软硬件bug、电缆不可靠、信号干扰而造成信号失真、数据错误。如果不检查,将一直到达目的地主机,很...
  • 传输层协议介绍(深入学习)

    千次阅读 2022-04-25 14:54:20
    文章目录传输层协议介绍(深入学习)1.TCP协议介绍1.1.TCP的特点1.2.TCP时效性1.3.TCP的缺陷1.4.TCP报文格式1.4.1源端口和目的端口字段1.4.2序列号字段1.4.3确认号字段1.4.4数据偏移字段1.4.5保留字段1.4.6标志位...
  • 计算机网络传输层网络

    千次阅读 2016-11-26 19:43:02
    介绍传输层是客户程序和服务器程序之间的联络人,...然而,报文仍然需要递交给正确的进程,传输层协议即负责进程到进程的通信。 寻址:端口号在客户-服务器模式中,客户进程和服务器进程有相同的名字,例如,如果要从
  • 复习笔记——物联网通信技术判断

    千次阅读 2022-01-02 21:27:23
    复习笔记,物联网通信技术
  • 当前,随着互联网技术日益成熟,有线网络从铜线向光纤的顺利改造,网络传输的稳定性和传输速率已经有了很大提升,可以满足广大网络用户基础需求。随着科技的进步,大数据的传输和密集型的网络应用环境越来越多,...
  • TCP/IP 网络通信协议 之 OSI 七模型

    千次阅读 2020-02-06 00:03:17
    3.1 OSI七层模型 TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。...它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和...
  • 转自: ... ---------------------  作者:xw20084898  ...从网络功能的角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第...
  • 当前主流的汽车混合网络主要由 CAN、LIN、Flex Ray、MOST...**CAN(Controller Area Network)**是1983年德国BOSCH公司研发的一种共享式双线串行通信总线,最高传输速率为1MBit/s,具有非破坏性仲裁,分布式实时控制...
  • 可能很多人都听说过网络通信的 5 模型,但是可能并不是很清楚为什么需要五模型,五模型负责的任务也有可能经常混淆。下面是网络通信的五模型 说实话,五模型的具体内容还是极其复杂的,不过今天这篇文章...
  • 传输层:TCP 隧道、UDP 隧道、常规端口转发 应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道 案例 1-网络传输应用层检测连通性-检测 先测试目标是否支持这些协议 1. TCP 协议 用“瑞士军刀”——netcat 执行 nc 命令:nc ...
  • 计算机网络通信技术的现状与发展趋势随着人们生活水平的提高,其对于计算机网络通信的要求与需求也不断提高,下面是小编搜集整理的一篇探究计算机网络通信技术现状的论文范文,供大家阅读参考。【摘要】随着我国...
  • TCP/IP 协议簇中的传输层位于应用层和网络层之间。它为应用层提供服务,并接收来自网络层的服务。... 一、进程到进程的通信 传输层协议的首要任务是提供进程到进程通信( process-to-process communicat...
  • 计算机网络物理之数据通信的基础知识 数据通信的基础知识 数据通信系统的模型 一个数据通信系统包括三大部分:源系统(或发送端、发送方)、传输系统(或传输网络)和目的系统(或接收端、接收方)。 常用术语 ...
  • 网络传输原理

    千次阅读 2022-02-03 21:49:37
    七层划分为:应用层、表示层、会话层、传输层网络层、数据链路层、物理层。 五层划分为:应用层、传输层网络层、数据链路层、物理层。 四层划分为:应用层、传输层网络层、网络接口层。 物理层 物理层功能:...
  • OSI七层模型详解(物理层、数据链路层、网络层、传输层.....应用层协议与硬件)   OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助...
  • 计算机网络传输层的功能

    千次阅读 2016-03-29 18:09:06
    传输层提供进程之间的逻辑通信(即端到端的通信)。 2).复用和分用。复用是指发送方不同的应用进程都可以使用同一个传输层协议传输数据; 分用是指接收方的传输层在接收到报文将其报头剥去之后能将数据正确的交付...
  • 计算机网络之物理层、链路层、网络层 OSI参考模型: 应用层:应用层是直接为应用进程提供服务的。...会话层:会话层位于OSI标准模型的第五层,他是建立在传输层之上,利用传输层提供的服务建立和维持会
  • 收藏:常见物联网通信技术概览

    千次阅读 2022-04-16 20:28:45
    ​ 常见的通信技术可以分为有线通信技术和无线通信技术。参考“常见物联网通信技术概览”。有线技术与无线技术根据场景及技术特点,又细分出许多不同的标准。
  • OSI七层协议在网络传输中扮演的角色及功能:7、应用层——–电脑的各种数据6、表示层 ——– 处理用户信息的表示问题,如编码、数据格式转换和加密解密5、会话层——–会话管理、会话流量控制、寻址、寻址4、传输层...
  • 出现拥塞时,端点并不了解到拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加。当然,拥塞控制和流量控制也有相似的地方,即它们都通过控制发送方发送数据的速率来达到控制效果。 2.拥塞控制与...
  • 物联网常用的无线通信技术

    万次阅读 多人点赞 2021-03-07 18:01:17
    物联网常用的无线通信技术前言短距离无线通信技术蓝牙WiFiZigBee低功耗长距离无线通信...“蓝牙”是一种大容量近距离无线数字通信技术标准,其目标是实现最高数据传输速率1Mbps、最大传输距离为10厘米~10米的数据传输

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 196,908
精华内容 78,763
热门标签
关键字:

属于网络传输层通信技术的是

友情链接: sha1-586.rar