TCP为什么是四次挥手

TCP 3次握手

客户端向服务器发送一个SYN(包含了SYN,SEQ)。

当服务器接收到客户端发过来的SYN时,会向客户端发送一个SYN+ACK的数据包,其实ACK的ack等于上一次发送SYN数据包的(SYN+SEQ)。

当客户端接收到服务器发送过来的SYN+ACK数据包时,当接收到后向服务器发送ACK的数据包,此时ACK数据包中的ack值等于上一次SYN中的seq+syn。

当服务器收到了客户端的发送过来的ACK数据包时,确认无误后,向客户端发送数据。

为什么要3次握手

防止已过期的连接请求报文突然又传送到服务器,因而产生错误。

Client发生一个请求连接报文可能因为网络延迟等原因,没有送达到server中。但是当这个client的请求报文送达到server时,如果没有三次握手的话,server就会直接发数据可client,这样会导致server资源的浪费。

解决“网络中存在延迟的重复分组”的问题

在不可靠信道上可靠地传输信息

因为TCP是一个可靠的协议,但是IP是一个不可靠的协议,利用TCP使IP传输过程变得可靠。这样的话,如果发生丢包,传输顺序出错等问题,TCP协议都可以解决。为了满足不可靠信息在可靠的传输信息。

那就是可以这样说,确认c/s是不是相应的服务都准备好了,只有通过了3次握手才能直接传输数据并且满足了数据可靠性的传输。

http://www.cnblogs.com/xpress/

 

 

TCP 4次挥手

先由客户端向服务器端发送一个FIN,请求关闭数据传输。

当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ

然后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。

当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ

为什么要4次挥手?

确保数据能够完成传输。

但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

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

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

相关文章

TCP的三次握手和四次挥手详解

为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。…

zabbix server is not running the information displayed may not be current

页面报错如下 查看日志提示 30037:20190710:193016.878 cannot start alert manager service: Cannot bind socket to "/var/run/zabbix/zabbix_server_alerter.sock": [13] Permission denied.30039:20190710:193016.879 server #30 started [preprocessing manage…

VS2010项目配置详解

首先看一下项目设置中可以使用的宏(环境变量),常用的有: ConfigurationName 配置名字,通常是Debug或者Release IntDir 编译器使用的中间目录,产出obj文件 OutDir 链接器使用的输出目录 ProjectDir 项目目录…

Centos7 下 zabbix服务安装与部署,linux监控服务

客户端安装参考:https://mp.csdn.net/postedit/95475740 安装Zabbix 关闭 SeLinux 临时关闭 setenforce 0 永久关闭 vi /etc/selinux/config 关闭防火墙 临时关闭 systemctl stop firewalld.service 永久关闭 systemctl disable firewalld.service安装基础环…

Zabbix 安装agent

服务端安装参考:https://datamining.blog.csdn.net/article/details/95362947 安装前首先添加对应的yum repository rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm yum install -y zabbix-agent 修改配置文件 …

Bootstrap 导入js文件,浏览器找不到文件问题

html导入文件是用href属性来导入,js利用src属性导入,都可以用相对路径来导入文件,只要确保相对路径正确不会找不到。 绝对路径:是从盘符开始的路径,形如C:\windo绝对路径:是从盘符开始的路径,形…

windows 安装 zabbix agent 客户端

下载window客户端 https://assets.zabbix.com/downloads/3.4.0/zabbix_agents_3.4.0.win.zip 在C盘建立目录 C:/zabbix ,并解压下载文件 修改配置参数 LogFilec:\zabbix\zabbix.log Server服务端ip ServerActive服务端ip Hostnameinstance-2c7t7v(右…

Spark-shell 脚本批量执行命令,命令行批量执行命令

spark-shell 执行脚本&#xff0c;批量执行命令 #!/bin/bashsource /etc/profileexec spark-shell --name spark-sql-test --executor-cores 8 --executor-memory 8g --num-executors 1 --conf spark.cleaner.ttl240000 <<!EOF var startTime System.currentTimeM…

TCP滑动窗口机制

TCP通过滑动窗口机制检测丢包&#xff0c;并在丢包发生时调整数据传输速率。滑动窗口机制利用数据接收端的接收窗口来控制数据流。 接收窗口值由数据接收端指定&#xff0c;以字节数形式存储于TCP报文头&#xff0c;并告知传输设备有多少数据将会存储在TCP缓冲区。缓冲区就是数…

