tcp和udp,通信协议

2023-11-18

1.什么是tcp和udp

        常用的网络通讯,浏览网页、软件聊天等等,都是基于tcp和udp传输的

2.tcp和udp的区别是什么?

1:最大的区别是一个基于连接、一个基于非连接

举例说明:如果把人与人之间的通信比喻为进程之间的通信,写信和电话

        TCP:传输数据稳定可靠,适用于对网络要求较高的场景,需要准确无误的传输给对方

                        如:传输文件、发送邮件、浏览网页等

        UDP:优点速度快,但是可能产生丢包等现象,适用于需要实时性较高,但对少量丢包没有影响的场景        

                        如:域名查询、语音通话、视频直播等

3:tcp如何保证连接

                三个关键步骤:

1.三次握手:是建立连接的过程

        1.1:客户端向服务端发起连接时,会先发一个连接请求数据,能否连接, 称为:SYN:发起一个新连接

        1.2:服务端同意连接,回复 SYN+ACK

        1.3:客户端收到回复 ACK ---> 确认序号的有效

                        经过三次握手客户端和服务端都进入数据传输状态。

1.4:为什么是三次握手,而不是两次握手?

                第二次发出请求时连接已成功,但是第一次发出的请求这个时候恢复了,这会造成服务端认为发出一次请求,客服端认为发出两次请求,这样服务端会在等待客户端回复,客户端认为一次请求自然不会回复,这就造成了服务器会一直携带这CPU等资源在等待,这就是为什么不能两次握手,第三次主要是为了防止已失效的请求报文段突然又传送到了服务端而产生连接的误判,第三次握手就是为了再不可靠的通信道路上建立可靠的连接。

2.传输确认

3.四次挥手

 

        处于连接的客户端和服务端都能发起关闭连接请求,需要四次挥手进行关闭。

        3.1:第一次挥手:假设客户端主动发起关闭连接请求,需要向服务端发起一个FIN,表示要关闭连接自己进入终止等待状态1

        3.2:第二次挥手:服务端回复ACK,表示自己进入关闭等待状态,客户端进入终止等待状态2,

        3.3:第三次挥手:在第二次挥手后,服务端此时还可以发送未发送完的数据,客户端还可以接收数据。服务端发送完数据,会向客户端发送一个FIN,进入最后确认状态

        3.4:第四次挥手:客户端收到FIN后,会回复ACK,进入超时等待状态,经过超时时间后会关闭连接,而服务端收到ACK后立即关闭连接。

        为什么客户端会有超时等待状态,是因为保证服务端收到ACK,如果客户端发送完ACK就释放连接,一旦ACK在网络中丢失,服务端将一直停留在最后的确认状态,如果客户端在发送ACK等一段时间,服务端没有收到ACK会重新发送FIN,客户端会重新响应重新发送ACK,并刷新超时时间,这也是为了确保在不可靠的网络中,让断开连接变的稳定。

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tcp和udp,通信协议 的相关文章

