网络基础——TCP与UDP的区别

2023-10-29

Web基础——COOKIE与SESSION的区别

在这里插入图片描述

如上表格,区别总结如下:
1)、连接性质不同: TCP是面向有连接,而UDP是面向无连接的。
所谓的面向有连接,通俗讲是指传输数据时,是否需要先建立通讯,确认对方在,并且有空接收数据;
面向无连接,是不管三七二十一,不管对方死活,直接传输数据。
TCP协议通过三次握手建立连接,通过四次挥手断开连接,而UDP没有这个机制。
2)、传输的可靠性不同: TCP可靠,UDP不可靠;
对于TCP,可靠性主要通过如下机制来保证:
A、连接管理:
B、校验和:
C、序列号:
D、确认应答:
F、超时重传:发送一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据;
G、流量控制:通过滑动窗口机制实现
H、拥塞控制:通过慢开始( slow-start )、拥塞避免( congestion avoidance )、快重传( fast retransmit )和快恢复( fast recovery )
对于UDP,它没有重传等机制,出现丢包是正常的,是协议本身允许的。
PS:所谓的滑动窗口机制:
大概就是接收方可以告诉发送方,当前发送的速率怎么样?让发送方的发送速率不要太快,要让接收方来得及接收。

3)、传输效率不同: TCP的传输效率较低,UDP传输效率较高
因为TCP协议要保证传输的可靠,它要干的活就多,需要消耗更多的时间与空间。

4)、传输对象不同: TCP传输的是字节流,UDP协议传输的是数据报文段。

5)、协议首部大小不同: TCP首部长度为20-60字节。其中,前20字节是固定的,后面部分是根据需要而增加的选项,最大为40字节;UDP首部固定为8字节。

