1、三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。

初始状态:客户端处于 closed(关闭)状态,服务器处于 listen(监听) 状态。

第一次握手:客户端发送请求报文将 SYN = 1同步序列号和初始化序列号seq = x发送给服务端,发送完之后客户端处于SYN_Send状态。(验证了客户端的发送能力和服务端的接收能力)

第二次握手:服务端受到 SYN 请求报文之后,如果同意连接,会以自己的同步序列号SYN(服务端) = 1、初始化序列号 seq = y和确认序列号(期望下次收到的数据包)ack = x+ 1 以及确认号ACK = 1报文作为应答,服务器为SYN_Receive状态。

第三次握手: 客户端接收到服务端的 SYN + ACK之后,知道可以下次可以发送了下一序列的数据包 了,然后发送同步序列号 ack= y + 1和数据包的序列号 seq = x + 1以及确认号ACK = 1确认包作为 应答,客户端转为established状态。

2、第三次握手的时候,是可以携带数据的。但是,第一次、第二次握手 不可以携带数据。

这是因为:第一次握手不可以放数据,其中一个简单的原因就是会让服务器更加容易受到攻击了。而对于第三次的话,此时客户端已经处于 ESTABLISHED 状态。对于客户端来说,他已经建立起连接了,并且也已经知道服务器的接收、发送能力是正常的了,所以能携带数据也没啥毛病。

TCP连接时三次握手与是否携带数据相关推荐

  1. Tcp连接时三次握手的问题和思考

    我自己用通俗的话理解一下: 1.为什么建立连接时不用二次握手?而要三次 客户端和服务端在交流的过程种 客户端先向服务端请求建立连接,服务端收到后,服务端置为连接状态,发消息给客户端,客户端也连接,这就 ...

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

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

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

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

  4. 解析TCP连接之“三次握手”和“四次挥手”

    葡萄美酒夜光杯,欲饮琵琶马上催. 醉卧沙场君莫笑,古来征战几人回?----唐 · 王翰 · <凉州词> 前言 不管是面试别人还是被别人面试,有很大的可能会被问到TCP的"三次握手 ...

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

    详解 TCP 连接的"三次握手"与"四次挥手" 前言 TCP的三次握手(Three-Way Handshake) 1."三次握手"的详解 2 ...

  6. TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

    TCP 协议简介 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议的作用 互联网由一整套协议构成.TCP 只是其中的一层,有着自己的分工. (图片说明:TCP 是以太网协议和 I ...

  7. TCP连接,三次握手问题

    参考引用 Waking-up--github 面向信仰编程 一.为什么TCP建立连接需要三次握手 什么是连接:用于保证可靠性和流控制机制的数据,包括 Socket.序列号以及窗口大小. 首要原因:为了 ...

  8. 网络原理 | 传输层重点协议之TCP协议(TCP连接的三次握手与四次挥手、TCP的安全机制与效率机制)

    目录 TCP协议 安全机制 确认应答机制 超时重传机制 连接管理机制 三次握手 四次挥手 流量控制机制 ​编辑拥塞控制机制 效率机制 滑动窗口机制 延迟应答机制 捎带应答机制 TCP协议 · 传输层的 ...

  9. 为什么TCP连接要三次握手?

    TCP建立连接为什么不是两次握手?&TCP建立连接为什么是三次握手?(这两个问题的答案是一样的) 因为网络层是不可靠的.双方在通信的时候,就算是 TCP 连接,在网络层都有可能丢包,只不过是传 ...

最新文章

  1. 微信确认出Bug,目前已全部恢复
  2. file.delete删除不了文件_如何解决C盘莫名出现的msdia80.dll文件
  3. 如何下载咸鱼app里面的视频
  4. MySQL FLOAT、DOUBLE、DECIMAL(小数类型)
  5. Tcpdump抓包工具的使用
  6. 关于asp.net 中 cookies 的清空
  7. pyQT实现自动找茬游戏
  8. 利用辗转相除法求两个数的最大公约数
  9. 通过PreparedStatement执行更新查询操作
  10. 函数默认参数的TDZ
  11. Python-----函数详解(上篇)(附小项目实战)
  12. 通过 TokenType(){}.getType()获取Persionlt;Tgt; 泛型T的类型和数值
  13. Java中数组的定义和使用
  14. linux日志查看/项目日志查看/监控日志
  15. R语言package安装显示(as ‘lib’ is unspecified)并出现未知路径
  16. OpenAirInterface OAI 学生讨论QQ群
  17. 游戏修改器制作教程一:键盘鼠标模拟
  18. 06_JavaScript数据结构与算法(六)单向链表
  19. bat批处理命令以管理员权限执行powershell命令
  20. spring referrence 阅读

热门文章

  1. java 自然常数e中出现的连续的第一个10个数字组成的质数,一道google面试题--自然数e中出现的连续的第一个10个数字组成的质数...
  2. ai前世识别_AI人脸识别前世今生
  3. 写行政区划数据方案设计系列有感
  4. 矮人DOS工具箱官方版
  5. java什么是抽象思维_什么是抽象思维,抽象思维有多重要
  6. IP地址分类及进制转换
  7. 在项目中用ts封装axios
  8. 互联网小白在网络上的成长。
  9. 山东大学服务开发技术期末复习
  10. 修改matlab fig,科学网—fig图片修改技巧 - 张坤的博文