首页 > 其他分享 >传输层TCP|UDP

传输层TCP|UDP

时间:2023-12-09 17:01:21浏览次数:36  
标签:UDP 报文 TCP 发送 拥塞 传输层 连接

TCP/UDP简介

TCP和UDP是两种常见的互联网传输协议,它们都是在IP网络上运行的传输层协议。

TCP(Transmission Control Protocol:传输控制协议)是一种面向连接的可靠协议。

它提供数据传输的有序性、完整性、流量控制和拥塞控制。

TCP的通信过程包括三次握手建立连接和四次挥手断开连接。

使用TCP时,数据按顺序发送和接收,确保数据可靠地到达目的地。

TCP适用于需要准确可靠传输的应用,如网页浏览、文件传输、电子邮件和远程登录。

UDP(User Datagram Protocol:用户数据报协议)则是一种无连接的不可靠协议。

它提供了一种简单的、不可靠的传输方式。

UDP不保证数据传输的有序性、完整性、流量控制和拥塞控制。

使用UDP时,数据以数据包的形式发送,接收方不需建立连接,直接接收。

UDP适用于实时应用,如音频、视频流传输、在线游戏和广播。

传输层TCP|UDP_TCP

TCP/UDP的特点

TCP/UDP有什么相同点?

都是在IP网络上运行的传输层协议;

都使用端口号来标识不同的应用程序;

都可以用于客户端和服务器之间的通信。

TCP/UDP有什么不同点?

TCP是面向连接的,UDP是无连接的;

TCP提供可靠的数据传输服务,UDP不提供可靠性保证;

TCP具有流量控制和拥塞控制功能,UDP没有;

TCP需要进行三次握手建立连接,UDP不需要。

TCP的错误检测和纠正:

TCP使用校验和来检测传输过程中是否发生了数据损坏或错误。发送方在发送数据时计算校验和,并将其包括在TCP头部中。接收方在接收到数据后重新计算校验和,并将其与接收到的校验和进行比较。如果两者不匹配,则表明数据在传输过程中发生了错误,接收方会请求发送方重新发送丢失或损坏的数据。

TCP主要通过以下几个字段进行错误检测和纠正

(1)校验和——每个TCP报文段都包括检验和字段,校验和用来检查报文段是否出现传输错误,如果报文段出现传输错误,TCP检查出错就丢弃该报文段。

(2)确认——接收端检查报文是否出错,发现出错时就丢弃,不发确认;而发送端TCP就通过检查接收端的确认,判断发送的报文段是否已经正确到达目的地。

(3)超时——发送端根据发出的报文段在超时规定的时间内是否收到确认,从而来判断该报文段是否丢失或传输出错。TCP使用了4种计时器:重传计时器、坚持计时器、保持计时器和时间等待计时器来保证了传输的可靠性。

TCP的流量控制:

流量控制是一种机制,确保数据发送方和接收方之间的数据传输速度保持匹配。TCP使用滑动窗口机制实现流量控制。发送方在发送数据时,接收方会向发送方通告其可接收的数据量,即窗口大小。发送方根据接收方通告的窗口大小控制发送数据的速度,以确保不会发送过多的数据导致接收方无法及时处理。如果接收方无法及时处理数据,它可以调整窗口大小以限制发送方的数据流量。

TCP的拥塞控制:

拥塞控制是一种机制,用于避免过多的数据注入到网络中导致网络拥塞。TCP使用一些算法来识别和应对网络拥塞。其中最常用的算法是拥塞避免算法和拥塞控制算法。拥塞避免算法通过动态调整拥塞窗口大小来控制发送方的数据发送速率。拥塞控制算法使用拥塞检测和拥塞恢复来减少拥塞出现时的数据流量。

TCP的三次握手:

传输层TCP|UDP_UDP_02

(图片取自互联网,侵权请联系删除)

在建立TCP连接时,使用三次握手(three-way handshake)来确保双方都同意建立连接。下面是三次握手的步骤:

1. 客户端向服务器发送一个连接请求报文(SYN)并指定初始序列号。

2. 服务器收到连接请求后,回复一个确认报文(ACK)作为响应,同时也发送一个连接请求报文(SYN)。

3. 客户端收到服务器的回复后,再向服务器发送确认报文(ACK)作为响应。此时,连接建立,双方可以开始进行数据传输。

TCP的四次挥手:

传输层TCP|UDP_UDP_03

(图片取自互联网,侵权请联系删除)

当TCP连接不再需要时,使用四次挥手(four-way handshake)来正常关闭连接。下面是四次挥手的步骤:

1. 客户端向服务器发送一个连接释放报文(FIN),表示客户端不再发送数据。

2. 服务器收到连接释放报文后,发送一个确认报文(ACK)作为响应,表示已收到客户端的连接释放请求。

3. 服务器继续传输可能仍在传送的数据,然后发送连接释放报文(FIN)给客户端。

4. 客户端收到服务器的连接释放报文后,发送一个确认报文(ACK)作为响应,表示已收到服务器的连接释放请求。此时,双方的连接断开。

总结

TCP的优势

 可靠性:TCP提供可靠的数据传输,确保数据的完整性和顺序性。