CDH中文文档下载,Cloudera中文手册,CM中文文档

CDH中文文档下载 链接&#xff1a;https://pan.baidu.com/s/1G-8WCafpPZ3p7ZDeXLcgug 提取码&#xff1a;ubxz

运行第一个node.js文件

安装node.js 链接:https://nodejs.org/en/ 选择downloads 再选择对应的版本&#xff0c;Windows Installer (.msi)&#xff1a;表示需要安装后才能运行node.js文件,安装完后在(cmd)控制台输入node -v查看版本&#xff0c;不用配置环境安装完成后自动配置。Windows Binary (.zip…

phoenix-sqlline 连接失败

报错如下 [rootxxx bin]# phoenix-sqlline.py xxx.xxx.xxx:2181:/hbase Traceback (most recent call last):File "/opt/cloudera/parcels/APACHE_PHOENIX-4.14.0-cdh5.13.2.p0.3/bin/../lib/phoenix/bin/sqlline.py", line 25, in <module>import phoenix_ut…

几个重要库函数的实现

面试官很喜欢让求职者写一些常用库函数的实现&#xff0c;有很多是和字符串相关的&#xff0c;有一些是关于内存拷贝的。一般&#xff0c;常会让写的函数有以下几个&#xff1a; strcpy &#xff0c; strncpy&#xff0c; memcpy。 memset一般不会让去写&#xff0c;但这个函数…

CDH 5.13.0 集成 Phoenix

1.下载Phoenix http://phoenix.apache.org/download.html 找到对应版本 点击parcels (cdh可安装版本) http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.13.2/parcels/ 下载好这三个文件 -rw-r--r-- 1 root root 364830720 7月 26 16:15 APACHE_PHOENIX-…

Phoenix 关联hbase表历史数据

Phoenix 基本使用 进入Phoenix phoenix-sqlline.py 10.248.161.18:2181:/hbase 或者进入目录下执行 cd /opt/cloudera/parcels/APACHE_PHOENIX/bin 关联Hbase原有表 创建Hbase表&#xff0c;列簇为 cf1 , cf2 create phoenix_hbase_test,cf1,cf2 插入测试数据 put phoenix…

Phoenix 关联映射 Hbase表 获取不到数据,upsert hbase 列名为16进制字符

创建Hbase表 create phoenix_hbase_test,cf1,cf2 put phoenix_hbase_test, key1,cf1:name,zhangsan put phoenix_hbase_test, key1,cf2:age,18 put phoenix_hbase_test, key2,cf1:name,lisi put phoenix_hbase_test, key2,cf2:age,26 put phoenix_hbase_test, key3,cf1:name,c…

node.js模块和包

概念&#xff1a;模块(Module)和包(Package)是Node.js最重要的支柱。开发一个具有一定规模的程序不可能只用一个文件&#xff0c;通常需要把各个功能拆分、分装、然后组合起来。模块正式为了实现这种方式而诞生&#xff0c;在浏览器JavaScript中&#xff0c;脚本模块的拆分和组…

Ensure that config phoenix.schema.isNamespaceMappingEnabled is consistent on client and server

Phoenix链接异常&#xff0c;报错如下 0: jdbc:phoenix:xxx:2181:/hbase> Error: ERROR 726 (43M10): Inconsistent namespace mapping properties. Ensure that config phoenix.schema.isNamespaceMappingEnabled is consistent on client and server. (state43M10,code7…

Phoenix 关联查询异常 , MaxServerCacheSizeExceededException phoenix.query.maxServerCacheBytes

参数配置说明&#xff1a;http://phoenix.apache.org/tuning.html Join&#xff1a;http://phoenix.apache.org/joins.html 从设计角度来讲&#xff0c;尽可能的不使用phoenix进行关联查询&#xff0c;速度比直接根据条件查询慢很多很多 测试关联&#xff0c;异常如下 Error:…

Phoenix 原理 以及 Phoenix在HBase中的应用

一、前言 业务使用HBase已经有一段时间了&#xff0c;期间也反馈了很多问题&#xff0c;其中反馈最多的是HBase是否支持SQL查询和二级索引&#xff0c;由于HBase在这两块上目前暂不支持&#xff0c;导致业务在使用时无法更好的利用现有的经验来查询HBase。虽然HBase本身不支持…