[面试直通版]网络协议面试核心之IP,TCP,UDP-TCP与UDP协议的区别
点击->计算机网络复习的文章集<-点击
目录
前言
UDP
TCP
区别小总结
-  
前言
 - TCP和UDP都是在传输层,在程序之间传输数据
 - 传输层
 - OSI模型:第四层
 - TCP/IP模型:第三层
 - 关键协议:TCP协议、UDP协议
 - 传输层属于主机间不同进程的通信
 - 传输层向上面的应用层提供通信服务,并屏蔽了下面的核心网络细节,使得面向传输层编程就像是两个主机进程之间有一条端到端的逻辑通信信道一样
 - 当传输层采用TCP协议时,这条逻辑通信信道就是一条可靠的通信信道,而尽管下面的网络是不可靠的
 - TCP是基于连接的,UDP是基于非连接的
 - 如果将进程与进程之间的通信看做是人与人之间的通信,那么假使人与人之间的通信方式有两种写信和打电话 
- 那么写信信件写完寄出去之后,无法知道对方是否收到,也无法知道对方收到的内容是否完整,知道对方信件收到的顺序是否正确
 - 打电话就不一样,当电话接通之后,肯定要确认对方有没有接通然后互相通话,最后挂断的时候也会通知对方
 
 - 写信的方式就和UDP的传输方式很像
 - 而打电话的方式就和TCP的方式很像
 -  
UDP
 - 看一下 UDP 的包头 

 
- UDP很简单,如果没有这两个端口号,数据就不知道该发给哪个应用
 - 特点: 
- 沟通简单,不需要大量的数据结构,处理逻辑和包头字段
 - 无连接,知道对端的IP和端口号就直接进行传输, 不需要建立连接
 - 它不会建立连接,但是会监听这个地方,谁都可以传给它数据,它也可以传给任何人数据,甚至可以同时传给多个人数据
 - 不可靠,没有确认机制, 没有重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息
 - 不会根据网络的情况进行拥塞控制,无论是否丢包,它该怎么发还是怎么发
 - 面向数据报,不能够灵活的控制读写数据的次数和数量,应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并
 - 数据收不够灵活,但是能够明确区分两个数据包,避免粘包问题
 - 由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以性能负载低,传输速度很快,实现简单
 
 - 基于这些特点,UDP 的主要应用场景为 
- 1.需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用
 - 比如 DHCP 就是基于 UDP 协议的,应用IP地址配置
 - 2.不需要一对一沟通,建立连接,而是可以广播的应用
 - 因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议
 - 3.需要处理速度快,可以容忍丢包,即使网络拥塞,也毫不退缩
 - 4.简单场景
 
 - 协议: 
- NFS: 网络文件系统
 - TFTP: 简单文件传输协议
 - DHCP: 动态主机配置协议
 - BOOTP: 启动协议(用于无盘设备启动)
 - DNS: 域名解析协议
 
 -  
TCP
 - 看一下 TCP 的包头 

 - 首先,源端口和目标端口是不可少的
 - 表示数据是从哪个进程来, 到哪个进程去
 - 接下来是包的序号 
- 主要是为了解决乱序问题;不编好号怎么知道哪个先来,哪个后到
 
 - 确认序号 
- 发出去的包应该有确认,这样能知道对方是否收到,如果没收到就应该重新发送,这个解决的是不丢包的问题
 
 - 紧急指针 
- 标识哪部分数据是紧急数据
 
 - 状态位 
- SYN 是发起一个链接,ACK 是回复,RST 是重新连接,FIN 是结束连接
 - 1.URG: 紧急指针是否有效
 - 2.ACK: 确认号是否有效
 - 3.PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走
 - 4.RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段
 - 5.SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段
 - 6.FIN: 通知对方, 本端要关闭了, 我们称携带FIN标识的为结束报文段
 - 因为 TCP 是面向连接的,因此需要双方维护连接的状态,这些状态位的包会引起双方的状态变更
 
 - 窗口大小 
