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

TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

先来介绍一些osi七层模型

分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。

  • 应用层(数据):确定进程之间通信的性质以及满足用户需要以及提供网络和用户应用,为应用程序提供服务,DNS,HTTP,HTTPS,DHCP,FTP,POP3(Post Office Protocol)、SMTP(Simple Mail Transfer Protocol)都是这层的协议。

  • 表示层(数据):主要解决用户信息的语法表示问题,表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别,如数据转换,压缩和加密,解密

  • 会话层(数据):会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。比如服务器验证用户登录就是在会话层。

  • 传输层(段):实现网络不同主机上的用户进程之间的数据通信,可靠与不可靠的传输,传输层的错误检测,流量控制,拥塞控制。TCP UDP就这层。

  • 网络层(包):本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。IP就是这层。

  • 数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,并由错误检测和修正

  • 物理层(比特流):设备之间比特流的传输,物理接口,电气特性。

tcp和udp属于哪层

属于传输层

TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

区别:

  1. 连接性:TCP是面向连接的协议,通过三次握手建立连接,然后进行数据传输,传输完成后通过四次挥手关闭连接。而UDP是无连接的协议,发送数据之前不需要建立连接,也没有连接的关闭过程。

  2. 可靠性:TCP提供可靠的传输,通过序号、确认和重传机制来确保数据的可靠性。它使用滑动窗口和累计确认来保证数据的按序到达,并通过超时重传机制来处理丢失的数据包。而UDP不提供可靠性保证,它只是简单地将数据包发送出去,不保证数据的可靠性和按序到达。

  3. 传输方式:TCP提供面向字节流的传输,将数据划分为多个TCP报文段进行传输,保证数据的完整性和顺序性。而UDP提供面向报文的传输,每个UDP数据包都是独立的,不保证数据的完整性和顺序性。

TCP如何保证可靠传输:

  1. 序号和确认:TCP使用序号和确认机制来保证数据的按序到达。发送方给每个数据包分配一个序号,接收方通过确认序号告知发送方已成功接收到数据包。

  2. 滑动窗口:TCP使用滑动窗口机制来控制发送方发送数据的速率和接收方接收数据的速率。滑动窗口大小可以动态调整,以适应网络状况。

  3. 超时重传:TCP使用超时重传机制来处理丢失的数据包。发送方在发送数据后启动一个定时器,如果在超时时间内未收到确认,就认为数据包丢失,进行重传。

  4. 流量控制:TCP使用流量控制机制来控制发送方发送数据的速率,以避免接收方被淹没。接收方通过窗口大小告知发送方自己的接收能力,发送方根据接收方的窗口大小来控制发送速率。

  5. 拥塞控制:TCP使用拥塞控制机制来避免网络拥塞。通过动态调整发送方的发送速率,根据网络的拥塞程度进行拥塞窗口的调整,以保持网络的稳定性和公平性。

数据链路层有哪些协议?

主要有 arp 协议,ARP 是借助 ARP 请求与 ARP 响应两种类型的包确定 MAC 地址的

  • 主机会通过广播发送 ARP 请求,这个包中包含了想要知道的 MAC 地址的主机 IP 地址。

  • 当同个链路中的所有设备收到 ARP 请求时,会去拆开 ARP 请求包里的内容,如果 ARP 请求包中的目标 IP 地址与自己的 IP 地址一致,那么这个设备就将自己的 MAC 地址塞入 ARP 响应包返回给主机。

http和https有什么区别?

  • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP)数据传输过程是加密的,安全性较好。

  • 使用 HTTPS 协议需要到 CA 申请证书。

  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,而 HTTPS除了 TCP 的三个包,还要加上SSL握手的消耗。

  • 用的端口也不一样,前者是 80,后者是 443。

  • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

相关文章:

TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

先来介绍一些osi七层模型 分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。 应用层(数据):确定进程之间通信的性质以及满足用户需要以及提供网络和用户应用,为应用程序提供服务,DNS,HTTP,HTTPS&#xf…...

鼠标悬停阴影的效果被旁边div挡住的解决办法

出现的问题 需求要求鼠标悬停某个图片上有阴影效果,但阴影被旁边相邻的div挡住了,如图所示 解决方案 给悬停的这块div增加2个css属性 $(this).css(position, relative); $(this).css(z-index, 200);新的效果如图所示 一直写后端,前端的…...

Go用两个协程交替打印100以内的奇偶数

方式1&#xff08;使用无缓冲的channel&#xff09; package mainimport ( "fmt" "time")var flagChan make(chan int)func wokr1() { for i : 1; i < 100; i { flagChan <- 666 // 塞入 if i%2 1 { fmt.Println("协程1打印:", i) …...

css 文字单行多行超出长度后显示 ...

