TCP FLAG 位由6个 bit 组成,分别代表 ACK、 SYN、 FIN、 URG、 PSH 、RST ,都以置1 表示有效。我们重点关注 SYN, ACK FIN SYN ( Synchronize Sequence Numbers )用作建立连接时的同步信号 ACK ( Acknowledgement )用于对 收到的数据进行确认,所确认的数据由确认序列号表示; FIN ( Finish )表示后面没有 数据需要发送,通常意昧着所建立的连接需要关闭了。
        如下图,B机器是服务端角色, A机器是客户端角色,前者需要在后者发起连接建立请求时先打开某个端口等待数据传输,否则将无法正常建立连接。三次握手指的是建立连接的三个步骤:
1、A 机器发出一个数据包并将 SYN 置1,表示希望建立连接。这个包中的序列号假设是 x;
2、B 机器收到 机器发过来的数据包后,通过 SYN 得知这是一个建立连接的请求,于是发送一个响应包并将 SYN和 ACK 标记都置1 。假设这个包中的序列号是y ,而确认序列号必须是 x+l ,表示收到了 发过来的 SYN TCP 中, SYN 被当作数据部分的一个字节。
3、A 收到 的响应包后需进行确认,确认包中将 ACK 置1,并将确认序列号设置为 y+1 ,表示收到了来自 B的SYN。

这里为什么需要第3次握手?它有两个主要目的 :信息对等和防止超时。先从信息对等角度来看,如表 所示,双方只有确定4类信息 ,才能建立连接。在第2次握手后 ,从B机器视角看还有两个红色的NO信息无法确认。在第3 次握手后,B机器才能确认自己的发报能力和对方的收报能力是正常的。
三次握手确认的信息:

连接三次握手也是防止出现请求超时导致脏连接。TTL网络报文的生存时间往往都会超过TCP请求超时时间,如果两次握手就可以创建连接,传输数据并释放连接后,第一个超时的连接请求才到达B机器的话,B机器会以为是A创建新连接的请求,然后确认同意创建连接。因为A机器的状态不是SYN_SENT,所以直接丢弃了B的确认数据,以致最后只是B机器单方面创建连接完毕,简要示意图如图所示:

如果是三次握手,则B机器收到连接请求后,同样会向A机器确认同意创建连接,但因为A机器不是SYN_SENT状态,所以会直接丢弃,B机器由于长时间没有收到确认信息,最终超时导致连接创建失败,因而不会出现脏连接。

TCP三次握手(建立连接)相关推荐

  1. TCP三次握手建立连接的过程

    来源:TCP三次握手建立连接的过程 TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认.TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接. 下面详细讲解三次握手的过程 ...

  2. TCP三次握手建立连接

    一.三次握手的过程 TCP需要三次握手才能建立连接,整个过程如下图所示: 假设A运行的是TCP客户端进程,而B运行的是TCP服务端进程.最开始的时候两端的TCP进程都处于ClOSED(关闭)状态. 这 ...

  3. TCP三次握手建立连接和四次挥手关闭连接

    TCP三次握手 是指建立TCP连接协议时,需要在客户端和服务器之间发送三个包,握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据. 第一次握手:客户端发送第一个包,其中S ...

  4. Wireshark抓包示范:TCP三次握手建立连接和四次握手断开连接

    转载请标注: 披萨大叔的博客 http://blog.csdn.net/qq_27258799/article/details/51379508 如果您觉得这篇文章对您有帮助,请点下文章最下面的赞~ ...

  5. 43.TCP三次握手建立连接的过程

    TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认.TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接. 下面详细讲解三次握手的过程. 第 1 次握手 第 1 次握手建 ...

  6. TCP三次握手建立连接四次挥手断开连接

    仅用于做笔记,转载自https://blog.csdn.net/whuslei/article/details/6667471 首先Client端发送连接请求报文,Server段接受连接后回复ACK报 ...

  7. TCP的三次握手(建立连接)和四次挥手(关闭连接)

    随心所意 博客园  :: 首页  :: 新随笔  :: 联系  :: 订阅   :: 管理 posts - 437, comments - 52, trackbacks - 0 公告 昵称:higir ...

  8. TCP的三次握手建立连接和四次握手释放连接

    1.socket中TCP的三次握手建立连接详解 我们知道tcp建立连接要进行"三次握手",即交换三个分组.大致流程如下: 客户端向服务器发送一个SYN J 服务器向客户端响应一个S ...

  9. TCP网络编程-三次握手建立连接-四次挥手断开连接

    客户端与服务器进行TCP通信连接时,要进行三次握手建立连接. 客户端与服务器进行TCP断开连接时,要进行四次挥手断开连接.

  10. HTTP 三次握手  建立连接 和  四次握手断开连接

    三次握手建立连接  第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机: 第二次握手:主机B收到请求后要确认联 ...

最新文章

  1. 砸500万买学位房,一个焦虑中产的看房日记
  2. 设计模式05-建造者模式
  3. apache2 默认端口修改
  4. usb声卡驱动_iCON ProDrive第三代USB声卡驱动全新发布!
  5. android真实项目教程(三)——首页初点缀_by_CJJ
  6. pgsql merge方法
  7. Java基础知识整理之static修饰属性
  8. 正则表达式限制文本框内容
  9. Android 测试入门之---Monkey test
  10. 美化fedora字体
  11. Java学习需要多长时间?
  12. linux下用c语言写吃金豆,吃金豆pacmanTC版
  13. JavaCV的摄像头实战之一:基础
  14. 特征点的匹配正确衡量标准与量化
  15. 开发一个app需要多少钱、APP开发需要投入多少资金?
  16. 手把手带你实现 Docker 部署 Redis 集群
  17. 去哪儿PMO Head赵云:项目管理背后有哪些生存之道?
  18. 微信公众平台对接C#-普通消息接收
  19. 关于创建问卷调查类型,跳题顺延排序的实现
  20. 艺术摄影--数码单反相机的基本操作和使用(2学时)--SDUST

热门文章

  1. OPPO发布新机|无感验证护航“黄牛党”退退退!
  2. python爬虫:爬取某图外卖数据有这篇文章就够了
  3. microsoft 应用商店无法打开
  4. linux关闭virbr0网卡
  5. 计算机电源多低无法使用吗,电脑电源功率不足会怎么样 电脑电源功率不足坏处【图文】...
  6. 国自然函评专家都是哪些人?这些事千万别做
  7. Seata Configuration解析
  8. yolo定位识别法兰盘螺纹孔
  9. 我司人道的调岗与不人道的调岗
  10. echarts实现正三角漏斗图