- TCP 要做流量控制,需要通信双方各声明一个窗口,标识自己当前的处理能力,即接收缓冲区剩余的空间大小
 
 - 特点: 
- 面向连接,有连接服务,有可靠服务
 - 实现复杂,速度较慢,性能负载较高
 
 - 通过对 TCP 头的解析,要掌握 TCP 协议,应该重点关注以下问题: 
- 顺序问题
 - 丢包问题
 - 连接维护
 - 流量控制
 - 拥塞控制
 
 - 协议: 
- HTTP
 - HTTPS
 - SSH
 - Telnet
 - FTP
 - SMTP
 
 -  
区别小总结
 - 1--- 
- TCP面向连接(如打电话要先拨号建立连接)
 - UDP是无连接的,即发送数据之前不需要建立连接
 
 - 2--- 
- TCP提供可靠的服务;也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达
 - UDP尽最大努力交付,即不保证可靠交付
 
 - 3-- 
- UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信
 
 - 4-- 
- 每一条TCP连接只能是点到点的
 - UDP支持一对一,一对多,多对一和多对多的交互通信
 
 - 5-- 
- TCP对系统资源要求较多
 - UDP对系统资源要求较少
 
 - 6-- 
- UDP程序结构较简单,实现更简单
 
 - 7-- 
- TCP是面向字节流的
 - UDP是基于数据报的
 
 
