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报文多数情况下都是分开发送的。

TCP为什么是四次挥手相关推荐

  1. TCP连接的四次挥手全过程

    TCP通过四次挥手来释放连接 四次挥手的过程如下: 第一次挥手: 客户端向服务器发送一个 FIN 数据包(FIN = 1,seq = u)主动断开连接,报文中会指定一个序列号. 告诉服务器:我要跟你断 ...

  2. TCP 三次握手、四手挥手,这样说你能明白吧!

    TCP协议全称为:Transmission Control Protocol,是一种面向链接.保证数据传输安全.可靠的数据传输协议.为了确保数据的可靠传输,不仅需要对发出的每个字节进行编号确认,还需要 ...

  3. 互联网协议 — TCP — (面向面向连接的)三次握手、四次挥手

    目录 文章目录 目录 TCP 的长连接与短连接 长连接的优势 抓包分析 建立 TCP 连接的三次握手 为什么要使用三次握手来保证数据传输的可靠性? 数据传输 断开 TCP 连接的四次挥手 为什么需要四 ...

  4. 第五章 运输层(UDP和TCP三次握手,四次挥手分析)

    序言   通过这章,可以知道其实三次握手和四次挥手其实真的好简单,通过这章的学习,我相信你也会同样的认为,以后在也不需要听到别人问三次握手的过程而自己一脸懵逼了,觉得人家好屌,其实也就是他懂你不懂,仅 ...

  5. 三次握手和四次挥手图解_详解 TCP 连接的“三次握手”与“四次挥手”

    作者 | AhuntSun 责编 | Elle TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概念 ...

  6. Wireshark验证TCP三次握手四次挥手

    本文介绍如何通过Wireshark抓包工具验证TCP的三次握手四次挥手过程. 首先本地起了一个tomcat服务器,跑了一个简单的基于SpringMVC的rest服务. 打开Wireshark,捕获指定 ...

  7. 详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

    作者 |  AhuntSun 责编 | Elle TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概 ...

  8. TCP三次握手与四次挥手的过程及原因

    一.TCP的连接建立--三次握手 1.最初两端的TCP进程都处于CLOSED(关闭)状态.A主动打开连接,B被动打开连接 2.B的TCP**服务器进程创建传输控制块TCB(Transmission C ...

  9. 单片机tcp异常处理_TCP三次握手、四次挥手出现意外情况时,为保证稳定,是如何处理的...

    一. 序 当我们聊到 TCP 协议的时候,聊的最多的就是三次握手与四次挥手.但是大部分资料和文章,写的都是正常的情况下的流程.但是你有没有想过,三次握手或者四次挥手时,如果发生异常了,是如何处理的?又 ...

最新文章

  1. 计算机网络的硬件连接图,路由器设置图和网络电缆连接图_计算机硬件和网络_IT /计算机_数据...
  2. Ubuntu Android Studio/IntelliJ IDEA 支持文件中文命名
  3. SAP Spartacus 代码提交的git message规范
  4. SpringCloudGateway静态路由配置
  5. 什么是大数据,怎么理解和应对大数据时代
  6. LiveCoding
  7. 谁给讲讲语音识别中的CTC方法的基本原理?
  8. PHP全文索引 讯搜xunsearch
  9. 485通讯接口与232接口的区别
  10. 微信小程序测试点分类和总结
  11. PDF格式怎么修改内容,怎么给PDF加页码
  12. robo3T-操作MongoDB数据库常用命令
  13. VTK 实现MinIP Activiz
  14. 大漠多账号循环登录任务自动切换模板大漠绑定后台绑定游戏
  15. 高数 极限存在、连续、有界、可积、可导/可微之间的关系
  16. 螣龙安科:迷宫勒索病毒——勒索受害者一年并且人数仍在增长
  17. 我是怎么看friends练口语的(转贴)
  18. 汽车金融的上半年:易鑫巨亏超10亿 灿谷逾期率同比大幅飙升
  19. linux kaiser补丁下载,kaiser凯撒
  20. 夫妻的缘分真的是命中注定的吗?

热门文章

  1. 搜索文献_如何有效地搜索及阅读文献
  2. c 程序中的注释相当于空白字符_Python专题 | (三)注释、变量与输出
  3. 302状态码_HTTP协议详解(基础概念 方法 状态码 首部 连接 Cookie 新特性 安全)
  4. python对比两个文件找出不同并显示_python difflib模块实现两个文件差异对比,并输出html格式。...
  5. 女生做产品经理好吗_女生天生就是产品经理,不服来战!
  6. 大顶堆删除最大值_C++|使用STL算法创建、调整、输出最大堆、最小堆
  7. python excel操作库,可能是全网最完整的 Python 操作 Excel库总结!
  8. HTML与cgi post传递与接收,CGI实例--表单GET与POST示例
  9. oracle百分之0.01就成了.01,遭遇ORA-01200错误的原因及解决方法
  10. kubernetes怎么读_每个 Kubernetes 应聘者应该知道的 5 个面试题 | Linux 中国