【网络面试篇】TCP与UDP类

news2024/11/26 22:43:56

目录

一、综述

1. TCP与UDP的概念

2. 特点

3. 区别

4. 对应的使用场景

二、补充

1. 基础概念

(1)面向连接

(2)可靠的

(3)字节流

2. 相关问题

(1)TCP 和 UDP 可以同时绑定相同的端口吗?

(2)多个 TCP 服务进程可以同时绑定同一个端口吗?

(3)客户端的端口可以重复使用吗?


一、综述

1. TCP与UDP的概念

  • TCP(传输控制协议)是一种面向连接的、可靠的、基于 字节流 的传输层通信协议。
  • UDP(用户数据报协议)为应用程序 提供了一种 无需建立连接 就可以发送封装的 IP 数据包的方法。

2. 特点

  • TCP:面向连接,传输可靠,传输形式为 字节流,传输 效率慢,所需 资源多。
  • UDP:无连接、传输不可靠、传输形式为 数据报文段,传输 效率快,所需 资源少。

3. 区别

  • 是否面向连接:TCP 是 面向连接的 传输,UDP 是 无连接的 传输。
  • 是否是可靠传输:TCP 是可靠的 传输服务,在传递数据之前,会有 三次握手来 建立连接;在数据传递时,有确认、窗口、重传、拥塞控制机制。UDP 是不可靠传输,数据传递 不需要给出 任何确认,且不保证数据 不丢失及 到达顺序。
  • 是否有状态:TCP 传输是 有状态的,它会去 记录自己发送消息的 状态 比如消息 是否发送了、是否被接收了 等等,而 UDP 是无状态的。
  • 传输形式:TCP 是 面向字节流的,UDP 是 面向报文的。
  • 传输效率:由于 TCP 传输的时候 多了连接、确认重传等 机制,所以 TCP 的传输效率 要比 UDP 低。
  • 首部开销:TCP 首部开销(20~60字节)比 UDP 首部开销( 8 字节)要大。
  • 是否提供广播或多播服务:TCP 只支持 点对点 通信,UDP 支持 一对一、一对多、多对一、多对多。

4. 对应的使用场景

  • TCP 常用于要求 通信数据 可靠场景(如 网页浏览、文件传输、邮件传输、远程登录、数据库操作等)。
  • UDP 常用于要求 通信速度高场景(如 域名转换、视频直播、实时游戏等)。

二、补充

1. 基础概念

(1)面向连接

        一定是「一对一」才能连接,不能像 UDP 协议可以 一个主机 同时向多个主机 发送消息,也就是 一对多是 无法做到的;

(2)可靠的

        无论的 网络链路中 出现了怎样的 链路变化,TCP 都可以 保证一个报文 一定能够 到达 接收端;

(3)字节流

        用户消息 通过 TCP 协议传输 时,消息可能会 被 操作系统「分组」成 多个的 TCP 报文,如果 接收方的 程序如果 不知道「消息的边界」,是无法 读出一个 有效的 用户消息的。并且 TCP 报文是「有序的」,当「前一个」TCP 报文 没有收到的 时候,即使 它先 收到了 后面的 TCP 报文,那么也 不能扔给 应用层 去处理,同时对「重复」的 TCP 报文 会自动丢弃。

2. 相关问题

(1)TCP 和 UDP 可以同时绑定相同的端口吗?

        可以。

        TCP 和 UDP 传输协议,在内核中是由 两个完全独立的 软件模块 实现的。当 主机 收到 数据包后,可以在 IP 包头的「协议号」字段 知道 该数据包 是 TCP/UDP,所以 可以 根据 这个信息 确定送给 哪个模块(TCP/UDP)处理,送给 TCP/UDP 模块的 报文根 据「端口号」确定 送给 哪个应用程序 处理。

        因此,TCP/UDP 各自的端口号也相互独立,互不影响。