相关文章:
[面试直通版]网络协议面试核心之IP,TCP,UDP-TCP与UDP协议的区别
点击->计算机网络复习的文章集<-点击 目录 前言 UDP TCP 区别小总结 前言 TCP和UDP都是在传输层,在程序之间传输数据传输层OSI模型:第四层TCP/IP模型:第三层关键协议:TCP协议、UDP协议传输层属于主机间不同进程的通信传…...
VO,BO,PO,DO,DTO,AO的区别
DTO(Data Transfer Object)数据传输对象 这个传输通常指的前后端之间的传输 1.在前端的时候: 存在形式通常是js里面的对象(也可以简单理解成json),也就是通过ajax请求的那个数据体 2.在后端的时候&…...
JavaSE学习笔记day15
零、 复习昨日 HashSet 不允许重复元素,无序 HashSet去重原理: 先比较hashcode,如果hashcode不一致,直接存储如果hashcode值一样,再比较equals如果equals值为true,则认为完全一样,不存储即去重否则存储 如果使用的是空参构造创建出的TreeSet集合,那么它底层使用的就是自然排序,…...
Spring Security认证研究
1.项目中认证的三种方式: 1.统一认证 认证通过由认证服务向给用户颁发令牌,相当于访问系统的通行证,用户拿着令牌去访问系统的资源。 2.单点登录,对于微服务项目,因为包含多个模块,所以单点登录就是使得用户…...
BigKey、布隆过滤器、分布式锁、红锁
文章目录 BigKey发现 BigKey如何删除BigKeyunlinkdelBigKey配置优化布隆过滤器布隆过滤器构建、使用、减少误判布隆过滤器二进制数组,如何处理删除?实现白名单 whitelistCustomer解决缓存穿透分布式锁依赖Redis 分布式锁代码使用红锁POM依赖yaml使用其他redis分布式锁容错率公…...
一文让你彻底理解Linux内核调度器进程优先级
一、前言 本文主要描述的是进程优先级这个概念。从用户空间来看,进程优先级就是nice value和scheduling priority,对应到内核,有静态优先级、realtime优先级、归一化优先级和动态优先级等概念。我们希望能在第二章将这些相关的概念描述清楚。…...
Java 抽象类和接口
文章目录一、抽象类1. 抽象类定义2. 抽象类成员特点二、接口1. 接口概述2. 接口成员特点3. 类和接口的关系4. 抽象类和接口的区别5. 接口案例三、形参和返回值一、抽象类 1. 抽象类定义 在 Java 中,一个没有方法体的方法应该定义为抽象方法,而类中如果…...
三行代码让你的git记录保持整洁
前言笔者最近在主导一个项目的架构迁移工作,由于迁移项目的历史包袱较重,人员合作较多,在迁移过程中免不了进行多分支、多次commit的情况,时间一长,git的提交记录便混乱不堪,随便截一个图形化的git提交历史…...
阿里巴巴内网 Java 面试 2000 题解析(2023 最新版)
前言 这份面试清单是今年 1 月份之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有一些知识点是我还在探索的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平…...
网络应用之静态Web服务器
静态Web服务器-返回固定页面数据学习目标能够写出组装固定页面数据的响应报文1. 开发自己的静态Web服务器实现步骤:编写一个TCP服务端程序获取浏览器发送的http请求报文数据读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。HTTP响应报文数据发送完…...
IndexDB 浏览器服务器
IndexDB 浏览器服务器 文章部分内容引用: https://www.ruanyifeng.com/blog/2018/07/indexeddb.html https://juejin.cn/post/7026900352968425486#heading-15 基本概念 数据库:IDBDatabase 对象对象仓库:IDBObjectStore 对象索引࿱…...
追梦之旅【数据结构篇】——详解C语言实现链队列
详解C语言实现链队列~😎前言🙌整体实现内容分析💞预备小知识🙌1.链队列头文件编写🙌2.链队列功能文件(Queue.c )编写:🙌1)初始化函数实现2)销毁函…...
SpringMVC - 13 - SpringMVC执行流程
文章目录1、SpringMVC常用组件2、DispatcherServlet初始化过程a>初始化WebApplicationContextb>创建WebApplicationContextc>DispatcherServlet初始化策略3、DispatcherServlet调用组件处理请求a>processRequest()b>doService()c>doDispatch()d>processDi…...
6091: 斐波那契数列
描述一个斐波那契序列,F(0) 0, F(1) 1, F(n) F(n-1) F(n-2) (n>2),根据n的值,计算斐波那契数F(n)。输入输入数据的第一行为测试用例的个数t,接下来为t行,每行为一个整数n(2≤n≤40)。输出…...
任何人均可上手的数据库与API搭建平台
编写API可能对于很多后端开发人员来说,并不是什么难事儿,但如果您主要从事前端功能,那么可能还是有一些门槛。 那么有没有工具可以帮助我们降低编写API的学习门槛和复杂度呢? 今天就来给大家推荐一个不错的开源工具:…...
Ubuntu(虚拟机)的Anaconda 及使用
安装Anaconda 使用firefox打开Ananconda网址Anaconda | The Worlds Most Popular Data Science Platform 下载后有.sh文件: Anaconda3-2022.10-Linux-x86_64.sh 进入所在目录打开终端并输入 $ bash Anaconda3-2022.10-Linux-x86_64.sh 然后开始安装。 对于给…...
Git ---- IDEA集成 GitHub
Git ---- IDEA集成 GitHub1. 设置 GitHub 账号2. 分享工程到 GitHub3. push 推送本地库到远程库4. pull 拉取远程库到本地库5. clone 克隆远程库到本地1. 设置 GitHub 账号 新版的 IDEA 选择之后会自动登录,就不需要设置 token 了。 如果是老版的 IDEA 的话&…...
opencv提取结构化文本总结
扫描文件表格识别 1.识别结构 situation1 有明确表格结构 1.纠正表格偏移角度(获取最大轮廓,计算最小的矩形,变换坐标截取矩形) 获取面积最大轮廓 _, contours, HIERARCHY cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2…...
JVM知识体系学习八:OOM的案例(承接上篇博文,可以作为面试中的案例)
文章目录前言一、概述二、案例二三、案例:方法区内存溢出1、代码:LambdaGC.java2、元空间内存溢出日志3、分析4、疑问*****四、案例:直接内存溢出问题(少见)(尽量不说)五、案例:栈内存溢出问题1…...
Redis的持久化方式
Redis支持两种方式的持久化,一种是RDB方式、另一种是AOF(append-only-file)方式,两种持久化方式可以单独使用其中一种,也可以将这两种方式结合使用。 •RDB:根据指定的规则“定时”将内存中的数据存储在硬…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