0.超出… 1、单行文本超出 <div class"content">测试数据&#xff1a;css单行文本超出显示省略号--------</div><style> .content{width: 200px;height: 200px;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow:el…...

C++将派生类赋值给基类

在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍…...

海外问卷调查是做什么的?

大家好&#xff0c;我是橙河。现在我来给大家简单讲解一下海外问卷调查是做什么的&#xff1f; 多年以前&#xff0c;人们就开始在网上进行海外问卷调查了。最常见的方法是通过问卷网站、做问卷或者论坛进行调查&#xff0c;现在则更多地使用各种渠道进行调查。海外国家对于问…...

Redis——数据结构介绍

Redis是一个key-value的数据库&#xff0c;key一般是String类型&#xff0c;不过value的类型是多样的&#xff1a; String&#xff1a;hello wordHash&#xff1a;{name:"Jack",age:21}List&#xff1a;[A -> B -> C -> D]Set&#xff1a;{A,B,C}SortedSet…...

附录2-将三国演义按章节存储为不同的txt(bs4)

地址 《三国演义》全集在线阅读_史书典籍_诗词名句网 目录 1 项目分析 2 代码 1 项目分析 我们可以在首页中找到所有的章节 每一个章节是一个a标签&#xff0c;a标签连接到该章节的内容 但这个网站他有bug&#xff0c;章节都是乱套的&#xff0c;我们无视这种错误&#…...

现代C++中的从头开始深度学习:【6/8】成本函数

现代C中的从头开始深度学习&#xff1a;成本函数 一、说明 在机器学习中&#xff0c;我们通常将问题建模为函数。因此&#xff0c;我们的大部分工作都包括寻找使用已知模型近似函数的方法。在这种情况下&#xff0c;成本函数起着核心作用。 这个故事是我们之前关于卷积的讨论的…...

Vue——vue3中的ref和reactive数据理解以及父子组件之间props传递的数据

ref()函数 这是一个用来接受一个内部值&#xff0c;返回一个响应式的、可更改的 ref 对象&#xff0c;此对象只有一个指向其内部值的属性 .value。 作用&#xff1a;创建一个响应式变量&#xff0c;使得某个变量在发生改变时可以同步发生在页面上。 模板语句中使用这个变量时…...

新手如何备考PMP考试?

回头看来&#xff0c;从战略上来说&#xff1a; 备考第一重点&#xff1a;要有一个清晰的目标——我要过&#xff01; 第二重点&#xff1a;足够重视它——把它的优先级调整到仅次于工作&#xff1a;万籁俱寂&#xff0c;唯有学习。 第三重点&#xff1a;自律——有了第一点…...

FPGA输出lvds信号点亮液晶屏

1 概述 该方案用于生成RGB信号&#xff0c;通过lvds接口驱动逻辑输出&#xff0c;点亮并驱动BP101WX-206液晶屏幕。 参考&#xff1a;下面为参考文章&#xff0c;内容非常详细。Xilinx LVDS Output——原语调用_vivado原语_ShareWow丶的博客http://t.csdn.cn/Zy37p 2 功能描述 …...

算法面试-深度学习基础面试题整理(2023.8.29开始,每天下午持续更新....)

一、无监督相关&#xff08;聚类、异常检测&#xff09; 1、常见的距离度量方法有哪些&#xff1f;写一下距离计算公式。 1&#xff09;连续数据的距离计算&#xff1a; 闵可夫斯基距离家族&#xff1a; 当p 1时&#xff0c;为曼哈顿距离&#xff1b;p 2时&#xff0c;为欧…...

FireFox禁用HTTP2

问题 最近需要调试接口&#xff0c;但是&#xff0c;Chrome都是强制使用h2协议&#xff0c;即HTTP/2协议。为了排除h2协议排除对接口调用的影响&#xff0c;需要强制浏览器使用HTTP1协议。 解决 FireFox 设置firefox的network.http.http2.enabled为禁用&#xff0c;这样就禁…...

搭建HTTPS服务器

HTTPS代理服务器的作用与价值 HTTPS代理服务器可以帮助我们实现网络流量的转发和加密&#xff0c;提高网络安全性和隐私保护。本文将指导您从零开始搭建自己的HTTPS代理服务器&#xff0c;让您更自由、安全地访问互联网。 1. 准备工作&#xff1a;选择服务器与操作系统 a. 选…...

无人化在线静电监控系统的组成

无人化在线静电监控系统是一种用于检测和监控静电情况的系统&#xff0c;它可以自动地实时监测各个区域的静电水平&#xff0c;并在出现异常情况时发出报警信号。静电监控报警器则是该系统中的一个重要组成部分&#xff0c;用于接收和传达报警信号。 无人化在线静电监控系统通…...

element ui级联选择器数据处理