(2)多个 TCP 服务进程可以同时绑定同一个端口吗?

        如果两个 TCP 服务进程 同时绑定的 IP 地址 和 端口都相同,那么执行 bind()时候 就会出错,错误是 “Address already in use"。

        如果两个 TCP 服务进程 绑定的 端口 都相同,而 IP 地址不同,那么执行 bind()不会出错。

(3)客户端的端口可以重复使用吗?

        在客户端执行 connect 函数的时候,只要 客户端连接的 服务器 不是同一个,内核 允许 端口重复使用。TCP 连接是由 四元组(源 IP 地址,源端口,目的 IP 地址,目的端口)唯一 确认的,那么 只要四元组中 其中一个 元素发生了 变化,那么就 表示不同的 TCP 连接的。

        所以,如果 客户端 已使用端口 64992 与 服务端 A 建立了连接,那么 客户端 要 与 服务端 B 建立连接,还是可以 使用端口 64992 的,因为 内核是 通过 四元组 信息来 定位一个 TCP 连接的,并不会 因为 客户端的 端口号 相同,而导致 连接冲突的 问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux:回车换行+进度条+git理解与使用以及如何解决免密码push问题

目录 特殊符号 Linux小程序---进度条 1.\n和\r的理解 2.缓冲区 3.设计简单的倒计时 4.设计简单的进度条 git-版本控制器 1.理解什么是版本控制器? 2.git的使用 3.git的其他说明 总结上传过程 特殊符号 1.(取消显化) 的作用:执行指令,但指令本身不会显化; 举个例子:我…

智能家居10G雷达感应开关模块,飞睿智能uA级别低功耗、超高灵敏度,瞬间响应快

在当今科技飞速发展的时代,智能家居已经逐渐成为人们生活中不可或缺的一部分。从智能灯光控制到智能家电的联动,每一个细节都在为我们的生活带来便利和舒适。而在众多智能家居产品中,10G 雷达感应开关模块以其独特的优势,正逐渐成…

什么品牌的护眼台灯比较好?五款目前比较好用的护眼台灯

在当今社会,近视已成为一种普遍现象,其背后的原因复杂多样。除了部分由遗传因素导致外,不良的用眼习惯和不适宜的照明环境也是不可忽视的重要因素。长时间盯着电子屏幕、阅读时光线过强或过弱、坐姿不正等,都可能给眼睛带来额外的…

redis详细教程(4.GEO,bitfield,Stream)

GEO Redis GEO 是 Redis 数据库中的一个功能模块,自 Redis 3.2 版本开始引入,专门用于处理地理位置信息。这个模块使得 Redis 能够存储并查询地理坐标,非常适合用于需要地理位置数据的应用,如实时位置查询、地理围栏、距离计算等…

Kafka 基础入门

文章内容是学习过程中的知识总结,如有纰漏,欢迎指正 文章目录 前言 1. 核心概念 1.1 Producer 1.2 broker 1.3 consumer 1.4 zookeeper 1.5 controller 1.6 Cluster 2. 逻辑组件 2.1 Topic 2.2 Partition 2.3 Replication 2.4 leader & follower 3. …

苹果生态的机器学习和同态加密

1. 引言 Apple认为隐私是一项基本人权。其保护用户隐私的工作遵循一系列隐私原则,其中一项原则是优先使用设备上的处理。通过在用户设备上本地执行计算,有助于最大限度地减少与 Apple 或其他实体共享的数据量。当然,用户可以请求由机器学习 …

甲骨文云免费20G对象存储挂载到VPS

准备条件 1.一个获取到免费vps的甲骨文账号Cloud Infrastructure | Oracle 2.一台需要挂载的VPS跳转中 - 有云短链接 3.用到的开源项目https://github.com/s3fs-fuse/s3fs-fuse 一、甲骨文账号端操作 1.1获取存储桶名称和名称空间 进入甲骨文账号,依次如图打开-存储-存储桶…

开源的GPT-4o模型使用指南,Mini-Omni2集视觉、语音和双工能力于一体的

