精华内容
下载资源
问答
  • tcp传输协议
    千次阅读
    2022-03-02 15:10:26

    要点
    ​ 运输层协议,特点:面向连接、单播、可靠交付、全双工通信、面向字节流、头部开销大,三次握手四次挥手。

    标准

    ​ TCP是传输控制协议,是TCP/IP体系中非常复杂的一个协议,属于运输层协议。与UDP协议一样用于处理应用层的数据。它和UDP一样具有复用和分用的功能以及可靠传输的功能。TCP的主要特点是:面向连接、单播、可靠交付、全双工通讯、面向字节流、头部开销大。

    重点

    ​ TCP是传输控制协议,是TCP/IP体系中非常复杂的一个协议,属于运输层协议。与UDP协议一样用于处理应用层的数据。它和UDP一样具有复用和分用的功能以及差错检测的功能。UDP的主要特点是:

    • 面向连接。应用程序在使用TCP之前必须两端之间先建立TCP连接。当确认数据传输完成之后,必须要释放TCP连接。
    • 单播。TCP只能有两个端点,进行点对点的传输,不支持多播和广播传输。
    • 可靠交付。通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的。
    • 全双工通信。TCP允许连接的双方可以在任何时候发送数据,双方都有发送缓存和接收缓存。应用程序把数据给发送缓存之后就可以做其他的事情了,TCP发送缓存会在合适的时候自己把缓存中的数据发送出去。在接受的时候TCP会把数据存进接收缓存,上层应用程序会在合适的时候读取数据。也正因为是全双工通信方式,建立连接时最少需要三次信息确认,也就是三次握手,断开连接时最少需要四次信息确认,也就是所谓的四次挥手。
    • 面向字节流。TCP不像UDP每一个数据报独立传输,而是在不保留报文边界的情况下以字节流的方式进行传输,这也是长连接的由来。TCP中的“流”就是指流入到进程或从进程流出的字节序列。
    • 头部开销大。最小20字节,最大60字节。加上TCP的可靠传输机制功能的影响,数据传输效率比UDP慢很多。

    延伸
    TCP把“连接”作为最基本的抽象。TCP的连接必须建立在两个“端点”,这两个“端点”不是主机,不是IP地址,不是应用程序,也不是运输层的协议端口,而是套接字(socket)或者叫“插口”,根据RFC 793的定义:端口号拼接到IP地址就构成了套接字。

    ​ 需要注意的是,socket这个词语在不同的使用场景有不同的含义,容易让人混淆。例如:

    • 允许应用程序访问联网协议的应用编程接口API,也就是应用层和运输层之间的一种接口,称为socket API,简称socket。
    • socket API中使用的一个函数名也叫socket。 调用socket时,返回值是socket描述符,简称socket。
    • 上面这些socket的意思和TCP中的端点不同。

    使用TCP的各种应用层协议:
    在这里插入图片描述

    更多相关内容
  • TCP传输协议中如何解决丢包问题

    千次阅读 2021-08-11 07:28:37
    1. TCP协议定义(Transimission Control Protocol)是以一种面向连接的、可靠的、基于字节流的传输层通信协议。2. TCP是基于不可靠的网路实现可靠传输,肯定会存在丢包问题。3. 如果在通信过程中,发现缺少数据或者丢...

    一、回答这个问题之前,要考虑TCP协议为什么会丢包,在什么样的情况下会丢包。

    1. TCP协议定义(Transimission Control Protocol)是以一种面向连接的、可靠的、基于字节流的传输层通信协议。

    2. TCP是基于不可靠的网路实现可靠传输,肯定会存在丢包问题。

    3. 如果在通信过程中,发现缺少数据或者丢包,那边么最大的可能性是程序发送过程或者接受过程中出现问题。

    例如:我有2台服务器 ,A和B服务器。

    A服务器发送数据给B服务器频率过高时,B服务器来不及处理,造成数据丢包。(原因可能是程序逻辑问题,多线程同步问题,缓冲区溢出问题)

    如果A服务器不对发送频率进行控制,或者数据进行重发的话,那么B服务器收到数据就会少。就会造成丢失数据

    7620669d0b9c40fc5bb6afa0e2cf803c.png

    911ebe3cb18437154f9797522bb4e8cf.png

    二、TCP协议丢包后,如何解决丢包的问题

    为了满足TCP协议不丢包。TCP协议有如下规定:

    1. 数据分片:发送端对数据进行分片,接受端要对数据进行重组,由TCP确定分片的大小并控制分片和重组

    2. 到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认

    3. 超时重发:发送方在发送分片时设置超时定时器,如果在定时器超时之后没有收到相应的确认,重发分片数据

    4. 滑动窗口:TCP连接的每一方的接受缓冲空间大小固定,接收端只允许另一端发送接收端缓冲区所能接纳的数据,TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出

    5. 失序处理:作为IP数据报来传输的TCP分片到达时可能会失序,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层;

    6. 重复处理:作为IP数据报来传输的TCP分片会发生重复,TCP的接收端必须丢弃重复的数据;

    7. 数据校验:TCP将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到分片的检验或有差错,TCP将丢弃这个分片,并不确认收到此报文段导致对端超时并重发

    TCP三次握手,四次释放图:

    555d32d87cd56cac45d196e8f072748c.png

    【编辑推荐】

    【责任编辑:赵宁宁 TEL:(010)68476606】

    点赞 0

    展开全文
  • 传输控制协议TCP

    千次阅读 2022-02-09 16:41:26
    1、TCP是面向连接的传输协议。也就是说,应用程序在使用TCP协议之前,必须先建立TCP连接。在传输数据完毕后,必须释放已经建立的TCP连接。这就是说,应用进程之间的通信好像在“打电话”。通话前要先拨号建立连接...

    一、TCP协议的特点

     

    1、TCP是面向连接的传输层协议。也就是说,应用程序在使用TCP协议之前,必须先建立TCP连接。在传输数据完毕后,必须释放已经建立的TCP连接。这就是说,应用进程之间的通信好像在“打电话”。通话前要先拨号建立连接,通话结束后要挂机释放连接。

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

    3、TCP提供可靠交付的服务。也就是说,通过TCP连接传送的数据,无差错、不丢失、不重复且按序发送和接收。

    4、TCP提供全双工通信。

    5、TCP面向字节流。TCP中的“流”(steam) 指的是流入到进程或从进程流出的字节序列。

    6、TCP面向字节流的概念,如下图所示:

    注意:

    ■TCP连接是一条虚连接而不是一条真正的物理连接。

    ■TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。

    ■TCP 根据对方给出的窗口值当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。

    ■TCP可把太长的数据块划分短一些再传送。

    ■ TCP 也可等待积累有足够多的字节后再构成报文段发送出去。

    二、TCP报文的首部格式

    1、序号,取值范围是0~,共个序号2的32次方。TCP是面向字节流的,在一个TCP连接中传送的字节流的每一个字节都要按顺序编号,整个要传送的字节流的起始序号必须在连接建立时设置。若干个字节形成一个TCP报文段,TCP报文段以本报文段所发送的数据的第一个字节的序号作为本报文段的标识,也就是TCP报文首部中的“序号”,因此报文段首部中的“序号”字段,也可称为“报文段序号”。

    2、确认号,它的值是期望收到发送方下一个报文段序号,即下一个报文段第一个数据字节的序号。所以,我们应当记住:若确认号是N,则表明到序号N-1位置的所有数据都已确认收到。

    3、数据偏移。这个字段实际上是指出TCP报文段的首部长度。

    4、确认ACK。仅当ACK=1时确认号字段才有效。

    5、紧急URG (Urgent)。 当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序传送。

    6、推送PSH。当PSH=1时,希望在键入一个命令后立即就能收到对方的回应,可以使用此操作。

     7、复位RST。当RST=1时,必须释放连接,然后重新建立传输连接。

    8、终止FIN。用来释放一个连接。当FIN=1时,表此报文段的发送方的数据已发送完毕,并要求释放传输连接。

    9、窗口。接收方目前允许对方发送的数据量。窗口值在收发过程中是会改变的。

    10、校验和。检验传输数据的准确性。

    11、紧急指针。紧急指针仅在URG=1时才有意义,它指出了紧急数据的末尾在报文段的位置。当所有数据都处理完,TCP 就告诉应用程序恢复到正常操作。如下图所示:

     三TCP可靠传输的实现

    1、停止等待协议的要点

    ①概念:发送方每次只发送一个分组, 在收到确认后再发送下一个分组,这种方式就是停止等待协议。

    ②编号。对发送的每个分组和确认都进行编号。

    ③自动重传请求。 发送方为每个发送的分组设置一 个超时计时器。若超时计时器超时,发送方会自动重传分组。

    ④简单,但信道利用率太低。

    2、停止等待协议的两种工作模式

    通常A最终总是可以收到对所有发出的分组的确认。如果A不断重传分组但总是收不到确认,就说明通信线路太差,不能进行通信。

    ■使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。

    ■上述的自动重传请求ARQ意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。

     3、连续ARQ协议和滑动窗口协议——改进的停止等待协议

    虽然停止等待协议可以实现可靠传输,但效率比较低,因此使用了ARQ协议和滑动窗口协议。如下图所示:

     4、选择确认(SACK)

    连续ARQ协议和滑动窗口协议都采用累积确认的方式。

    TCP通信时,如果发送序列中间的某个数据包丢失,TCP 会重传最后确认的分组后续的分组,这样原先已经正确传输的分组也可能重复发送,降低了TCP性能。为改善这种情况,发展出选择确认( SACK) 技术,使TCP只重新发送丢失的包,而不用发送后续所有的分组,并提供相应机制使接收方能告诉发送方哪些数据丢失,哪些数据已经收到等。

    四、流量控制

    1、概念:流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。在客户端向服务器发送TCP连接请求时,TCP首部会包含客户端的接收窗口大小,服务器就会根据客户端的接收窗口大小调整发送窗口。分析数据包时的Win是接收窗口大小。

    2、拥塞控制的原因

            从上图中可看出,随着提供的负载的增大,网络吞吐量的增长速率逐渐减小。也就是说,在网络吞吐量还未达到饱和时,就已经有一部分输入分组被丢弃了。当网络的吞吐量明显地小于理想吞吐量时,网络就进入了轻度拥塞状态。更值得注意的是,当提供的负载达到某一数值时, 网络的吞吐量反而随提供的负载的增大而下降,这时网络就进入了拥塞状态。当提供的负载继续增大到某一数值时,网络的吞吐量就下降到零,网络已无法工作。这就是所谓的死锁(Deadlock)。

    3、拥塞控制的方法:慢开始、拥塞避免、快重传和快回复。

    五、发送窗口的上限

    拥塞控制和接收方对发送方的流量控制一起考虑, 那么很显然,发送方的窗口的上限值应当取为接收方窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,也就是说:

    -当rwnd<cwnd时,是接收方的接收能力限制发送方窗口的最大值。

    -反之,当cwnd<rwnd时,是网络的拥塞限制发送方窗口的最大值。

    展开全文
  • TCP传输协议如何进行流量控制?

    千次阅读 2019-09-18 07:32:51
    TCP流量控制,简单来说就是让数据传输传输的速率不要太快,让数据接收端来得及接收,利用滑动窗口机制可以很方便的在TCP连接上实现对数据传输端的流量控制。TCP的窗口单位是字节,不是报文段,数据传输端的发送...

    TCP传输协议如何进行流量控制?

    TCP流量控制,简单来说就是让数据传输端传输的速率不要太快,让数据接收端来得及接收,利用滑动窗口机制可以很方便的在TCP连接上实现对数据传输端的流量控制。TCP的窗口单位是字节,不是报文段,数据传输端的发送窗口不能超过接收端给出的接收窗口的数值,流量控制的机制是控制丢包率,主要目的:让数据传输端了解数据接收端当前的接收能力,可灵活调整传输速率。流量控制机制图如下图所示:

    TCP传输协议如何进行流量控制?

    滑动窗口:

    TCP采用大小可变的滑动窗口进行流量控制,窗口大小的单位是字节。

    数据传输窗口在连接建立时由双方商定。但在通信的过程中,数据接收端可根据自己的资源情况,随时动态地调整对方的传输窗口大小。滑动窗口实例图如下图所示:

    TCP传输协议如何进行流量控制?

    滑动窗口引进原由:

    我们可以把窗口理解为缓冲区(但是有些窗口和缓冲区又不太一样)。

    如果没有这些“窗口”,那么TCP每发送一段数据后都必须等到数据接收端确认后才能发送下一段数据,这样做的话TCP传输的效率实在是太低了。

    解决的办法就是在发送端等待确认的时候继续发送数据,假设发送到第X个数据段是收到数据接收端的确认信息,如果X在可接受的范围内那么这样做也是可接受的。这就是窗口(缓冲区)引入的缘由。

    滑动窗口:

    A、数据接收端窗口 X
    接收端缓冲区大小。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。

    B、拥塞窗口 Y
    发送端缓冲区大小

    C、数据传输窗口 Z
    发送窗口的上限值 = Min [X, Y]
    ① 当 X < Y 时,是接收端的接收能力限制数据传输窗口的最大值。
    ② 当 Y < X 时,则是网络的拥塞限制数据传输窗口的最大值。

    滑动窗口实例介绍:

    数据传输端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。还可发送 300 字节。

    TCP传输协议如何进行流量控制?

    数据传输端收到了对方对前 400 字节数据的确认,但对方通知数据传输端必须把窗口减小到 400 字节。现在数据传输端最多还可发送 400 字节的数据。

    滑动窗口需掌握的知识点:

    A、数据接收端将自己可以接受的缓冲区大小放入TCP首部中“窗口大小”字段,通过ACK来通知数据传输端。

    B、窗口大小字段越大,说明网络的吞吐率越高

    C、窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,即就是说不需要数据接收端的应答,可以一次连续的发送数据。

    D、操作系统内核为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有哪些数据没有应答,只有确认应答过的数据,才能从缓冲区删除。PS:发送缓冲区如果太大,会有空间开销。

    E、数据接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给数据传输端,数据传输端收到这个值后,就会减慢自己的发送速度。

    F、如果数据接收端发现自己的缓冲区满了,就会将窗口大小设置为0,此时数据传输端不再传输数据,但是需要在定期发送一个窗口探测数据段,使数据接收端把窗口大小告诉数据传输端。

    PS:在TCP的首部,有一个16为窗口字段,此字段就是用来存放窗口大小信息的。

    TCP报文段发送时机的选择

    1、TCP维持一个变量,它等于最大报文段长度MSS,只要缓存中存放的数据达到MSS字节就组装成一个TCP报文段发送出去。

    2、由发送方的应用程序指明要求发送报文段,即TCP支持的推送操作。

    3、是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段发送出去。

    展开全文
  • TCP协议传输特点

    千次阅读 2019-07-29 19:14:45
    TCP协议传输层的一个重要的协议,用于点对点的数据传输。它是可靠的面向连接的流式服务 (1)可靠性 TCP协议自带超时重传,应答确认机制,保证其可靠性。 (2)面向连接 TCP数据报要想发送,必须先建立连接(三...
  • TCP协议

    千次阅读 2022-04-10 23:22:21
    序号(Sequence Number):TCP传输过程中,在发送端出的字节流中,传输报文中的数据部分的每一个字节都有它的编号。 序号(Sequence Number)的语义与SYN控制标志(Control Bits)的值有关。根据控制标志(Control ...
  • UDP协议TCP协议

    万次阅读 2022-02-19 21:22:31
    UDP协议 UDP(User Datagram Protocol):用户报文协议 没有任何特点 和TCP对比:不可靠、无连接、面向报文 1. 网络的基本情况就是...2. UDP作为一种最简单的传输协议,基本上没有做什么的操作来帮助用户处理复杂的网
  • Python-TCP协议

    千次阅读 2021-12-10 18:21:48
    TCP协议传输控制协议,是一种面向连接的,可靠的,基于字节流的传输通信协议,由IETF的RFC 793定义。 传输数据需要经过创建连接,数据传送,终止连接三...TCP是因特网中的传输协议,使用三次握手协议建立连接...
  • TCP传输控制协议详解)详解

    万次阅读 多人点赞 2018-03-24 15:38:24
    TCP协议的特点(1)TCP协议是面向连接的运输层协议在数据传输前必须建立连接,数据传输之后释放连接。(2)TCP提供可靠交付的服务所谓可靠是指在传输过程中无重复,无丢失,无错误。但是同时会增加开销。(3)每一条...
  • TCP/IP协议模型:传输层(TCP/UDP)

    千次阅读 2018-11-17 19:22:23
    TCP协议主要信息: (1)TCP头部信息。TCP头部信息出现在每个TCP报文段中,用于指定通信的源端端口号,目的端端口号,管理TCP连接,控制两个方向的数据流。 (2)TCP状态转移过程。TCP连接的任意一端都是一个状态机...
  • TCP 协议如何保证可靠传输

    万次阅读 2022-02-22 20:31:28
    这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。 TCP 的接收端会丢弃重复的数据。 流量控制: TCP 连接的每一方都有固定...
  • java实现在tcp协议下进行数据的传输

    千次阅读 2022-04-09 16:56:48
    tcp特点: 1、面向有连接 3次握手,建立连接 4次挥手,断开连接 2、传输速度较慢 3、传输数据较安全 //1、创建Socket对象 Socket s = new Socket("192.168.0.17",12306); //2、写数据 String data = "约吗...
  • TCP 协议有什么缺陷?

    千次阅读 2022-05-09 15:00:18
    忽然思考一个问题,TCP 通过序列号、确认应答、超时重传、流量控制、拥塞控制等方式实现了可靠传输,看起来它很完美,事实真的是这样吗?TCP 就没什么缺陷吗? 所以,今天就跟大家聊聊,TCP 协议有哪些缺陷?主要有...
  • TCP协议如何保证可靠传输

    千次阅读 多人点赞 2021-11-19 23:26:38
    本文介绍TCP协议如何保证可靠传输。 本内容也是Java后端面试常见的问题。 概述 TCP协议保证数据传输可靠性的方式主要有: 大小控制 应用数据被分割成 TCP 认为最适合发送的数据块。 序列号 TCP 给发送的每一个包...
  • TCP/IP协议讲解

    千次阅读 2022-05-07 08:26:58
    TCP/IP与OSI参考模型 应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输...2、HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版
  • 详解传输协议TCP,UDP)

    千次阅读 2021-08-18 19:26:46
    2、TCP协议:(传输控制协议) 3、三次握手原理: 4、为什么要三次握手? 5、四次挥手原理: 6、三次握手握三次,为什么断开要断四次? 7、TCP半关闭状态是什么情况? 8、常用的TCP端口号及其功能: 总结: 前言...
  • 计算机网络 运输层 UDP TCP 面向流 socket 无连接和有连接工作流程
  • 互联网协议TCP 传输控制协议

    千次阅读 2020-05-01 22:39:28
    TCP(Transmission Control Protocol,传输控制协议),是一种面向连接的可靠传输协议,提供可靠(无差错、不丢失、不重复、按顺序)的字节流数据传输服务。在传输效率和可靠性之间选择了后者,所以有开销大、传输...
  • TCP协议TCP 协议和 UDP 协议的优势和劣势 文章目录【TCP协议TCP 协议和 UDP 协议的优势和劣势一、UDP 协议UDP 的封包格式校验和(Checksum)机制二、UDP 与 TCP的区别1.目的差异2.可靠性差异3.连接 vs 无连接4...
  • 本附件包与博文配套,详见博文:http://blog.csdn.net/hujingshuang/article/details/43191461
  • TCP协议和UDP协议

    万次阅读 多人点赞 2022-02-18 13:30:13
    1.传输控制协议TCP 1.1TCP的主要特点: 1.1.1面向连接的运输层协议 socket部分讲述 tcp连接的建立 tcp连接的释放 tcp的有限状态机 1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一)...
  • TCP/IP协议模型详解六数据传输过程

    千次阅读 2021-12-21 15:02:34
    ”发送之前,首先判断这个程序是应用TCP还是UDP方式传输,判断是使用TCP协议传输,先与目标端口方进行联系,你在不在?我在的,三次握手,得到同意,并告诉自己能最大接收的MTU、确认号,将确认号封装到TCP数据包里...
  • UDP和TCP协议及代码实例

    万次阅读 2018-07-08 18:16:19
    UDP:(User Datagram Protocol 用户数据报协议)是OSI(Open System Interconnection开放式系统互联) 参考模型中一种无连接的传输协议,提供面向事务的简单不可靠信息传送服务。 UDP适用于一次只传送少量数据、...
  • TCP协议是如何保证传输可靠性的

    千次阅读 2021-10-07 19:20:01
    确保传输可靠性的方式 校验和 序列号/确认应答 超时重传 连接管理 流量控制(滑动窗口控制) 拥塞控制 校验和: TCP校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据...
  • TCP协议详解

    千次阅读 2021-12-26 10:54:32
    传输控制协议TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。 TCP报文段 TCP建立连接的过程(三次握手) TCP拆除连接的过程(四次握手) ...
  • TCP原理之:TCP数据传输

    千次阅读 2021-06-16 16:13:15
    TCP(Transmission Control Protocol)全称为传输控制协议, 它工作在网络七层模型中的第四层-传输层, 是一种面向连接的可靠的数据传递协议。 对于IP和UDP协议, 它们会在接收到数据后根据数据的校验值来对数据的有效...
  • TCP、UDP传输层两大协议介绍

    千次阅读 2021-08-18 22:05:31
    TCPTCP/IP协议族中传输协议的一员 传输层总共是有TCP和UDP两大协议 每个协议都有对应的协议号,TCP协议号是6,UDP的协议号是17。 TCP传输控制协议 UDP是用户数据报协议 2、TCP协议 1.TCP是面向连接的...
  • UDP传输 TCP传输

    千次阅读 2022-03-27 10:57:20
    (2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置于系统协议栈中,极难对其进行改进。 采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 479,557
精华内容 191,822
关键字:

tcp传输协议