错误检测和纠正:TCP具备检测和纠正传输中发生的错误的能力。

流量控制:TCP通过流量控制避免了接收方因来不及处理大量数据而导致的问题。

TCP的劣势

较慢:因为TCP提供可靠传输,它需要进行复杂的握手和确认过程,这导致了相对较高的延迟。

处理负载:TCP的控制机制增加了系统的负载,对处理能力有一定要求。

UDP的优势

较快:UDP不需要进行连接建立和握手,以及其他传输保障机制,因此传输速度相对较快。

简单轻量:UDP的头部开销较小,资源占用较少。

UDP的劣势

不可靠:UDP没有提供可靠性保证,传输过程中可能丢包或乱序。

不具备流控制和拥塞控制:UDP不包含流控制和拥塞控制机制,可能导致数据的丢失和网络拥塞。

标签:UDP,报文,TCP,发送,拥塞,传输层,连接
From: https://blog.51cto.com/jowin/8750673

相关文章

  • 既然UDP更快,为啥这么多年一直用TCP ?
    你们好啊,我是老杨。有点基本技术常识的粉丝朋友都知道,UDP肯定是比TCP快的。很多人对TCP和UDP的了解很浅,直到自己真的经历了一些通信项目之后,你才会愿意根据实际情况埋头苦学,企图“速成”一下。要是问你为什么快,我相信大多数人,也是能从各个角度,说上几句有的没的。但是,既然如此,为什么......
  • Redis报错:WARNING: The TCP backlog setting of 511 cannot be enforced because /pro
    报错内容:1:C08Dec202305:47:33.348#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo1:C08Dec202305:47:33.348#Redisversion=7.0.5,bits=64,commit=00000000,modified=0,pid=1,juststarted1:C08Dec202305:47:33.348#Configurationloaded1:M08De......
  • 构建用于复杂数据处理的高效UDP服务器和客户端
    title:构建用于复杂数据处理的高效UDP服务器和客户端banner_img:https://cdn.studyinglover.com/pic/2023/12/334c0c129076533308cbc7e03f8c55be.pngdate:2023-12-723:03:00tags:-踩坑构建用于复杂数据处理的高效UDP服务器和客户端引言在当今快速发展的网络通信世界......
  • 网络通信、UDP通信、TCP通信、BS架构模拟、URL了解
    网络编程可以让程序与网络上的其他设备中的程序进行数据交互所以,我们学习网络编程的主要目的就是为了实现网络通信网络通信网络通信基本模式常见的通信模式有如下2种形式:Client-Server(Cs)、Browser/Server(Bs)Client-Server(Cs)主要是客户端与服务端之间的联系(就是相应的App和后......
  • .Net ——TCP/IP
    TCP/IP是什么,可以用来干什么:TCP/IP是一种网络通信协议,它是互联网基础设施的核心,用于在计算机之间进行可靠的数据传输。在.NET中,也提供了丰富的类库和工具来支持TCP/IP协议的应用开发。使用TCP/IP协议,可以完成以下一些常见的任务:网络通信:通过TCP/IP协议,客户端和服务器......
  • HTTP/3 抛弃 TCP 后
    HTTP/3抛弃TCP后,基于UDP实现的可靠传输QUIC协议,带来了以下好处:降低连接耗时:在客户端有缓存的情况下实现0-RTT建立连接更灵活的拥塞控制:在用户态可以为每个请求配置不同的拥塞控制策略无队头阻塞的多路复用:每个请求流独立拥有滑动窗口,互不影响连接迁移:网络切换不会中断数据传......
  • TCP协议的流量控制与拥塞控制
    TCP协议的秘密武器:流量控制与拥塞控制合集-计算机网络(19) 1.网络协议的重要性与应用:理解进程间通信和网络分层结构(上)09-172.网络协议的重要性与应用:理解进程间通信和网络分层结构(下)09-183.深入理解HTTP的基础知识:请求-响应过程解析09-194.深入解析HTTP请求:了解请求特征......
  • 【小沐学前端】Node.js实现UDP通信
    1、node简介Node.js是一个开源的、跨平台的JavaScript运行时环境。Node.js是一个开源和跨平台的JavaScript运行时环境。它是几乎任何类型项目的流行工具!Node.js在浏览器之外运行V8JavaScript引擎(GoogleChrome的内核)。这使得Node.js非常高效。Node.js应用在......
  • TCP粘包/拆包,如何解决
    TCP粘包(TCPPacketStickiness):TCP粘包指的是发送方发送的多个小数据包被接收方一次性接收,形成一个大的数据包。这种情况可能会导致接收方难以正确解析消息的边界,因为多个消息被粘合在一起。TCP是面向流的协议,它不保留消息的边界信息,而是将数据流划分为小的数据块进行传输。TCP拆......
  • 视频监控平台LiteCVR启动时打印starting server:listen tcp的原因排查
    近年来,随着人工智能与行业领域深度融合理念的持续推动,安防行业作为AI技术落地应用较为领先的领域,率先受益于AI技术的成熟发展和应用。传统视频监控行业也面临着全新的挑战和机遇。将LiteCVR部署到其本地服务器上,但无法正常启动,出现了报错,请求协助。今天我们以此为案例,来介绍下排查......