浏览器网络之TCP与UDP

news2025/3/11 0:08:36

文章目录

  • 网络模型
  • TCP协议
    • 建立连接——三次握手
    • 断开连接——四次挥手
    • 为什么要三次握手与四次挥手
  • 不常使用的协议——UDP
    • TCP与UDP的区别
    • UDP的使用场景
  • 总结


网络模型

在理解TCP与UDP 之前,首先需要对网络结构有一些基本的认识,在互联网发展的初期,国际标准化组织提出了两种最受认可的网络架构模型:OSI模型TCP/IP 模型,其中,TCP与UDP同位于传输层
在计算机通过DNS解析获取到目标服务器IP后,需要通过传输层建立端到端的连接,最常用的协议就是TCP协议与UDP协议。

在这里插入图片描述

TCP协议

建立连接——三次握手

在三次握手建立连接的过程中,有两个概念需要了解

SYN 报文: 起标识作用,SYN = 1就表示这是一个连接请求或连接接受报文。

  • 客户端进行连接请求时,SYN=1 而 ACK=0。
  • 服务端同意建立连接,则响应报文中SYN=1,ACK=1. 。

ACK 报文: TCP协议规定,只有ACK=1时有效,且连接建立后所有发送的报文的ACK必须为1。

建立连接过程如下
在这里插入图片描述

  • 1 由客户端发出请求连接,报文情况是: SYN=1,ACK=0,seq=t。
  • 2 SYN=1时不能携带数据,但要消耗一个序号,所以和 SYN 一起抵达战场的还有一个记录序号的 seq,其值为 k。
  • 3 然后服务端进行回复确认,报文内容是:SYN=1,ACK=1,同时还有服务端为自己初始化的序号 seq=k, 以及确认号 ack=t+1,
  • 4 客户端再进行一次确认,这一步用不到 SYN 了,报文内容是:ACK=1, ack=k+1。

断开连接——四次挥手

在断开连接时,出现了一个新的报文: FIN 报文,它用来释放一个连接。 FIN=1 时,就表示此报文段的发送方的数据已经发送完毕,请求释放运输连接

在这里插入图片描述

  • 1 客户端就会向服务端抛出一个 FIN=1 报文以及序列号 seq=x。
  • 2 服务器接收到报文回复了一个 ACK=1 的标识以示确认,还有确认码 ack=x+1 以及序列号 seq=y。
  • 3 服务器继续向客户端抛出一个 FIN=1 报文,请求断开连接。
  • 4 客户端收到了服务端的报文,向服务端抛出一个 ACK=1 的报文。

为什么要三次握手与四次挥手

TCP连接是全双工协议,就是说双方都可以同时向对方发送或接收数据

  • 建立请求时

通过三次握手,客户端经历了一次请求和一次响应,服务端也经历了一次请求和一次响应,通过三次握手,确认了当前网络状态可以进行连接又确认了目标对象能够响应消息、确。在这样安全、稳定的前提下,两台计算机之间才可以建立起 TCP 连接

  • 断开请求时

当客户端第一次发送请求给服务端时,只能确认自己没有数据要传输给服务器了,但并不能确认服务器是否还有数据要发送

服务端第一次回复客户端时,表示服务端已经收到了客户端的断开请求,但是可能还有数据正在传输中,因此,在确认全部数据都传输完成后,服务端会再一次发送报文给客户端

客户端收到服务端第二次的报文后,为了保证数据安全,会再向服务端发送一次报文,服务端收到后得知客户端已经知道断开连接的消息,才正式断开连接,而客户端在一段时间内若没有在收到服务端任何消息时,自动关闭连接

不常使用的协议——UDP

TCP与UDP的区别

  • TCP 协议下,连接的建立需要三次握手,确保双方能够确实建立起稳定的传输通道。断开连接时需要四次挥手,确保双方数据安全完整。因此,TCP 又被称为面向连接的可靠传输

  • UDP 协议下,数据想发就发,想断就断。没有复杂的三次握手或者四次挥手,UDP 又被称为无连接的不可靠传输

UDP的使用场景

UDP既然不那么安全,也就让它具备了更强的灵活性,常用于一些实时性要求高,安全性要求相对较低的场景,如:

  • 实时应用程序:视频会议、在线游戏、语音聊天
  • 在线直播、网络电话
  • 快速传输少量数据,如DNS 服务

总结

网络模型

TCP协议

  • 建立连接——三次握手
  • 断开连接——四次挥手
  • 为什么要三次握手与四次挥手

不常使用的协议——UDP

  • TCP与UDP的区别
  • UDP的使用场景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433432.html

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

相关文章

【golang学习笔记】——(二)配置golang vscode开发环境

本次学习采用vscode进行开发,vscode有比较成熟的插件,使用起来比较方便。 一、插件下载 搜索“Go”,第一个插件即为go的开发插件,进行安装即可。 二、go辅助插件下载 使用快捷键:CtrlShiftP 输入Go:Install/Update T…

SpringCloud之组件Hystrix简介

服务雪崩介绍 服务提供者不可用导致服务调用者也跟着不可用,以此类推引起整个链路中的所有微服务都不可用, 服务提供者A因为某种原因出现故障,那么服务调用者服务B依赖于服务A的请求便无法成功调用其提供的接口,假以时日依赖于服务…

电子表格软件能解决什么问题?

