当前位置: 首页 > news >正文

TCP三次握手

TCP三次握手(Three-way Handshake)
 
  三次握手指的是建立一个TCP连接时,需要客户端和服务器总共发送3个包。其目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。在socket编程中,客户端执行connect()时,将触发三次握手。下图是三次握手过程:
 
TCP三次握手过程
 
第一次握手:
  客户端发送一个SYN包(SYN标志位置1,SYN序号X)到服务器,并进入SYN_SEND状态。
 
第二次握手:
  服务器收到SYN包,发送ACK+SYN包(SYN标志位置1,ACK标志位置1,ACK序号为X+1,SYN序号Y)到客户端,此时服务器 进入SYN_RECV状态。
 
 
第三次握手:
  客户端再次发送ACK+SYN包(SYN标志位置0,ACK标志位置1,ACK序号Y+1)。此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
 
  通过三次握手,客户端和服务器端建立起可靠的双工的连接。至于为什么需要进行三次握手才能建立起可靠的双工的连接,我们可以这样理解:
  第一次握手和第二次握手(也可以认为是第一次握手的SYN,第二次的ACK)是为了保证服务器端能够接受到客户端的信息并能够做出正确的应答;第二次握手和第三次握手(也可以认为是第二次握手的SYN,第三次的ACK)是为了保证客户端能够接受到服务器端的信息并能够正确的应答。
 
  附上TCP四次挥手结束连接图:
 

转载于:https://www.cnblogs.com/PursueFreedom/p/TCP.html

相关文章:

  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • Windows和Linux环境下Memcached安装与配置(转)
  • 如何给wordpress首页自动显示文章内容的第一个图片
  • Azure Automation (3) 定期将某个Azure订阅下的所有虚拟机开关机
  • haslayout
  • python练习程序(批量重命名)
  • 国标电表DLT645转MODBUS TCP协议转换器MRD-5021,工业设备,浪涌三级保护MRD
  • jquery 绑定省份和城市
  • 《高性能mysql》到手
  • hdu--1811--并查集拓扑排序好题
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • Python学习小组微信群公告页面
  • 栈的表示和实现
  • 抓取代理IP
  • Jquery Ajax时 error处理 之 parsererror
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [笔记] php常见简单功能及函数
  • css布局,左右固定中间自适应实现
  • EOS是什么
  • hadoop集群管理系统搭建规划说明
  • input实现文字超出省略号功能
  • iOS小技巧之UIImagePickerController实现头像选择
  • rabbitmq延迟消息示例
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 记一次和乔布斯合作最难忘的经历
  • 记一次删除Git记录中的大文件的过程
  • 简单实现一个textarea自适应高度
  • 什么是Javascript函数节流?
  • 一起参Ember.js讨论、问答社区。
  • ionic异常记录
  • Python 之网络式编程
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #1014 : Trie树
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (十三)Flask之特殊装饰器详解
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)编辑寄语:因为爱心,所以美丽
  • *** 2003
  • .bashrc在哪里,alias妙用
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core引入性能分析引导优化
  • .net 微服务 服务保护 自动重试 Polly
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET性能优化(文摘)
  • @RestControllerAdvice异常统一处理类失效原因
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [《百万宝贝》观后]To be or not to be?
  • [Angular 基础] - 数据绑定(databinding)
  • [C++提高编程](三):STL初识