随机推荐

  • 编译SandBoxie-plus自动生成文件脚本

    首先添加moc exe所在目录的PATH环境变量 moc exe MiscHelpers Common CheckableMessageBox h o MiscHelpers Common moc CheckableMessageBox c
  • 【科普】波特率和比特速率的理解

    什么是波特率 单位时间内传输的码元个数称为波特率 单位为 Baud 那码元又是什么呢 码元又称为 符号 即 symbol 维基百科上对码元的解释 持续一段固定时间的通信信道有效状态就是码元 这么解释比较抽象 可以解释码元的物理意义 在通信信
  • win7下exe提示无法正常启动(0xc0000906)

    本人遇见是 avast问题 卸了
  • 【特征工程】特征创建(属性创建)

    特征创建也称属性创建 包括 特征提取 映射数据到新的空间 二次特征 特征构造 1 特征提取 肯定就生成新的特征 2 将数据映射到新的空间 扩维或降维 也会形成性的特征 3 二次特征 通过基础特征构造出新的特征
  • 《Python编程无师自通》读书笔记

    不能越界访问函数内部定义的变量 global不能乱用 啥时候用元组 join连接 小点 但第一次见会觉得蛮有意思 Hangman 10 1的案例蛮有意思的 一搜才发现是十分经典的文字游戏 过程式编程的缺点以及函数式编程和面向对象编程的解决方
  • c++标准异常类的继承实现

    出处来自百度 查来学习之用 AbnomalTest cpp 定义控制台应用程序的入口点 include StdAfx h include
  • Qt中绘制折线

    Qt中绘制折线 基本流程 三要素 场景 图表 序列 创建场景 创建图表 图表添加到场景 创建序列 序列添加到图表 创建坐标轴并设置 坐标轴添加到图表 序列 坐标轴 图表配合 序列设值 1 必要配置 pro文件 QT charts 头文件 i
  • 常见操作String的方法(字符查找,索引查找)

    常见操作String的方法 字符查找 索引查找 在给定的字符串中查找字符或字符串是比较常见的操作 字符串查找分为两种形式 一种是在字符串中获取匹配字符 串 的索引值 另一种是在字符串中获取指定索引位置的字符 根据字符查找indexOf la
  • 分析排查Hystrix熔断降级未能真正生效的问题

    1 现象 压测无法进入hystrix熔断处理 检查feign hystrix enabled是开启的 hystrix设定的最大并发连接为100 降级最大并发连接为50 hystrix command default execution is
  • 算法:双指针

    双指针 双指针是一种思想或一种技巧并不是特别具体的算法 具体就是用两个变量动态存储两个结点 来方便我们进行一些操作 通常用在线性的数据结构中 特别是链表类的题目 经常需要用到两个或多个指针配合来记忆链表上的节点 完成某些操作 常见的双指针方
  • HTML 标签

    浏览器支持 所有浏览器都支持
  • Java-基于SSM+JSP的医院挂号管理系统

    项目背景 随着科学技术的飞速发展 社会的方方面面 各行各业都在努力与现代的先进技术接轨 通过科技手段来提高自身的优势 医院预约挂号系统当然也不能排除在外 医院预约挂号系统是以实际运用为开发背景 运用软件工程开发方法 采用jsp技术构建的一个
  • python+selenium自动化测试框架详解,我就讲一遍!

    前言 本文整理归纳以往的工作中用到的东西 现汇总成基础测试框架提供分享 框架采用python3 selenium3 PO yaml ddt unittest等技术编写成基础测试框架 能适应日常测试工作需要 1 使用Page Object模式
  • Debian查询硬件状态

    很早以前写过一个查询树霉派硬件状态的文章 用是Python写的一个小程序 里面用到了vcgencmd这个测温度的内部命令 但这个命令在debian里面没有 debian里只有lm sensors的外部命令 需要安装 apt get inst
  • Linux 重启后ext文件系统Inode 625047 has illegal blocks异常

    情况描述 系统重启后 发现报错 dev VolGroup00 LogVol00 contains a file system with errors check forced inode 625047 has illegal block s
  • 2021-03-31

    智能风控中的全场景化的模型组合包括哪些内容 近期某些网贷的广告 频上热搜 近有某东 远有某60 相信在大家的WX朋友圈更有大量 精彩 广告诱惑各位提前消费 于目前的政策而言 当下网贷行业的监管已达到最顶峰 网贷再也回不到巅峰时刻 但与此同时
  • 传统的项目经理可以担当Scrum Master吗

    原文链接作者 Amir Nasiri 一个习惯了传统项目管理方法的项目经理 可以在敏捷组织里担当ScrumMaster吗 这是一个很有意思的问题 也是所有项目经理在有朝一日面对敏捷方法 比如Scrum 的时候需要思考的问题 敏捷在落地实施时
  • QGis 二次开发教程(目录)

    目录 QGis 二次开发搭建 windows QGis QgsVectorLayer 图层加载 shp file矢量图层 QGis QgsVectorLayer 图层数据解析 获取经纬度集合和其他字段标量 QGis QgsVectorLay
  • Keras+CNN模型识别手写数字(mnist)详细分析

    CNN模型 CNN卷积神经网络 包含卷积层 卷积运算提取输入的不同特征 更多层的网络能从低级特征中迭代提取等复杂的特征 线性整流层 RELU 池化层 卷积后会得到维度很大的特征 将特征切成几个区域 取最大值或平均值 得到新的较小维度特征 全
  • tcp和udp,通信协议

    1 什么是tcp和udp 常用的网络通讯 浏览网页 软件聊天等等 都是基于tcp和udp传输的 2 tcp和udp的区别是什么 1 最大的区别是一个基于连接 一个基于非连接 举例说明 如果把人与人之间的通信比喻为进程之间的通信 写信和电话