rstp协议和stp协议对比_3.TCP和UDP协议对比

TCP、UDP协议对比

任务:掌握TCP协议、UDP协议的作用;TCP的三次握手和四次挥手;RST断开连接过程和作用。

1.TCP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP在IP报文的协议号是6。

1.1 TCP的三次握手

三次握手的目的是连接服务器指定端口,建立TCP连接。三次握手过程可同步连接双方的序列号和确认号,并交换 TCP 窗口大小等。

0b75be1af4b4fac1611783a686d804b5.png

第一次握手:建立连接时,HostA发送SYN包(syn=0)到HostB,SYN位置1,并进入SYN_SENT状态,等待HostB确认;(SYN为同步序列编号)

第二次握手:HostB收到SYN包,必须确认客户的SYN(ack=0+1),同时自己也发送一个SYN包(syn=0),即SYN+ACK包,SYN为和ACK位置1,此时HostB进入SYN_RECV状态;

第三次握手:HostA收到HostB的SYN+ACK包,向HostB发送确认包ACK(ack=0+1),ACK位置1,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

1.2 TCP的四次挥手

四次挥手指的是TCP连接拆除时,要发四个包才能彻底断开连接。

6aa8be5a63755d5dfe0050023455fe46.png

1)HostA进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=101,此时HostA进入FIN-WAIT-1(终止等待1)状态。( TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。)

2)HostB收到连接释放报文,发出确认报文,ACK=1,ack=102,并且带上自己的序列号seq=301,此时HostB就进入了CLOSE-WAIT(关闭等待)状态。此时HostA已经没有数据要发送了,但是HostB若发送数据,HostA依然要接受。HostA收到HostB的确认请求后,HostA就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受HostB发送的最后的数据)。

3)HostB将最后的数据发送完毕后,就向HostA发送连接释放报文,FIN=1,ack=102,由于在半关闭状态,HostB很可能又发送了一些数据,假定此时的序列号为seq=301,此时HostB就进入了LAST-ACK(最后确认)状态,等待HostA的确认。

4)HostA收到HostB的连接释放报文后,HostA就进入了TIME-WAIT(时间等待)状态。此时TCP连接还没有释放,必须经过2个MSL(最长报文段寿命)的时间后,当HostA撤销相应的TCB(计算机内保护装置的总体)后,才进入CLOSED状态。而HostB只要收到了HostA发出的确认,立即进入CLOSED状态。

1.3 TCP的一些特性

面向字节流:即TCP将应用程序看成是一连串的无结构的字节流,并且可以拆分发送。

滑动窗口机制:窗口大小决定了在收到确认前可以发送的字节数,进行流量控制。

可靠传输:包括同步报文、确认机制和重传机制等。

拥塞控制:防止过多的数据注入到网络中,使路由器或链路过载。

1.4 RST标志位

RST表示复位,用来异常的关闭连接,发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。RST置位的原因:服务器端口没有打开;服务器响应太慢,用户终止连接;遭受网络攻击。

2.UDP协议

UDP 是User Datagram Protocol用户数据报协议,提供面向事物的、简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

2.1 UDP报文结构(头部8字节)

d0885f4dca86495a89960159dcdfe304.png

2.2UDP的一些特性

无连接:在传输数据之前,不需要进行复杂的三次握手来建立连接;传输结束后,也不用四次握手来结束连接。

不可靠:没有拥塞控制、重传机制。

面向报文:即应用层交给UDP多长的报文,UDP就照样发送,不进行拆分合并。

3. TCP和UDP的对比

b375b7b286ac870ed25d5055646218ea.png

TCP应用场景:效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。例如:文件传输(FTP、HTTP对数据准确性要求高,速度可以相对慢)、接受邮件(POP 、IMAP、 SMTP 对数据准确性要求高,非紧急应用)、远程登录(TELNET、 SSH 对数据准确性有一定要求,有连接的概念)等等。

UDP应用场景:效率要求相对高,对准确性要求相对低的场景。例如:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。

扫码关注我们

2f9aafbe6e66240d90f3d88df30c5096.png

图文|郑泽辉

排版|陈海心

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

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

相关文章

计算机组成原理-数据的表示和运算(图片资源摘自王道考研资料)

一、进位计数制 二、BCD码 此处: 58 0101 1000 1101 超出数据能表达的范围,因为 8421码只能表示0-9 十以上数据视为无效数据,因此在此基础上加六,进行校正--> 11010110 0001 0011 ----拆成两个看

lacp可以在access接口吗_现网必用的链路冗余技术,静态LACP链路捆绑,两分钟快速掌握...

一、链路聚合链路聚合(Link Aggregation)是将—组物理接口捆绑在一起作为一个逻辑接口来增加带宽的一种方法,又称为多接口负载均衡组(Load Sharing Group)或链路聚合组(Link Aggregation Group)1、配置手工负载分担模式链路聚合手工负载分担模式下,Eth-T…

