TCP协议和UDP协议

TCP通信原理

  • TCP(Transmission Control Protocol,传输控制协议)是一种传输层协议,它主要负责点对点的数据传输
  • TCP 主要特点是面向连接的,也就是说,在数据传输之前,它需要先建立一个连接。连接建立之后,两端计算机就可以相互发送数据。
  • 在建立连接时,TCP 会按照三次握手的方式建立连接,这是为了确保两端计算机都准备好接收数据。连接建立之后,两端计算机就可以相互发送数据。
  • TCP 的可靠性是通过滑动窗口协议来实现的。在传输数据之前,发送端会设定一个窗口大小,表示最多可以发送多少数据。接收端在收到数据之后,会发送一个确认信息告诉发送端已经收到了多少数据。发送端收到确认信息后,就可以继续发送数据了。如果发送端在规定时间内没有收到确认信息,就会重新发送数据。这样就可以保证数据的可靠传输。

TCP 三次握手建立连接

  1. 客户端发送 SYN 包给服务端,表示客户端想要建立连接。
  2. 服务端收到 SYN 包之后,会回复 SYN+ACK 包,表示服务端已经收到客户端的请求,并准备好接受数据。
  3. 客户端收到 SYN+ACK 包之后,会回复 ACK 包,表示客户端已经收到服务端的回应,并准备好发送数据。

TCP 四次挥手断开连接

四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。

挥手请求可以是Client端,也可以是Server端发起的

UDP通信原理

  • UDP(User Datagram Protocol,用户数据报协议)是一种面向无连接的网络协议
  • UDP 在发送数据方面更快,但是也带来了更多的不确定性,因为数据包可能会丢失、重复或乱序。
  • UDP 使用数据报形式发送数据,每个数据报的大小最大可达 64 KB。由于没有连接的建立和维护,UDP 可以将小型数据包发送到任何地方。
  • UDP 使用 IP 地址来标识源主机和目的主机,并使用端口号来标识应用程序。这使得一台主机可以同时运行多个应用程序,并且各个应用程序之间可以通过端口号区分。

总结一下大概的区别

1. 连接

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

2. 服务对象

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

3. 可靠性

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

4. 拥塞控制、流量控制

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

5、面向方向

  • TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;
  • UDP是面向报文的

6、逻辑信道

  • TCP的逻辑通信信道是全双工的可靠信道
  • UDP则是不可靠信道

参考:一文彻底搞懂 TCP三次握手、四次挥手过程及原理 - 知乎 (zhihu.com)

          一文搞懂TCP与UDP的区别 - 知乎 (zhihu.com)

          TCP和Udp的区别是什么? - 知乎 (zhihu.com)

         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/120391.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ant-design-pro的可编辑表格editprotable的遇到的一些小问题

需求:1、使用可编辑表格实现对某一行表格的数据进行编辑,对输入内容控制必须低于同行某一数据 2、解决搜索数据和列名展示不同,和不可编辑的列不展示在搜索框 实现效果 解决搜索和readonly之间的问题 因为本次需求只要求修改一个数据&…

Linux或Centos查看CPU和内存占用情况_top只能查看对应的命令_如何查看具体进程---linux工作笔记062

一般我们都是用top去查看,但是top查看的结果,不能看出,具体是哪个程序占用的,这就很苦恼.. 其实如果有时间的话,再去专门看一下网络安全和linux脚本以及命令方面的,比较系统的看一下比较好.现在积累的都是工作中用到的,比较零散的知识. 如果用top,比如说这里的java,就只能知道…

MATLAB m文件格式化

记录一个网上查到的目前感觉挺好用的格式化方法。 原链接: https://cloud.tencent.com/developer/article/2058259 压缩包: 链接:https://pan.baidu.com/s/1ZpQ9qGLY7sjcvxzjMPAitw?pwd6666 提取码:6666 下载压缩包&#xf…

AWS SAA知识点整理(作成中)

共通 一些信息已经更新了,但参考题的答案还是旧的。 比如: S3的最大读写性能已经提高到 3,500 PUT/COPY/POST/DELETE or 5,500 GET/HEAD requests per second 并且不再要求使用random prefix 题目中有时候会让选择Not violation 不合适的一项&#xff…

【广州华锐互动】奶牛养殖难产助产3D沉浸式教学平台

在传统的奶牛难产助产教学中,主要依赖理论知识和2D图像来进行教学。然而,这种教学方式往往无法全面、真实地展示奶牛难产的各种情况,教学效果也不尽如人意。随着科技的发展,3D互动教学的出现,为奶牛难产助产教学带来了…

myArm 全新七轴桌面型机械臂

引言 在不断演进的科技世界中,我们始终追求创新和卓越,以满足客户的需求并超越他们的期望。今天,我们很高兴地宣布我们的最新产品——myArm 300 Pi,一款七轴的桌面型机械臂。这款产品的独特之处在于其灵活性和可编程性&#xff0c…

在亚马逊云科技Amazon SageMaker上部署构建聊天机器人的开源大语言模型

开源大型语言模型(LLM)已经变得流行起来,研究人员、开发人员和组织都可以使用这些模型来促进创新和实验。这促进了开源社区开展合作,从而为LLM的开发和改进做出贡献。开源LLM提供了模型架构、训练过程和训练数据的透明度&#xff…

Beats:介绍 Filestream fingerprint 模式

作者:Denis Rechkunov 在 Filebeat 8.10.0 和 7.17.12 中,我们引入了一种新的指纹(fingerprint)模式,使用户可以选择使用文件内容的哈希来识别它们,而不是依赖文件系统元数据。 此更改在文件流输入中可用。…

Appium开发

特点 开源免费支持多个平台 IOS(苹果)、安卓App的自动化都支持 支持多种类型的自动化 支持苹果、安卓应用原生界面的自动化支持应用内嵌网络视图的自动化支持手机浏览器(Chrome)中的web网站自动化支持flutter应用的自动化 支持多种编程语言 像selenium一样,可以用多…

基于改进非局部均值的红外图像混合噪声去除方法

传统的去噪算法无法有效去除红外图像中的条纹与随机混合噪声。针对这一问题,提出了一种改进的基于非局部均值(NL-means)的混合噪声去除方法。首先,分析了非局部均值算法处理混合噪声的问题,并用一组实验分析了红外图像块中混合噪声的特性。根据实验结果,用有色高斯模型对混合噪…

用css画一个半圆弧(以小程序为例)

一、html结构 圆弧的html结构是 两个块级元素嵌套。 <View classNamewrap><View className"inner">{/* 图标下的内容 */}</View></View>二、css样式&#xff1a;原理是两个半圆叠在一起&#xff0c;就是一个半圆弧。那么&#xff0c;如何画一…

Java 并发编程面试题——BlockingQueue

目录 1.什么是阻塞队列 (BlockingQueue)&#xff1f;2.BlockingQueue 有哪些核心方法&#xff1f;3.BlockingQueue 有哪些常用的实现类&#xff1f;3.1.ArrayBlockingQueue3.2.DelayQueue3.3.LinkedBlockingQueue3.4.PriorityBlockingQueue3.5.SynchronousQueue 4.✨BlockingQu…