在当下的时代,全球经济非常活跃,对于企业来说,经营的成果需要“用数字说话”——以数字来反映经营管理的的状况,这些都离不开报表,可以说报表的需求是无处不在的。 在企业所有的科技类项目中报表是最基本的功能。作为…

第二章:uniapp整合axios之真机测试两问题

第二章:uniapp整合axios之真机测试两问题 上一章节,笔者编写了uniapp整合axios并实现前后端跨域请求的方案,完成了这些基本配置后,在浏览器端的测试基本是可以完成了,但是当笔者将程序运行到手机时,却出现…

4个 Python 库来美化你的 Matplotlib 图表

Matplotlib是一个被广泛使用的Python数据可视化库,相信很多人都使用过。 但是有时候总会觉得,Matplotlib做出来的图表不是很好看、不美观。 今天我就给大家分享四个美化Matplotlib图表的Python库,它们可以轻松让你的Matplotlib图表变得好看…

fastjson 反序列化之mysql JDBC 利用

前言: 在打春秋云境Exchange 靶场时,入口点是华夏ERP 2.3版本系统,存在fastjson 反序列化漏洞,在尝试常见的fastjson利用链反弹shell都没有反应,最终使用mysql JDBC利用链反弹shell成功。在此记录一下。 复现本地靶场…

QT安装mysql驱动和使用ODBC连接mysql

文章目录 QT安装mysql驱动和使用ODBC连接mysql使用驱动连接mysql编译mysql驱动连接mysql 使用ODBC连接mysql QT安装mysql驱动和使用ODBC连接mysql 上一篇博文中提到了mysql的使用,但是很多人在使用新版Qt连接mysql的时候出现连接不上或者是没有mysql驱动的问题&…

不懂就问,Milvus 新上线的资源组功能到底怎么样?

在近期更新的 Milvus 2.x 版本中,我们上线了在社区中呼声一直很高的【资源组功能】。有了这个功能,用户再也不需要“为每个 collection 部署一套 Milvus 服务”的方案,轻松实现对 Query Node 资源进行分组管理,达到物理资源隔离的…

【C++】STL中的容器适配器 stack queue 和 priority_queue 的模拟实现

STL中的容器适配器 一、容器适配器1、什么是容器适配器2、STL标准库中的容器适配器 二、stack的模拟实现1、stack的简单介绍2、栈的模拟实现 三、queue的模拟实现1、queue的简单介绍2、queue的模拟实现 四、priority_queue的模拟实现1、priority_queue的简单介绍2、priority_qu…

家用洗地机哪款好用?好用的洗地机分享

要说现在家居清洁用什么单品更省心,洗地机必须要算一项。虽然这在国际上也不是什么新鲜的概念了,但是在国内兴起也只是这几年的事,关于家用洗地机什么牌子最好之类的问题也是很多人都比较关心的问题。我个人也是不喜欢做家务的,家…

Anaconda及其他说明及安装

来自神秘人的投稿! 以下内容来源于官方视频说明:Anaconda Distribution versus Miniconda和其他整理与添加。 一、基础信息了解 1. 什么是Anaconda Anaconda Distribution:形象的比喻——一台笔记本电脑,一切都组装好了&#x…

利用用户生成内容来促进您的 WooCommerce 商店的销售

用户生成内容 (UGC) 是由对品牌或其产品和服务进行评论或评论的消费者创建的内容。它可以包括评论、照片、博客文章、推文或任何类型的社交媒体内容。 UGC 可以应品牌要求制作,也可以由产品用户独立制作。当用户生成的内容是独立制作的时候——比如一个新布加迪手…

UG NX二次开发(C#)-建模-移除特征参数

文章目录 1、前言2、在UG NX中的操作3、 利用UFun函数实现1、前言 UG NX建模方式是采用特征建模的,创建一个对象都是一个特征,这在历史记录中可以查看特征的建模历史、特征的参数已经特征之间的关联关系。有时为了设计的需要,需要去除特征之间的关联关系,那么就要移除特征…

【硬件外设使用】——ADC

【硬件外设使用】——ADC ADC基本概念ADC使用方法pyb.adcmachine.adc ADC可用的传感器 ADC基本概念 ADC是模拟数字转换器(Analog-to-Digital Converter)的缩写,它是一种将模拟信号转换成数字信号的电子元件。 ADC广泛用于测量和监测领域&…

sggJava基础第四天

1 分支结构 分支结构 根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。 概述 顺序结构的程序虽然能解决计算、输出等问题 但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构 if…else形式 单分支结构 代码实现 …

leetcode160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

把脉分布式事务的模型、协议和方案

在当前的技术发展阶段,不同的业务场景对一致性、可靠性、易用性、性能等要求不同,应用架构可以根据实际场景的需求,灵活选择合适的分布式事务解决方案。行业中把分布式事务解决方案分为刚性事务方案和柔性事务方案这两大类。 就刚性事务这个…

leetcode328. 奇偶链表

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组内部的相…

CentOS 7安装GitLab、创建用户、创建Repo、拉取推送

效果图 前言 gitlab全球出名,包含免费的社区版CE、收费的企业版EE,在国内安装速度一般; gitlab极狐版是中国特供版,用起来就跟CE一样,推荐国内使用~ 实现步骤 - 安装&配置 先准备好gitlab服务对外的访问地址&am…

技术分享 | MySQL级联复制下进行大表的字段扩容

作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生开源社区出品,…