当前位置: 首页 > ds >正文

TCP/UDP协议原理和区别 笔记

从简单到难吧

区别就是TCP一般用于安全稳定的需求,UDP一般用于不那么需要完全数据的需求,比如说直播,视频等。

再然后就是TPC性能慢于UDP。

再然后我们看TCP的原理(三次握手,数据传输,四次挥手)

首先是三次握手,然后我在后面会问二次握手可不可以,可能面试会被问到。

三次握手:

(第一次)客户端向服务端发起请求,我要连接,然后客户端发送syn包给服务端。

(第二次)服务端发送之前的syn和ack包给客户端

(第三次)客户端收到服务端发给我的syn和自己的syn,如果一致了那么给服务端发起ack。

为什么不是两次握手?

如果是两次的话,客户端给服务端的syn1包卡住了,那么客户端会再发一个syn2包给服务端,服务端给客户端连接,但是这时候syn1包又好了,再次请求给服务端,这时候服务端会再次连接,最后导致客户端认为是一个连接,但是服务端认为是两个。就会出现问题。

数据传输:

  • 分段与编号:应用程序交给 TCP 的数据可能很大,TCP 会将其分成合适大小的数据段(报文段)。每个数据段都有一个序列号,用于标识数据在字节流中的位置 。比如发送一个大文件,会被分成多个数据段,每个数据段都有序列号,便于接收方按序重组 。
  • 确认与重传:发送方发送数据段后,启动一个定时器并等待接收方的确认(ACK)。接收方收到数据段后,会检查数据是否正确,若正确则向发送方发送确认报文,其中确认号表示期望接收的下一个数据段的序列号 。如果发送方在定时器超时前未收到确认,就会重传该数据段 。
  • 流量控制:接收方通过 TCP 报文中的窗口字段告知发送方自己当前的接收缓冲区还能容纳多少字节的数据(即窗口大小 )。发送方根据这个窗口大小来调整自己的发送速率,避免发送过快导致接收方缓冲区溢出 。比如接收方缓冲区快满时,会减小窗口大小,发送方收到通知后降低发送速度 。
  • 拥塞控制:发送方会根据网络的拥塞情况调整自己的发送速率。当网络出现拥塞时,发送方会降低发送数据的速度,避免网络拥塞进一步恶化 。常见的拥塞控制算法有慢开始、拥塞避免、快速重传、快速恢复等 。

这是ai给我发的,很详细,但是我想要的不是这个。所以我精简一下。(主要看下面这个即可)

  • 分段与编号:TCP的数据会把它分成几段进行处理,并且进行编号。
  • 确认与重传:如果发送数据以后拿到ack就是确认。但是发送数据以后等待超时拿不到ack就会重发。
  • 流量控制:接收方会发送窗口大小给发送方,发送方自动根据大小进行发送调整。
  • 拥塞控制:发送方会自动根据网络进行调整发送。

四次挥手:

(第一次挥手)客户端发送fin给服务端,然后服务端返回ack,进入到终止等待状态

(第二次挥手)服务端接收到fin以后进入到终止等待状态(主要是为了要处理还剩余的数据)。

(第三次挥手)服务端发送fin给客户端

(第四次挥手)客户端发送ack给服务端,服务端接收到ack直接关闭,客户端等待超时才会关闭。

为什么要一直等到超时才会关闭,因为如果ack没有发送到服务端就会出现问题,如果一直等待可以避免,如果没有发送到那就重发即可。

至于UDP的工作原理,其实就是直接发送数据给目标地址. hh

http://www.xdnf.cn/news/6970.html

相关文章:

  • Postman遇到脚本不支持replaceIn函数
  • Cookie、Session、Token
  • 自定义类、元组、字典和结构体对比——AutoCAD C# 开发中建立不同对象之间的联系
  • 灵光一现的问题和常见错误2
  • C语言:在 Win 10 上,g++ 如何编译 gtk 应用程序
  • Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
  • cursor/vscode启动项目connect ETIMEDOUT 127.0.0.1:xx
  • 鸿蒙ArkUI体验:Hexo博客客户端开发心得
  • JVM 调优实战入门:从 GC 日志分析到参数调优
  • 基于requests_html的python爬虫
  • Redis——缓存雪崩、击穿、穿透
  • 内容安全:使用开源框架Caffe实现上传图片进行敏感内容识别
  • HMDB51数据集划分
  • V 型不锈钢对夹球阀:高性价比流体控制的优选方案-耀圣
  • 联想笔记本黑屏了,排线出问题还是静电
  • QT调用Halcon查询所有摄像头名称
  • 遨游科普:三防平板是什么?有什么功能?
  • Linux安全篇 --firewalld
  • Windows系统永久暂停更新操作步骤
  • 微软家各种copilot的AI产品:Github copilot、Microsoft copilot
  • 什么是PMBus
  • 18-总线IIC
  • 大模型在腰椎间盘突出症预测与治疗方案制定中的应用研究
  • LeetCode 热题 100_寻找重复数(100_287_中等_C++)(技巧)(暴力解法;哈希集合;二分查找)
  • 字节2025实习/校招/社招 内推码:R9SZ7Y1
  • 车载以太网驱动智能化:域控架构设计与开发实践
  • 【Ubuntu】Waydroid-Linux安卓模拟器安装
  • 【数据结构】线性表--队列
  • 自动化脚本开发:Python调用云手机API实现TikTok批量内容发布
  • 卷积神经网络中的二维卷积与三维卷积详解