精华内容
下载资源
问答
  • tcp和udp的区别
    2022-03-10 21:32:49

    TCPUDP 区别:

    下面对七个方面进行说明:

    1. 连接

    TCP 是面向连接的传输层协议,传输数据前先要建立连接。 UDP 是不需要连接,即刻传输数据。

    2. 服务对象
    TCP 是一对一的两点服务,即一条连接只有两个端点。

    UDP 支持一对一、一对多、多对多的交互通信

    3. 可靠性

    TCP 是可靠交付数据的,数据可以无差错、不丢失、不􏰁复、按需到达。 UDP 是尽最大努力交付,不保证可靠交付数据。

    4. 拥塞控制、流􏰀控制

    TCP 有拥塞控制和流􏰀控制机制,保证数据传输的安全性。
    UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。

    5. 首部开销

    TCP 首部⻓度较⻓,会有一定的开销,首部在没有使用「选项」字段时是 20 个字节,如果使用了「选项」 字段则会变⻓的。
    UDP 首部只有 8 个字节,并且是固定不变的,开销较小。

    6. 传输方式
    TCP 是流式传输,没有边界,但保证顺序和可靠。

    UDP 是一个包一个包的发送,是有边界的,但可能会丢包和乱序。

    7. 分片不同

    TCP 的数据大小如果大于 MSS 大小,则会在传输层进行分片,目标主机收到后,也同样在传输层组装 TCP 数据包,如果中途丢失了一个分片,只需要传输丢失的这个分片。
    UDP 的数据大小如果大于 MTU 大小,则会在 IP 层进行分片,目标主机收到后,在 IP 层组装完数据,接着再 传给传输层,但是如果中途丢了一个分片,在实现可靠传输的 UDP 时则就需要􏰁传所有的数据包,这样传输 效率非常差,所以通常 UDP 的报文应该小于 MTU。

    更多相关内容
  • TCP UDP区别

    2015-04-16 22:11:32
    介绍解释TCP , UDP, 他们之间的区别是什么,是我们更清楚他们之间的区别
  • TCP和UDP区别详解

    千次阅读 2020-09-24 21:21:07
    文章目录OSI和TCP/IP模型 OSI和TCP/IP模型 OSI七层网络模型 TCP/IP四层概念模型 对应网络协议 应用层(Application) 应用层 HTTP、TFTP, FTP, NFS, WAIS、...传输层 TCP, UDP 网络层(Network) 网络层 IP, ICMP, A

    综合许多大佬的总结

    OSI和TCP/IP模型

    OSI七层网络模型

    TCP/IP四层概念模型

    对应网络协议

    应用层(Application)

    应用层

    HTTP、TFTP, FTP, NFS, WAIS、SMTP

    表示层(Presentation)

    Telnet, Rlogin, SNMP, Gopher

    会话层(Session)

    SMTP, DNS

    传输层(Transport)

    传输层

    TCP, UDP

    网络层(Network)

    网络层

    IP, ICMP, ARP, RARP, AKP, UUCP

    数据链路层(Data Link)

    数据链路层

    FDDI, Ethernet, Arpanet, PDN, SLIP, PPP

    物理层(Physical)

    IEEE 802.1A, IEEE 802.2到IEEE 802.11

    TCP和UDP都是传输层协议,都是全双工的。
    传输层负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文

    UDP

    UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

    UDP协议的特点

    1. 无连接

      首先 UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。即:只知道对端的IP和端口号就可以发送,不需要实现建立连接。

    2. 单播,多播,广播

      UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。

    3. 面向数据报

      UDP只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。
      具体来说就是:

      • 在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议,然后就传递给网络层了
      • 在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作

      应用层交给UDP多长的报文, UDP原样发送既不会拆分,也不会合并。如果发送端调用一次sendto, 发送100个字节, 那么接收端也必须调用对应的一次recvfrom, 接收100个 字节,而不能循环调用10次recvfrom, 每次接收10个字节。所以UDP不能够灵活的控制读写数据的次数和数量。

    4. 不可靠

      没有确认机制, 没有重传机制。如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息。

    5. 实时高效

      UDP报文格式
      在这里插入图片描述
      可以看到,UDP报文包括数据报文UDP头部,而UDP头部只包括源端口、目的端口、数据包长度和校验和。因此,UDP头部开销小,只有8个字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的。

    UDP的缓冲区

    UDP存在接收缓冲区,但不存在发送缓冲区。

    • UDP没有发送缓冲区,在调用sendto时会直接将数据交给内核,由内核将数据传给网络层协议进行后续的传输动作。为什么UDP不需要发送缓冲区? 因为UDP不保证可靠性,它没有重传机制,当报文丢失时,UDP不需要重新发送,而TCP不同,他必须具备发送缓冲区,当报文丢失时,TCP必须保证重新发送,用户不会管,所以必须要具备发送缓冲区。
    • UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报文的顺序和发送UDP报的顺序一致,如果缓冲区满了再到达的UDP数据报就会被丢弃。

    UDP 的主要应用场景

    • 需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的。
    • 不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议。
    • 需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候

    基于 UDP 的几个例子:

    • 直播。直播对实时性的要求比较高,宁可丢包,也不要卡顿的,所以很多直播应用都基于 UDP 实现了自己的视频传输协议
    • 实时游戏。游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响
    • 物联网。一方面,物联网领域中断资源少,很可能知识个很小的嵌入式系统,而维护 TCP 协议的代价太大了;另一方面,物联网对实时性的要求也特别高。比如 Google 旗下的 Nest 简历 Thread Group,推出了物联网通信协议 Thread,就是基于 UDP 协议的

    TCP

    TCP协议全称是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。

    TCP协议的特点

    1. 面向连接

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

    2. 单播

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

    3. 面向字节流

      TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。

    4. 可靠传输

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

    5. 拥塞控制

      当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞

    TCP报文格式

    在这里插入图片描述

    • TCP报头中的源端口号目的端口号同IP数据报中的源IP目的IP唯一确定一条TCP连接。TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如:IP,Port…)
    • 报文主要段的意思:
      序号seq:表示发送的数据字节流,确保TCP传输有序,对每个字节编号
      确认序号ack:发送方期待接收的下一序列号,接收成功后的数据字节序列号加 1。只有ACK=1时才有效。
      ACK:确认序号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息
      SYN:连接请求序号标志,用于建立连接,SYN=1表示请求连接
      FIN:结束标志,用于释放连接,为1表示关闭本方数据流

    三次握手

    在这里插入图片描述
    过程:

    第一次:客户端发送初始序号x和syn=1请求标志
    第二次:服务器发送请求标志syn,发送确认标志ACK,发送自己的序号seq=y,发送客户端的确认序号ack=x+1
    第三次:客户端发送ACK确认号,发送自己的序号seq=x+1,发送对方的确认号ack=y+1

    分析:

    第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,seq=x
    第二次:服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。ACK=1,ack=x+1,SYN=1,seq=y
    第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常.seq=x+1,ACK=1,ack=y+1

    可以看出,握手两次达不到让双方都得出自己、对方的接收、发送能力都正常的结论的。

    四次挥手

    在这里插入图片描述
    过程:

    第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
    第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
    第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
    第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

    分析:

    第一次:客户端请求断开FIN,seq=u
    第二次:服务器确认客户端的断开请求ACK,ack=u+1,seq=v
    第三次:服务器请求断开FIN,seq=w,ACK,ack=u+1
    第四次:客户端确认服务器的断开ACK,ack=w+1,seq=u+1

    总结

    1. 为什么三次握手和四次挥手?

      三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里
      四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。

    2. 为什么客户端最后还要等待2MSL?

      客户端需要保证最后一次发送的ACK报文到服务器,如果服务器未收到,可以请求客户端重发,这样客户端还有时间再发,重启2MSL计时。

    累计确认

    首先为了保证顺序性,每个包都有一个 ID。在建立连接的时候会商定起始 ID 是什么,然后按照 ID 一个个发送,为了保证不丢包,需要对发送的包都要进行应答,当然,这个应答不是一个一个来的,而是会应答某个之前的 ID,表示都收到了,这种模式成为累计应答累计确认

    为了记录所有发送的包和接收的包,TCP 需要发送端和接收端分别来缓存这些记录,按照包的 ID 一个个排列。

    发送端缓存

    结构如下:
    在这里插入图片描述

    • 发送并且确认的
    • 发送尚未确认的
    • 没有发送等待发送的
    • 没有发送并且暂时不会发送的

    第三部分和第四部分就属于流量控制的内容
    在 TCP 里,接收端会给发送端报一个窗口大小,叫 Advertised window。这个窗口应该等于上面的第二部分加上第三部分,超过这个窗口,接收端做不过来,就不能发送了

    接收端缓存

    结构如下:
    在这里插入图片描述

    • 接收并且确认过的
    • 还没接收,但是马上就能接收的
    • 还没接收,但也无法接收的

    顺序问题和丢包问题

    结合上面的图看,在发送端,1、2、3 已发送并确认;4、5、6、7、8、9 都是发送了还没确认;10、11、12 是还没发出的;13、14、15 是接收方没有空间,不准备发的。

    在接收端来看,1、2、3、4、5 是已经完成 ACK 但是还没读取的;6、7 是等待接收的;8、9 是已经接收还没有 ACK 的。

    发送端和接收端当前的状态如下:

    1、2、3 没有问题,双方达成了一致
    4、5 接收方说 ACK 了,但是发送方还没收到
    6、7、8、9 肯定都发了,但是 8、9 已经到了,6、7 没到,出现了乱序,缓存着但是没办法 ACK。

    根据这个例子可以知道顺序问题和丢包问题都有可能存在,所以我们先来看确认与重传机制

    假设 4 的确认收到了,5 的 ACK 丢了,6、7 的数据包丢了,该怎么办?

    一种方法是超时重试,即对每一个发送了但是没有 ACK 的包设定一个定时器,超过了一定的事件就重新尝试。这个时间必须大于往返时间,但也不宜过长,否则超时时间变长,访问就变慢了。

    如果过一段时间,5、6、7 都超时了就会重新发送。接收方发现 5 原来接收过,于是丢弃 5;6 收到了,发送 ACK,要求下一个是 7,7 不幸又丢了。当 7 再次超时的时候,TCP 的策略是超时间隔加倍。每当遇到一次超时重传的时候,都会讲下一次超时时间间隔设为先前值的两倍。

    超时重传的机制是超时周期可能相对较长,是否有更快的方式呢?

    有一个快速重传的机制,即当接收方接收到一个序号大于期望的报文段时,就检测到了数据流之间的间隔,于是发送三个冗余的 ACK,客户端接收到之后,知道数据报丢失,于是重传丢失的报文段。

    例如,接收方发现 6、8、9 都接收了,但是 7 没来,所以肯定丢了,于是发送三个 6 的 ACK,要求下一个是 7。客户端接收到 3 个,就会发现 7 的确又丢了,不等超时,马上重发。

    流量控制

    双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来,这时候接收方只能把处理不过来的数据存在缓存区里(失序的数据包也会被存放在缓存区里)

    如果缓存区满了发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,大量的丢包会极大着浪费网络资源,因此,我们需要控制发送方的发送速率,让接收方与发送方处于一种动态平衡才好。对发送方发送速率的控制,我们称之为流量控制。

    在这里插入图片描述

    如何控制

    接收方每次收到数据包,可以在发送确定报文的时候,同时告诉发送方自己的缓存区还剩余多少是空闲的,我们也把缓存区的剩余大小称之为接收窗口大小,用变量win来表示接收窗口的大小。

    发送方收到之后,便会调整自己的发送速率,也就是调整自己发送窗口的大小当发送方收到接收窗口的大小为0时,发送方就会停止发送数据,防止出现大量丢包情况的发生。

    在这里插入图片描述
    发送方何时再继续发送数据

    当发送方收到接受窗口 win = 0 时,这时发送方停止发送报文,并且同时开启一个定时器,每隔一段时间就发个测试报文去询问接收方,打听是否可以继续发送数据了,如果可以,接收方就告诉他此时接受窗口的大小;如果接受窗口大小还是为0,则发送方再次刷新启动定时器。

    在这里插入图片描述
    说明

    由于TCP/IP支持全双工传输,因此通信的双方都拥有两个滑动窗口,一个用于接受数据,称之为接收窗口;一个用于发送数据,称之为拥塞窗口(即发送窗口)。指出接收窗口大小的通知我们称之为窗口通告

    接收窗口的大小是根据某种算法动态调整的,

    • 太小的话,会严重浪费链路利用率,增加丢包率。
    • 当接收窗口达到某个值的时候,再增大的话也不怎么会减少丢包率的了,而且还会更加消耗内存。

    所以接收窗口的大小必须根据网络环境以及发送发的的拥塞窗口来动态调整。

    拥塞控制

    TCP 拥塞控制主要来避免两种现象,包丢失和超时重传,一旦出现了这些现象说明发送的太快了,要慢一点。

    具体的方法就是发送端慢启动,比如倒水,刚开始倒的很慢,渐渐变快。然后设置一个阈值,当超过这个值的时候就要慢下来。

    慢下来还是在增长,这时候就可能水满则溢,出现拥塞,需要降低倒水的速度,等水慢慢渗下去。

    拥塞的一种表现是丢包,需要超时重传,这个时候,采用快速重传算法将当前速度变为一半。所以速度还是在比较高的值,也没有一夜回到解放前。

    总结

    UDPTCP
    是否连接无连接面向连接
    是否可靠不可靠传输,不使用流量控制和拥塞控制可靠传输,使用流量控制和拥塞控制
    连接对象个数支持一对一,一对多,多对一和多对多交互通信只能是一对一通信
    传输方式面向报文面向字节流
    首部开销首部开销小,仅8字节首部最小20字节,最大60字节
    适用场景适用于实时应用(IP电话、视频会议、直播等)适用于要求可靠传输的应用,例如文件传输

    参考链接:一文读懂OSI七层模型与TCP/IP四层的区别/联系
    参考链接:一文搞懂TCP与UDP的区别
    参考链接:TCP 和 UDP 的区别
    参考链接:TCP三次握手和四次挥手通俗理解
    参考链接:通俗易懂讲解TCP流量控制机制,了解一下

    展开全文
  • TCP和UDP区别和优缺点
  • TCP/UDP测试工具,建立服务器客户端,便可实现模拟通信
  • TCP UDP 区别及使用场景(详细)

    千次阅读 2022-04-18 10:19:40
    TCP UDP 区别: 1. 连接 TCP 是面向连接的传输层协议,传输数据前先要建立连接。 UDP 是不需要连接,即刻传输数据。 2. 服务对象 TCP 是一对一的两点服务,即一条连接只有两个端点。 UDP 支持一对一、一对多...

    TCP 和 UDP 区别:

    1. 连接

    • TCP 是面向连接的传输层协议,传输数据前先要建立连接。
    • UDP 是不需要连接,即刻传输数据。

    2. 服务对象

    • TCP 是一对一的两点服务,即一条连接只有两个端点。
    • UDP 支持一对一、一对多、多对多的交互通信

    3. 可靠性

    • TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。
    • UDP 是尽最大努力交付,不保证可靠交付数据。

    4. 拥塞控制、流量控制

    • TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。
    • UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。

    5. 首部开销

    • TCP 首部长度较长,会有一定的开销,首部在没有使用「选项」字段时是 20 个字节,如果使用了「选项」字段则会变长的。
    • UDP 首部只有 8 个字节,并且是固定不变的,开销较小。

    6. 传输方式

    • TCP 是流式传输,没有边界,但保证顺序和可靠。
    • UDP 是一个包一个包的发送,是有边界的,但可能会丢包和乱序。

    7. 分片不同

    • TCP 的数据大小如果大于 MSS 大小,则会在传输层进行分片,目标主机收到后,也同样在传输层组装 TCP 数据包,如果中途丢失了一个分片,只需要传输丢失的这个分片。
    • UDP 的数据大小如果大于 MTU 大小,则会在 IP 层进行分片,目标主机收到后,在 IP 层组装完数据,接着再传给传输层。

     

    TCP 和 UDP 应用场景:

    由于 TCP 是面向连接,能保证数据的可靠性交付,因此经常用于:

    • FTP 文件传输;
    • HTTP / HTTPS;

    由于 UDP 面向无连接,它可以随时发送数据,再加上UDP本身的处理既简单又高效,因此经常用于:

    • 包总量较少的通信,如 DNS 、SNMP 等;
    • 视频、音频等多媒体通信;
    • 广播通信;
    展开全文
  • 你知道TCP和UDP有什么区别吗?可能大家平时总是听说过TCP和UDP,但是一直不知道它们是怎么回事。今天就给大家介绍一下。我们常用的网络通讯、软件聊天、以及大家平时所看的视屏都是通过这两种协议来进行数据传输的,...

    目录

    1 前言

    2 TCP

    2.1 TCP如何保证可靠传输

    3 UDP

    1 前言

            你知道什么是TCP和UDP吗?你知道TCP和UDP有什么区别吗?可能大家平时总是听说过TCP和UDP,但是一直不知道它们是怎么回事。今天就给大家介绍一下。我们常用的网络通讯、软件聊天、以及大家平时所看的视屏都是通过这两种协议来进行数据传输的,那它们又是如何工作呢,又有什么区别呢。

    注:本篇文章也是在B占看别的博主视频总结写的

    2 TCP

    TCP和UDP都是在传输层,在程序之间传输数据,TCP是基于连接的,UDP是基于非连接的。

    如果将进程与进程之间的通信看做是人与人之间的通信,那么假使人与人之间的通信方式有两种写信和打电话,那么写信大家都知道我们信件写完寄出去之后,我们无法知道对方是否收到,也无法知道对方收到的内容是否完整,知道对方信件收到的顺序是否正确,而打电话就不一样了,当电话接通之后,我们肯定要确认对方有没有接通然后互相通话,最后挂断的时候也会通知对方。根据上述例子就可看出写信的方式就和UDP的传输方式很像,而打电话的方式就和TCP的方式很像。那么TCP是如何保证上述过程呢?

    2.1 TCP如何保证可靠传输

    TCP保证上述过程有3个步骤:三次握手传输确认四次挥手

    1)三次握手

    三次握手是建立连接的过程,当客户端向服务端发起连接时,会先发一包连接请求数据(SHN包)询问能否与你建立连接 ,如果对端同意连接则回复一包SYN+ACK包,客户端收到之后,回复一包(ACK包),连接建立,因为这个过程中,互相发送了三包数据,所以称为三次握手。

    问题1:为什么是3次握手而不是2次握手。

    为了防止已经失效的请求报完。突然又传到服务器引起错误。

    如果采用了两次连接,客户端向服务端发送了一个SYN包来请求建立连接,因为一些原因并没有到达服务器在中间某个网络节点产生了滞留,为了建立连接客户端重新发送SYN包,这次数据包正常送达,服务端回复SYN+ACK后建立了连接,但是第一包数据阻塞的网络节点突然恢复,又达到服务端。此时服务端认为是客户端重新发起了一个新的连接,从而在两次握手之后进入等待数据状态。服务端认为是两个连接,客户端认为是一个连接,造成了状态不一致,如果在三次握手情况下,服务端在收不到ACK情况下,连接自然不会建立成功。

    所以3次握手本质上说就是解决网络信道不可靠的问题,为了能够在不可靠的信道上建立起可靠的连接。

    问题2:如何处理丢包问题和乱序问题

            TCP协议为每一个连接建立了一个发送缓冲区,从建立连接的第一个字节号为0,后面每个字节的序列好就会增加1,发送数据时,从发送缓冲区取一部分数据组成发送报文,在其tcp头中会附带序列号和长度,接收端在收到数据后需要回复确认报文,确认报文中的ACK等于接收序列号加长度,也就是下一包数据需要发送的起始序列号,这样一问一答的发送方式,能够使发送端确认发送的数据,已经被对方收到,发送端也可以一次性发送多包数据,接收端只需要回复一次ACK就行了这样发送端可以将待发送的数据分割成一系列的数据发送到对端,对端根据序列号和长度在接收后重构出完整的数据。

    如果丢失了某些数据,可以要求发送端重传,比如丢失了100~199这100个字节接收端向发送端发送ACK等于100的报文,发送端发送后重传这包数据,接收端进行补齐,以上过程不区分客户端和服务端,TCP连接是全双工的,对于两端连接均采用上述机制

    2)四次挥手

     处于连接状态下客户端和服务端,都可以发起关闭连接请求,此时需要4次挥手来进行连接关闭,假使客户端主动发起连接关闭请求它需要将服务端发送一包FIN包,表示要关闭连接,自己进入终止等待1状态(第一次挥手),服务端收到FIN包,发送一个ACK包,表示自己进入了关闭等待状态,客户端进入终止等待2状态(第二次挥手),服务端此时还可以发送未发送的数据,而客户端还可以接收数据,待服务端发送完数据之后,发送完一包FIN包进入最后确认状态(第3次状态),客户端收到之后回复ACK包,进入超时等待状态,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包,立即关闭连接(第4次挥手

    问题3:为什么客户端需要等待超时时间

    为了保证对方已经收到ACK,因为假设客户端发送最后一包ACK后就释放了连接,一旦ACK包在网路中丢失,服务端将一直停留在最后确认状态,如果客户端发送发送最后一包ACK后等待一段时间,这时服务端因为没有收到ACK包,会重发FIN包,客户端会响应这个FIN包,重发ACK包并刷新超时时间,这个机制和3次握手一样保证不可靠的信道上建立起可靠的连接。

    3 UDP

    udp协议是基于非连接的,发送数据就是简单将数据包封装一下,然后从网卡发出去就可以了,数据包之间并没有状态上的联系所以udp的性能损耗非常小,对于CPU,内存资源的占用也远小于tcp,但是对于网络传输过程中产生的丢包,udp协议并不能保证,所以udp在传输稳定性上要弱于tcp。

    想要了解更多java小知识,可关注公众号:爪哇开发

     

    展开全文
  • TCPUDP区别

    万次阅读 多人点赞 2022-03-12 20:23:46
    TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP UDP。 二、TCP/IP网络模型 计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信...
  • Socket TCP和UDP区别

    2021-10-16 21:39:51
    一、UDP:(用户数据报协议) 1》将数据及源目的封装在数据包中,不需要建立连接 2》每个数据包得大小限制在64KB之内 3》因为无需连接,因此是不可靠协议 4》不需要建立连接,速度快 5》需要的系统资源较少,结构较...
  • 面试官:TCP和UDP两者的区别是什么?

    万次阅读 多人点赞 2021-11-01 11:50:07
    TCP和UDP区别 TCP和UDP都位于计算机网络模型中的运输层,它们负责传输应用层产生的数据。在面试中也经常会问TCP和UDP区别,下面我们将从几个方面来聊一聊TCP和UDP分别的特征他们的区别。 1、概念 UDP和TCP ...
  • TCP和UDP区别

    万次阅读 多人点赞 2021-03-06 15:26:48
    一、TCP和UDP都属于TCP/IP协议族 二、UDP和TCP的不同 2.1 TCP是面向连接的,UDP是面向无连接的 2.2 TCP是可靠的,UDP是不可靠的 2.3 TCP是面向字节流的,UDP是面向报文的 2.4 TCP只有一对一的传输方式,而UDP...
  • TCP UDP区别

    万次阅读 多人点赞 2018-08-04 21:57:42
    前言 ...前端的面试中经常问的 TCP UDP区别,网上也有好多内容,比如 TCP UDP区别 TCP 是面向连接的,UDP 是面向无连接的 UDP程序结构较简单 TCP 是面向字节流的,UDP 是基于...
  • 一、TCP和UDP区别 TCP是面向连接,传输可靠,以字节流的形式传输,传输效率慢,所需资源多,应用在要求通信数据可靠的场合,首部字节20-60. UDP面向无连接,传输不可靠,以数据报文段的形式传输,传输效率快,所需...
  • TCP和UDP区别以及报文头

    万次阅读 2019-05-05 18:21:21
    UDP(用户数据报协议) UDP特点 UDP只在IP数据报服务的基础上增加了少量的功能:复用与分用、对整个...所谓『面向报文』就是指:UDP数据传输的单位是报文,且不会对数据作任何 拆分 拼接 操作。 在发送端,应用程...
  • 面试必问:TCP和UDP区别(附面试题)

    千次阅读 多人点赞 2021-07-12 21:35:21
    面试必问:TCP和UDP的区别(附面试题)一、 什么是TCP/IPUDP二、TCPUDP区别三、TCP和UDP的应用场景四、面试题4.1TCP的三次握手4.2TCP的四次挥手4.3TCP和UDP的区别4.4TCP 三次握手的具体细节4.5建立连接可以两次...
  • tcp和udp使用总结

    2021-06-10 03:54:47
    TCPUdp区别tcpTCP 是面向连接的,并且是一种可靠的协议,在基于 TCP 进行通信时,通信双方需要先建立一个 TCP 连接,建立连接需要经过三次握手,握手成功才可以进行通信1、基于连接的,可靠性高2、有连接过程...
  • TCP和UDP区别和优缺点

    千次阅读 2018-09-24 21:55:34
    TCPUDP区别总结: 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;...
  • TCP和UDP区别和联系

    千次阅读 2020-12-27 21:05:44
    TCP(Transmission Control Protocol,传输控制协议) 是基于连接的协议,也就是说,在正式收发数据前,必须对方建立可靠的连接。 一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里...
  • TCP和UDP详解

    千次阅读 2022-05-11 11:22:49
    概述 计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机与主机的通信。...运输层有两个主要的协议:TCP和UDP TCP的全称是Transmission
  • TCP和UDP的特点及区别TCP和UDP的概念及特点 1.1 概述 TCP UDP 都是传输层协议,他们都属于TCP/IP协议族。 1.2 UDPUDP概念 UDP的全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无...
  • netty搭建TCPUDP服务

    2020-09-23 17:05:21
    Java异步NIO框架Netty实现高性能高并发,通过netty搭建TCPUDP服务,支持物联网设备上行,下行
  • HTTP与HTTPS的区别 TCP和UDP区别

    千次阅读 2019-07-28 14:13:59
    超文本传输协议HTTP协议被用于在Web浏览器网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器网站服务器之间的传输报文,就可以直接读懂其中的信息,...
  • TCP-UDP服务管理 V1.03

    2021-11-23 08:55:33
    一款桌面pc TCP-UDP服务
  • TCP&UDP测试工具
  • TCP和UDP区别与联系

    2022-03-09 14:33:28
    TCPUDP区别总结: 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP...
  • TCP和UDP协议的区别以及原理

    万次阅读 多人点赞 2022-03-31 09:57:30
    TCP和UDP协议的区别以及原理 最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。 一、作用 首先:tcp和udp都是工作再传输层,用于程序之间传输数据的。数一般包含:文件类型,视频类型,jpg图片等。 二...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 453,128
精华内容 181,251
关键字:

tcp和udp的区别

友情链接: SY020_TCP.rar