后端同事返回的级联选择器数据的children是childrens&#xff0c;而组件渲染只识别children&#xff0c;所以需要props自定义传入&#xff0c;代码如下 <el-form-item label"应用页面&#xff1a;" prop"appId"><el-cascader:props"{ child…...

zookeeper-3.6.4集群搭建

1、上传zookeeper安装包并解压 上传路径&#xff1a;/opt/software/ 解压路径&#xff1a;/opt/module/ 2、创建数据目录及日志目录 #数据目录&#xff1a;/data/zookeeper/data/ #3台机器创建存储目录&#xff1a; sudo mkdir -p /data/zookeeper/data#日志目录&#xff1a…...

15种下载文件的方法文件下载方法汇总超大文件下载

15种下载文件的方法&文件下载方法汇总&超大文件下载 15种下载文件的方法Pentesters经常将文件上传到受感染的盒子以帮助进行权限提升&#xff0c;或者保持在计算机上的存在。本博客将介绍将文件从您的计算机移动到受感染系统的15种不同方法。对于那些在盒子上存在且需要…...

Windows安装配置Rust(附CLion配置与运行)

Windows安装配置Rust&#xff08;附CLion配置与运行&#xff09; 前言一、下载二、安装三、配置标准库&#xff01;&#xff01;&#xff01;四、使用 CLion 运行 rust1、新建rust项目2、配置运行环境3、运行 前言 本文以 windows 安装为例&#xff0c;配置编译器为 minGW&…...

【ROS】例说mapserver静态地图参数(对照Rviz、Gazebo环境)

文章目录 例说mapserver静态地图参数1. Rviz中显示的地图2. mapserver保存地图详解3. 补充实验 例说mapserver静态地图参数 1. Rviz中显示的地图 在建图过程中&#xff0c;rviz会显示建图的实时情况&#xff0c;其输出来自于SLAM&#xff0c;浅蓝色区域为地图大小&#xff0c…...

【RapidAI】P0 项目总览

RapidAI 项目总览 ** 内容介绍 ** Author&#xff1a; SWHL、omahs Github&#xff1a; https://github.com/RapidAI/Knowledge-QA-LLM/ CSDN Author&#xff1a; 脚踏实地的大梦想家 UI Demo&#xff1a; ** 读者须知 ** 本系列博文&#xff0c;主要内容为将 RapidAI 项目逐…...

初识c++

文章目录 前言一、C命名空间1、命名空间2、命名空间定义 二、第一个c程序1、c的hello world2、std命名空间的使用惯例 三、C输入&输出1、c输入&输出 四、c中缺省参数1、缺省参数概念2、缺省参数分类3、缺省参数应用 五、c中函数重载1、函数重载概念2、函数重载应用 六、…...

【面试经典150题】跳跃游戏Ⅱ

题目链接 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 nums[n…...

20230831-完成登录框的按钮操作,并在登录成功后进行界面跳转

登录框的按钮操作&#xff0c;并在登录成功后进行界面跳转 app.cpp #include "app.h" #include <cstdio> #include <QDebug> #include <QLineEdit> #include <QLabel> #include <QPainter> #include <QString> #include <Q…...

039 - sql逻辑操作符

前提&#xff1a; 做两个表employee和movie&#xff0c;用来练习使用&#xff1b; 表一&#xff1a;employee -- 创建表employee CREATE TABLE IF NOT EXISTS employee(id INT NOT NULL AUTO_INCREMENT,first_name VARCHAR(100) NOT NULL,last_name VARCHAR(100) NOT NULL,t…...

DbLInk使用

DbLInk介绍 DbLink是一种数据库连接技术&#xff0c;在不同的数据库之间进行数据传输和共享。它提供了一种透明的方法&#xff0c;让一个数据库访问另一个数据库的数据。 DbLink的优点是可以在多个数据库间实现数据共享&#xff0c;并且为不同数据库间的数据访问提供了便捷的…...

2.3 Vector 动态数组(迭代器)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组&#xff08;模板语法&#xff09; 本文目标 1 熟悉迭代器设计模式&#xff1b; 2 实现数组的迭代器&#xff1b; 3 基于迭代器的容器遍历&#xff1b; 迭代器语法介绍 对迭…...

【ES6】Proxy的高级用法,实现一个生成各种 DOM 节点的通用函数dom

下面的例子则是利用get拦截&#xff0c;实现一个生成各种 DOM 节点的通用函数dom。 <body> </body><script>const dom new Proxy({}, {get(target, property) {return function(attrs {}, ...children) {const el document.createElement(property);for …...

气象站是什么设备?功能是什么?

气象站是一种用于测量和记录气象数据的设备。它通常是由各种传感器及其数据传输设备、固定设备和供电设备组成&#xff0c;可以测量风速、风向、温度、湿度、气压、降水量等气象要素&#xff0c;并将这些数据记录下来&#xff0c;以便进一步分析和研究。 气象站通常设置在广阔…...