Spring 集成web环境

Spring 集成web环境 一、配置ContextLoaderListener 监听器 1.maven坐标 org.springframework spring-web 5.3.14 2.web.xml <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</para…

一只青蛙跳向三个台阶_8. 跳台阶

一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。1. 思路&#xff1a;若只有一级台阶&#xff1a;一种跳法两级台阶&#xff1a;两种跳法(11 / 2)三级台阶&#xff1a;三种跳法(111 / 12 / 21)四级台阶&#xff1a;五种跳法…

spring 框架(一)

目录 一、spring简介 二、spring入门 三、spring配置文件 3.1.bean标签的基本配置(applicationContext.xml) 3.2Bean&#xff08;scope:指对象的作用范围&#xff09;标签范围配置 3.3 Bean生命周期配置 3.4 Bean实例化三种方式 3.5 Bean的依赖注入入门 3.6 Bean的依赖…

cdr添加节点快捷键_CDR快捷键分享,需要的赶紧收藏!

点击上方蓝字&#xff0c;关注我们哦&#xff01;&#xff01;有粉丝在后台留言说&#xff0c;希望我分享一下CDR的快捷键&#xff0c;今天我整理了一下快捷键。来源&#xff1a;内容整理自网络&#xff0c;仅供学习交流一工具箱I 绘制曲线&#xff0c;并对笔划使用预置、画刷、…

spring 框架(二)

目录 一、Spring配置数据源 1.1 数据源(连接池)的作用 1.2数据源的使用 1.3基本实现 1.4.抽取配置文件&#xff0c;降低耦合性(druid) 1.4.1抽取jdbc.properties文件 1.4.2设置数据源的基本连接数据&#xff0c;通过applicationContext.xml设置数据库参数applicationCon…

matplotlib 对称图_Python 绘图,我只用 Matplotlib

散点图散点图显示两组数据的值&#xff0c;如图1-1所示。每个点的坐标位置由变量的值决定&#xff0c;并由一组不连接的点完成&#xff0c;用于观察两种变量的相关性。例如&#xff0c;身高—体重、温度—维度。图1-1 散点图示例使用Matplotlib的scatter()函数绘制散点图&#…

spring框架(三)mvc

目录 1.1准备测试数据 1.2 ApplicationContext应用上下文获取方式 1.2.1添加listener包 1.2.2解耦配置文件 1.2.3 继续提取ContextLoaderListener.java中参数app 1.2.4 Spring提供获取应用上下文的工具 二、SpringMVC 2.1概述 2.2数据准备 2.3添加success.jsp页面 2.4 …

python判断字符串中包含某个字符串_干货分享| Python中最常用的字符串方法

字符串是字符序列。Python中内置的string类代表基于Unicode国际字符集的字符串。除了Python中常见的操作外,字符串还有一些专属于它们的附加方法。下图显示了所有这些可用的方法: Python中的内置字符串函数 在本文中,我们将学习一些最常用的方法。这里需要注意的重要一点是,…

spring (四) SpringMVC的请求和响应

目录 前言 一、SpringMVC的数据响应 1.1 SpringMVC的数据响应方式 1.1.1页面跳转 直接返回字符串 ​ 1.1.2通过ModelAndView对象返回 1.2 回写数据 1.2.1直接返回字符串 1.2.2返回对象或集合 二、SpringMVC获得请求数据 2.1 获得请求参数 2.2 获得基本类型…

拼接路径优雅方式_中年女人最好少穿马丁靴,简约的“无痕靴”更适合你,优雅高级...

女人在到了中年的时候&#xff0c;经过很多世事的沉淀&#xff0c;气质也会变得更加的淡定与从容。在穿搭上面&#xff0c;也不会喜欢像小姑娘那般的去盲目地追求潮流&#xff0c;跟风一些并不适合自己穿搭的服装&#xff0c;强行的装嫩的话&#xff0c;也会显得有些尴尬。中年…

spring框架(五)之JdbcTemplate基本使用

数据准备 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

spring框架(六)之拦截器

一. SpringMVC拦截器 1.1 拦截器(interceptor)的作用 Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter&#xff0c;用于对处理器进行预处理和后处理。 将拦截器按一定的顺序联结成一条链&#xff0c;这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方 法或…

取最大值_查找数组中最大值的5种方法!(动图演示)

我们在一些特定场景下&#xff0c;例如查询公司员工的最高薪资&#xff0c;以及班级的最高成绩又或者是面试中都会遇到查找最大值的问题&#xff0c;所以本文我们就来列举一下查询数组中最大值的 5 种方法。首先我们来看最原始也是最“笨”的实现方法&#xff1a;循环对比和递归…