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

news2025/12/18 17:48:29

从简单到难吧

区别就是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.coloradmin.cn/o/2378325.html

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

相关文章

【滑动窗口】LeetCode 209题解 | 长度最小的子数组

长度最小的子数组 前言:滑动窗口一、题目链接二、题目三、算法原理解法一:暴力枚举解法二:利用单调性,用滑动窗口解决问题那么怎么用滑动窗口解决问题?分析滑动窗口的时间复杂度 四、编写代码 前言:滑动窗口…

Python绘制南丁格尔玫瑰图:从入门到实战

Python绘制南丁格尔玫瑰图:从入门到实战 引言 南丁格尔玫瑰图(Nightingale Rose Chart),也被称为极区图(Polar Area Chart),是一种独特的数据可视化方式。这种图表由弗洛伦斯南丁格尔&#xff…

炼丹学习笔记3---ubuntu2004部署运行openpcdet记录

前言 环境 cuda 11.3 python 3.8 ubuntu2004 一、cuda环境检测 ylhy:~/code_ws/OpenPCDet/tools$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Mar_21_19:15:46_PDT_2021 Cuda compilation tools, release 11.3…

深入解析BGP路由反射器与联邦:突破IBGP全连接限制的两种方案

一、引言:大型BGP网络的挑战 在大型BGP网络架构中,传统的IBGP全连接架构会带来严重的扩展性问题。当网络中存在N台路由器时,需要维护N*(N-1)/2个IBGP连接,这对设备资源和运维管理都是巨大挑战。本文将深入解析两种主流解决方案&a…

QT设置MySQL驱动

QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 第一步:下载MySQL https://dev.mysql.com/downloads/mysql/ 解压缩下载的安装包,其目录结构如下所示: 第二…

String的一些固定程序函数

append reverse length toString

3.2/Q2,Charls最新文章解读

文章题目:Transition of nighttime sleep duration and sleep quality with incident cardiovascular disease among middle-aged and older adults: results from a national cohort study DOI:10.1186/s13690-025-01577-5 中文标题:中老年人…

大麦(Hordeum vulgare)中 BAHD 超家族酰基转移酶-文献精读129

Systematic identification and expression profiles of the BAHD superfamily acyltransferases in barley (Hordeum vulgare) 系统鉴定与大麦(Hordeum vulgare)中 BAHD 超家族酰基转移酶的表达谱分析 摘要 BAHD 超家族酰基转移酶在植物中催化和调控次…

docker迅雷自定义端口号、登录用户名密码

在NAS上部署迅雷,确实会带来很大的方便。但是目前很多教程都是讲怎么部署docker迅雷,鲜有将自定义配置的方法。这里讲一下怎么部署,并重点讲一下支持的自定义参数。 一、部署docker 在其他教程中,都是介绍的如下命令&#xff0c…

中国30米年度土地覆盖数据集及其动态变化(1985-2022年)

中文名称 中国30米年度土地覆盖数据集及其动态变化(1985-2022年) 英文名称:The 30 m annual land cover datasets and its dynamics in China from 1985 to 2022 CSTR:11738.11.NCDC.ZENODO.DB3943.2023 DOI 10.5281/zenodo.8176941 数据共享方式&#xff1a…

3D个人简历网站 5.天空、鸟、飞机

1.显示天空 models下新建文件Sky.jsx Sky.jsx // 从 React 库中导入 useRef 钩子,用于创建可变的 ref 对象 import { useRef } from "react"; // 从 react-three/drei 库中导入 useGLTF 钩子,用于加载 GLTF 格式的 3D 模型 import { useGLT…

STM32IIC实战-OLED模板

STM32IIC实战-OLED模板 一,SSD1306 控制芯片1, 主要特性2,I2C 通信协议3, 显示原理4, 控制流程5, 开发思路 二,HAL I2C API 解析I2C 相关 API1,2,3,4&#xf…

c#车检车构客户管理系统软件车辆年审短信提醒软件

# CMS_VehicleInspection 车检车构客户管理系统软件车辆年审短信提醒软件 # 开发背景 软件是给泸州某公司开发的车检车构客户管理系统软件。用于在车检年审到期前一个月给客户发送车检短信提醒 # 功能描述 主要功能:车辆年审前一个月给客户发年审短信提醒&#xf…

通俗版解释CPU、核心、进程、线程、协程的定义及关系

通俗版解释(比喻法) 1. CPU 和核心 CPU 一个工厂(负责干活的总部)。核心 工厂里的车间(比如工厂有4个车间,就能同时处理4个任务)。 2. 进程 进程 一家独立运营的公司(比如一家…

大语言模型 11 - 从0开始训练GPT 0.25B参数量 MiniMind2 准备数据与训练模型 DPO直接偏好优化

写在前面 GPT(Generative Pre-trained Transformer)是目前最广泛应用的大语言模型架构之一,其强大的自然语言理解与生成能力背后,是一个庞大而精细的训练流程。本文将从宏观到微观,系统讲解GPT的训练过程,…

USRP 射频信号 采集 回放 系统

USRP 射频信号采集回放系统 也可以叫做: 利用宽带RF录制和回放系统实现6G技术研究超宽带射频信号采集回放系统使用NI USRP平台实现射频信号录制和回放操作演示USRP也能实现多通道宽带信号流盘回放了! 对于最简单的实现方法就是使用LabVIEW进行实现 采…

【skywalking】index“:“skywalking_metrics-all“},“status“:404}

skywalking 启动报错 java.lang.RuntimeException: {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [skywalking_metrics-all]","resource.t ype":"inde…

【C++详解】string各种接口如何使用保姆级攻略

文章目录 一、string介绍二、string使用构造函数析构函数赋值运算符重载string的遍历修改方法1、下标[]2、迭代器3、范围for 迭代器使用详解const迭代器反向迭代器(reverse) Capacity(容量相关)size/lengthmax_sizecapacityclear/emptyshrink_to_fit(缩容)reserve(扩…

2025深圳杯D题法医物证多人身份鉴定问题四万字思路

Word版论文思路和千行Python代码下载:https://www.jdmm.cc/file/2712074/ 引言 法医遗传学中的混合生物样本分析,特别是短串联重复序列(Short Tandem Repeat, STR)分型结果的解读,是现代刑事侦查和身份鉴定领域的核心…

【时时三省】(C语言基础)字符数组应用举例2

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 例题: 有3个字符串,要求找出其中“最大”者。 解题思路: 可以设一个二维的字符数组str,大小为320,即有3行20列(每一…