6)、适用场景不同: TCP协议适用于对可靠性要求比较高的场景;UDP协议适用于对传输速度要求比较高的场景,比如当下流行的网络直播,肯定是基于UDP协议传输的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络基础——TCP与UDP的区别 的相关文章

  • UdpClient 在广播地址上接收

    在 c 中 我使用 UdpClient Receive 函数 public void StartUdpListener Object state try udpServer new UdpClient new IPEndPoint IPAd
  • Java UDP中如何获取实际数据包大小`byte[]`数组

    这是我上一个问题的后续问题 Java UDP发送 接收数据包一一接收 https stackoverflow com questions 21866382 java udp send receive packet one by one 正如
  • 为什么我的 UDP 广播失败?

    我正在尝试发送 UDP 广播 但wireshark 没有报告任何流量 这是执行发送的代码片段 void SendBroadcast String ip 255 255 255 255 int port 30718 String messag
  • 移动提供商无法进行 UDP 打洞

    实际上 我正在编写一个 Android 应用程序 该应用程序接收连接到 PC 的网络摄像头的图片 为了获得更多的 fps 我使用 udp 协议而不是 tcp 这个想法是 电脑将图片发送到手机的 IP 和端口 但电话提供商有不同的公共端口 所
  • 如果客户端在服务器之后启动,则 GStreamer v1.0 UDP 多播流无法正确解码

    我正在尝试使用 GStreamer 进行 UDP 多播屏幕流传输 我的投屏服务器应该在 Windows 上运行 and my 客户端应在 Linux 上运行 如果我在服务器之前启动客户端 一切都很好 问题是当我启动客户端并且服务器已经启动时
  • 为什么UDP服务器上的UDP客户端端口会改变

    我一直在关注一个简 单的 UDP 服务器 客户端教程 发现here http www binarytides com udp socket programming in winsock 我有一个关于客户端连接到服务器的端口的快速问题 仅从代
  • 更改Windows下的默认套接字缓冲区大小[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我无法更改的应用程序正在丢弃一些传入的 UDP 数据包 我怀疑接收缓冲区溢出 是否有注册表设置可以使默认缓冲区大于 8KB From th
  • 接收来自 N 个客户端的响应,以回复通过 UDP 的广播请求

    我正在为特定类型的网络多媒体设备实现一种 IP 查找器 我想找出 LAN 中该类型的所有活动设备及其 IP 地址和其他详细信息 设备有自己的设备发现方式 其工作原理如下 客户端通过 UDP 通过 LAN 发送广播请求 目的端口号是固定的 作
  • 搜索所有网络上的设备

    我想实现一个代码 通过它我可以列出网络上连接的 upnp 兼容媒体渲染器设备 我用谷歌搜索了这个并找到了以下代码扭曲的网站 https twistedmatrix com documents current core howto udp h
  • C#/Unity - 无法从异步方法调用 Unity 方法

    我正在使用Unity3D 这是我的异步方法 private void Receive IAsyncResult ar try IPEndPoint ipEndPoint null byte data udpClient EndReceive
  • C# 广播是UDP消息,监听多个回复

    我正在尝试编写一些执行 UDP 广播的代码 然后侦听来自远程服务器的答复 说明它们存在 它用于识别子网上运行服务器应用程序的计算机 因此基本上会发出 谁在那儿 并听取所有答复 我在 Java 中有这个 工作完美 它将 DatagramPac
  • iOS 14 在进行本地网络广播时给出“操作系统错误:错误的文件描述符,errno = 9”

    做一点Jeopardy 风格问答 https stackoverflow blog 2011 07 01 its ok to ask and answer your own questions here 我正在 Flutter 中开发一个应
  • 如何在QT中发送和接收UDP数据包

    我正在 QT 中编写一个小型应用程序 它通过本地网络发送广播 UDP 数据包 并等待来自网络上的一个或多个设备的 UDP 响应数据包 创建套接字并发送广播数据包 udpSocketSend new QUdpSocket this udpSo
  • TCP 兼容性:为什么 TCP 不兼容数据包广播和组播操作?

    http en wikipedia org wiki User Datagram Protocol http en wikipedia org wiki User Datagram Protocol 与 TCP 不同 UDP 与数据包广播
  • 什么是消息边界?

    什么是 消息边界 在以下情况下 TCP 和 UDP 之间的区别之一是 UDP 保留消息 边界 我理解之间的区别TCP and UDP 但我不确定的定义 消息边界 由于 UDP 在每个单独的数据包中包含目的地和端口信息 因此是否可以为消息提供
  • 您可以bind()和connect() UDP连接的两端吗

    我正在编写一个点对点消息队列系统 它必须能够通过 UDP 运行 我可以任意选择一侧或另一侧作为 服务器 但这似乎不太正确 因为两端都从另一端发送和接收相同类型的数据 是否可以绑定 和连接 两端 以便它们只能彼此发送 接收 这似乎是一种非常对
  • Node.js 可读流_read用法

    我了解如何在 Node 的 new 中使用可写流Streams2库 但我不明白如何使用可读流 举个例子 一个流包装器围绕dgram module var dgram require dgram var thumbs twiddle func
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • SO_BINDTODEVICE Linux 套接字选项的问题

    我有一台带有两个网卡的电脑 一 eth0 用于 LAN 互联网 另一个用于与一个微控制器设备进行 UDP 通信 微控制器有一个 IP 192 168 7 2 和一个 MAC 地址 第二个电脑网络适配器 eth1 有 192 168 7 1
  • 从 Docker 容器发送多播数据包(到多播组)

    我有一个通过 UDP 多播发送消息的应用程序 我一直试图将其放在 docker 下 我在尝试从 Docker 容器发送多播数据包时遇到了很大的阻力 我已经能够通过 net host运行 docker 容器的选项 然而 我想坚持使用桥接配置

随机推荐

  • transition-group过渡动画

    安装lodash库 cnpm install lodash S 安装lodash type cnpm install types lodash D
  • TAP 系列文章4

    基于Backstage的开发者门户 随着云原生的理念和技术逐渐深入人心 很多企业都在思考和实践如何落地 实实在在地达成云原生所承诺的目标 使工程师能够轻松地对系统作出频繁和可预测的重大变更 越来越多的企业认识到 以Kubernetes为代表
  • 微软1G网盘注册方法

    微软提供免费网盘 可作外链 可用迅雷 很好的存储地方 拥有1G的空间 单个文件限制大小为50MB 支持外链 需要传到Public folders里面 支持迅雷下载 经过我本人测试 下载速度还是蛮快的 能达到180k每秒 不过跟其他国内的网盘
  • vue整理笔记(二)

    前言 上次整理到vue的项目创建 这次就来说说vue的单文件组件创建 1 Vue 组件 1 通过命令 vue init webpack 项目名 创建一个项目 例子 vue create vue2 demo 2 打开src的文件夹 打开com
  • linux cat命令详解

    cat命令 1 cat linux txt 查看linux txt内容 2 cat n linux txt 查看linux txt文件的内容 并且由1开始对所有输出行进行编号 包括空白行 3 cat b linux txt 用法和 n 差不
  • 自己写的制作 city的语义分割tfrecord 适用于deeplabv3+

    自己写的制作 city的语义分割tfrecord 适用于deeplabv3 自用 Converts PASCAL dataset to TFRecords file format from future import absolute im
  • Python 使用 Scrapy 发送 post 请求的坑

    From https www jb51 net article 146769 htm 使用 requests 发送 post 请求 先来看看使用requests来发送post请求是多少好用 发送请求 Requests 简便的 API 意味着
  • 如何在win10上搭建本地服务器

    win10上搭建本地服务器 1 在我的电脑上 打开控制面板 2点击程序和功能 启用关闭windows功能 3 选择如下功能 4 点击确定 打开iis管理器 右键电脑 选择管理 5 找到这个 6 选择浏览网站 成功
  • linux 内存分配

    内存管理 一 malloc的底层实现 Malloc函数用于动态分配内存 为了减少内存碎片和系统调用的开销 malloc其采用内存池的方式 先申请大块内存作为堆区 然后将堆区分为多个内存块 以块作为内存管理的基本单位 当用户申请内存时 直接从
  • 信息增益计算和决策树生长过程

    信息增益计算和决策树生长过程 给定训练集S 下面以信息增益作为最佳划分的标准 演示信息增益的计算和决策树生长的过程 根节点 1 以 Outlook 被选做划分属性 总共有14条数据 打球9条 不打球的5条 根据Outlook进行划分 Sun
  • SonrLint常见解决方案

    Sonar是什么 Sonar是一个用于代码质量管理的开源平台 用于管理源代码的质量 通过插件形式 可以支持包括java C C C PL SQL Cobol JavaScrip Groovy等等二十几种编程语言的代码质量管理与检测 Sona
  • token不存在问题

    解决 添加一个token鉴权的请求头 注意 要在在缺少的文件添加该代码 const token localStorage getItem TOKEN
  • vector subscript out of range数组下标越界错误

    在使用vector二维数组时 产生 vector subscript out of range 错误 检查之 后并没有发现数组下标越界问题 百度了一下 发现原来是数组并没有初始化 赋值 没有分配空间 所以不能采用下标的方式进行访问 解决方法
  • antd 2.2.8 版本 Form表单使用useForm带星号校验和带星号不校验的写法以及不带星号不校验的写法

    1 带星号且校验
  • 02 Elasticsearch基本常用命令详解

    IK分词器 分词 把一段中文或者词组划分成一个个关键字 我们在搜索的时候会把自己的信息进行拆分 会把数据库中或者索引库中的数据进行分词 然后进行一个个匹配操作 默认的中文分词是将每一个看成一个词 比如 我爱王军 会被拆分成 我 爱 王 军
  • SSM框架下的学生管理系统--序言

    先开个博 占个坑 也是督促自己尽快提上日程 这是为初学者写的一个系列性的文章 我会不断更新 希望看到文章的人能有所收获 简单介绍下SSM 第一个S指的是Spring 第二个S指的是SpringMVC 最后一个M指的是Mybatis 我们这个
  • c++ 入门基础(一)

    第一个c 程序 include
  • MySQL5.6数据库8小时内无请求自动断开连接

    问题 最近的项目中 发现Mysql数据库在8个小时内 没有请求时 会自动断开连接 这是MySQL服务器的问题 The last packet successfully received from the server was 1 836 1
  • 从零开始做一个贪吃蛇游戏(用纯html + css + js实现,主要技术栈:vue + uniCloud)

    今天给大家分享一个贪吃蛇的小游戏 用纯html css js实现 主要技术栈 vue uniCloud 希望能对还未涉及游戏开发的小伙伴有所启发 由于技术栈很浅 希望大佬勿喷 话不多说 直接开撸 效果图如下 初始化项目 本项目是基于uni
  • 网络基础——TCP与UDP的区别

    Web基础 COOKIE与SESSION的区别 如上表格 区别总结如下 1 连接性质不同 TCP是面向有连接 而UDP是面向无连接的 所谓的面向有连接 通俗讲是指传输数据时 是否需要先建立通讯 确认对方在 并且有空接收数据 面向无连接 是不