1. Mini-Omni2 是什么? Mini-Omni2 是一个开源的多模态语言模型,旨在模拟 GPT-4o 的视觉、语音和文本处理能力。它能够理解和生成视觉、听觉和文本内容,并支持实时的语音输出和灵活的双工交互。 Mini-Omni2 由清华大学和 Inspirai 的研究人…

【C++】string 类深度解析:探秘字符串操作的核心

快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 目录 💯前言 💯为什么要学习 string 类 (一)简化操作 (二)确保安全 (三…

卷积神经网络实验三:模型优化(1)

作者有话说: 这篇文章写的还是比混乱的。因为本人也是第一次做这样的尝试,虽然接触深度学习有一年了,但是对于模型的优化仅仅是局限于理论上。通过这一次的实验,我对于模型的理解也更深了几分。我不期望这篇文章能帮你能解决多大问…

clickhouse运维篇(三):生产环境一键生成配置并快速部署ck集群

前提条件:先了解集群搭建流程是什么样,需要改哪些配置,有哪些环境,这个文章目的是简化部署。 clickhouse运维篇(一):docker-compose 快速部署clickhouse集群 clickhouse运维篇(二&am…

嵌入式浏览器 -- Chromium VS Firefox

嵌入式浏览器概念 嵌入式浏览器是嵌入式系统中的核心组件之一,用于为设备提供网络访问能力和内容显示功能。与传统PC浏览器相比,嵌入式浏览器更加注重性能优化和资源效率,同时确保核心功能可用,如HTML渲染、JavaScript支持和多媒…

CSP-J2024入门级T3:小木棍

题目链接 CSP-J2024T3:小木棍 题目描述 小 S 喜欢收集小木棍。在收集了 n n n 根长度相等的小木棍之后,他闲来无事,便用它们拼起了数字。用小木棍拼每种数字的方法如下图所示。 现在小 S 希望拼出一个正整数,满足如下条件: 拼出这个数恰好使用

Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程

Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程 Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程前言 OpenCV概述核心功能优势特点应用领域安装与使用 OpenCV_contrib概述核心功能具体模块 安装与使用一、准备工作二、下载OpenCV和OpenCV_contrib三、编译和安装OpenCV四、…

shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘

查找美国安全局漏洞 nww.nsa.gov(美国安全局官方网站) net参数使用 搜索指定的ip网段 shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24 (老美国家安全局的一个网段)可能直接访问不太行,可以使用host参数,得到域名再去…

nrm的使用

在安装nrm之前,要先完成node.js的安装。 1、nrm的介绍 ‌nrm(npm registry manager)是一个npm源管理器,允许用户在不同npm源之间快速切换。 关于npm和nvm的介绍,详见文章nvm的使用-CSDN博客。 解释:比如…

图片懒加载(自定义指令)

----------------------------------------------------------- 图片懒加载自定义指令使用mock模拟随机图片列表组件如下(主要内容):配置自定义指令 图片懒加载 实现思路 使用自定义指令实现通用图片懒加载(在图片到达视口内时再…

socket编程---UDP

目录 一、socket 二、socket接口 1.流程原理 2.代码 前言 提示:这里可以添加本文要记录的大概内容: socket编程又称套接字编程,指进行网络通信程序的编写 提示:以下是本篇文章正文内容,下面案例可供参考 一、soc…

R语言机器学习算法实战系列(十四): CatBoost分类算法+SHAP值 (categorical data gradient boosting)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍CatBoost的原理CatBoost的步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割设置数据对象调节参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC Curv…

创建ODBC数据源SQLConfigDataSource函数的用法

网络上没有这个函数能实际落地的用法说明&#xff0c;我实践后整理一下&#xff1a; 1.头文件与额外依赖库&#xff1a; #include <odbcinst.h> #pragma comment(lib, "legacy_stdio_definitions.lib") 2.调用函数&#xff1a; if (!SQLConfigDataSourceW(…