【网络面试篇】TCP与UDP类

目录

一、综述

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.rhkb.cn/news/460127.html

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

相关文章

【C++】类和对象(六):运算符重载1

大家好,我是苏貝,本篇博客带大家了解C的运算符重载,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 (A) 引入(B) 运算符重载 (A) 引入 写一个Date日期类,问:如果我…

C语言(一维数组)

如果对你有帮助,请点个免费的赞吧,谢谢汪。(点个关注也可以!)\n\n如果以下内容需要补充和修改,请大家在评论区交流~ 思维导图 1.数组 由一个或多个相同的数据类型组成的集合 特点: 数据类型相…

Mount Image Pro,在取证安全的环境中挂载和访问镜像文件内容

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。 天津鸿萌科贸发展有限公司是 GetData 公司数据恢复与取证工…

上市公司企业数字金融认知数据集(2001-2023年)

一、测算方式:参考C刊《经济学家》王诗卉(2021)老师的做法,数字金融认知使用每万字年报描述中包含的对数字金融相关关键词的提及次数,关键词为:互联网、数字化、智能、大数据、电子银行、金融科技、科技金融…

【Mybatis】动态SQL+配置文件+数据库连接池+企业规范(10)

本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 目录 本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 …

Web3的去中心化社交网络:区块链技术如何改变互动方式

随着互联网技术的不断进步,社交网络正在经历一场深刻的变革。Web3,作为新一代互联网技术的代表,正通过区块链和去中心化理念改变着我们与他人互动的方式。传统的社交网络通常由大型公司控制,用户数据的集中化管理和隐私问题备受关…

大数据-191 Elasticsearch - ES 集群模式 配置启动 规划调优

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

短信登录的实现-redis和session的比较

目录 短信登录功能的实现一:基于session进行短信登录1:发送验证码2:登录3:登录验证拦截器4:隐藏用户敏感信息二:session的集群共享问题三:基于redis实现短信登录登录的刷新问题 短信登录功能的实…

中欧科学家论坛暨第六届人工智能与先进制造国际会议(AIAM 2024)在德国法兰克福成功举办,两百余名中外科学家共襄盛举

2024年10月20至21日,首届中欧科学家论坛在德国法兰克福的SAALBAU Titus Forum国际会议中心成功举行。中国驻法兰克福总领事馆伍鹏飞副总领事、德国兰斯巴赫-鲍姆巴赫市市长Michael Merz亲自出席并致辞。2004年诺贝尔化学奖得主Aaron Ciechanover教授和法国国家科学院…

直接删除Github上的文件

直接删除Github上的文件 说明:此操作只删除Github上的文件,本地仓库文件不受影响 1.确定要删除哪个分支文件,以删除main为例, 1.找到本地仓库位置以StudyNote为例,右键 bash here 2.打开命令窗口,将Github的StudyN…

SpringBoot篇(运维实用篇 - 日志)

目录 一、简介 二、代码中使用日志工具记录日志 1. 操作步骤 步骤1:添加日志记录操作 步骤2:设置日志输出级别 步骤3:设置日志组 2. 知识小结 三、优化日志对象创建代码 1. 实例 2. 总结 四、日志输出格式控制 1. 实例 2. 总结 …

Java多线程编程基础

目录 编写第一个多线程程序 1. 方式一 : 继承Thread类, 重写run方法 2. 方式二: 实现Runnable接口, 重写run方法 3. 方式三: 使用Lambda表达式 [匿名内部类] [Lambda表达式] 在上个文章中, 我们了解了进程和线程的相关概念. 那么, 在Java中, 我们如何进行多线程编程呢? …

postman的脚本设置接口关联

pm常用的对象 变量基础知识 postman获取响应结果的脚本的编写 下面是购物场景存在接口信息的关联 登录进入---搜索商品---进入商品详情---加入购物车 资源在附件中,可以私聊单独发送 postman的SHA256加密 var CryptoJS require(crypto-js);// 需要加密的字符串 …

ip地址分为几大类-IP和子网掩码对照表

一、IP地址的基本概念与分类 IP地址是用于在网络中标识每个设备的逻辑地址。互联网协议将IP地址分为A、B、C、D和E五类,其中A、B、C三类最常用,它们主要根据地址的首位位数以及用途进行划分。 A类地址: 范围:0.0.0.0 - 127.255.2…

docker占用磁盘过多问题

我在windows系统上用docker,安装在C盘环境下,我发现C盘占用了大量的空间,查找后发现是docker的映像文件占用的,于是开始清理,中间还踩个坑,记录一下,下次需要的时候方便找。 踩坑 我本想移动映…

Xss_less靶场攻略(1-18)

xss-lab-less1 ur特殊字符转义 存在url中 转义符为 %2B& 转义符为 %26空格 转义符为 或 %20/ 转义符为 %2F? 转义符为 %3F% 转义符为 %25#转义符为 %23 转义符为 %3Dimg 标签懒加载 在XSS攻击中,img标签的src属性是一个常见的攻击向量,因为它可以…

聊聊Web3D 发展趋势

随着 Web 技术的不断演进,Web3D 正逐渐成为各行业数字化的重要方向。Web3D 是指在网页中展示 3D 内容的技术集合。近年来,由于 WebGL、WebGPU 等技术的发展,3D 内容已经能够直接在浏览器中渲染,为用户提供更加沉浸、互动的体验。以…

【传知代码】图像处理解决种子计数方法

文章目录 一、背景及意义介绍研究背景农业考种需求传统计数方法的局限性人工计数仪器设备计数 研究意义提高育种效率提高计数准确性广泛的适用性数据存档与分析便利 二、概述三、材料与数据准备以及方法介绍整体流程图像采集图像预处理形态学操作腐蚀运算开运算 图像二值化种子…

uniapp开发【点击展示弹窗功能】

一、效果展示 二、代码 <template><view class="mini"><view class="block_item" @click="$refs.popup.op

centos7.X zabbix监控参数以及邮件报警和钉钉报警

1&#xff1a;zabbix安装 1.1 zabbix 环境要求 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘&#xff08;最低&#xff09; 操作系统: Linux centos7.2 x86_64 Python 2.7.x Mariadb Server ≥ 5.5.56 httpd-2.4.6-93.el7.centos.x86_64 PHP 5.4.161.2 zabbix安装版本 [rootnod…