目录

1.三次握手详情

2.为什么需要三次握手才能建立连接

3.首次握手的隐患---SYN超时的问题

4.建立连接之后,Client出现故障

四、TCP三次握手

1.三次握手详情

(1)一开始,客户端和服务器端都处于关闭状态(CLOSED),然后开启服务,服务端这个时候处于监听状态(LISTEN)。

(2)客户端发送一个连接请求报文,里面SYN等于1,seq可以使任意一个整数,标明这个报文段的序号。这个报文段不能传输数据。此时客户端进入同步状态(SYN-SENT)。

(3)服务端同意连接则发送一个报文段,里面SYN=1,ACK=1,seq=y,ack=x+1。大写字母是标志位ACK=1表示确认号(ack)有效,这里ack确认上一个服务器发送过来的seq为x的已经接受,确认下一个接收的编号为x+1,同时发送的报文段的序号为y。此时的报文段不能发送数据。服务端进入同步状态(SYN-RCVD)。

(4)客户端接收服务端报文段之后,回复一个报文段,里面ACK=1,seq=x+1,ack=y+1。ack确认服务器端的y编号的数据已经接受,请求ack=y+1的字段,此时客户端的报文段编号为x+1。此时可以发送数据,也可以不发送。客户端进入已建立连接状态(ESTAB-LISHED)。

(5)服务端接收之后进入已连接状态(ESTAB-LISHED)

2.为什么需要三次握手才能建立连接

  主要是初始化Sequence Number的初始值

3.首次握手的隐患---SYN超时的问题

  问题分析:Server收到Client的SYN,回复SYN-ACK的时候未收到ACK确认

  服务端解决方法:Server不断地重试直至超时,Linux系统中超时时间是63秒,即重试五次之后关闭连接1,2,4,8,16,32,第五次重试之后等待32秒后关闭。

  SYN Flood攻击:即不断的使服务端进入同步状态,使服务器的端口不可用,浪费掉

  解决方法:设置一个SYN队列,当SYN队列满了之后,服务器则会通过tcp_syncookies参数回发一个SYN Cookie,如果客户端连接正常则会回发SYN Cookie,直到建立连接

4.建立连接之后,Client出现故障

  连接具有保活机制,向对方发送保活探测报文,如果未收到响应则继续发送,常识次数达到保活探测数任未收到响应即终止连接。

计算机网络(四),TCP三次握手的更多相关文章

  1. 面试问题之计算机网络:TCP三次握手四次挥手

    转载于:https://www.cnblogs.com/Andya/p/7272462.html TCP三次握手: 起初A和B都处于CLOSED关闭状态 B创建TCB,处于LISTEN收听状态,等待A ...

  2. 从零开始学安全(四十四)●TCP三次握手四次挥手

    wireshark:Beyond Compare是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与 ...

  3. 计算机网络之tcp三次握手

    客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西:由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客 ...

  4. 关于 TCP 三次握手和四次挥手,满分回答在此

    尽人事,听天命.博主东南大学研究生在读,热爱健身和篮球,正在为两年后的秋招准备中,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 C ...

  5. TCP三次握手,数据传输,四次挥手

    TCP包结构 一个TCP包结构如下: 一个TCP包主要由TCP包头和数据部分组成,包头固定部分为20字节,选项和数据部分根据实际情况设置为4N(N可以为0)字节. 1.16bit源端口和目的端口号,它 ...

  6. 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制

    关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...

  7. 【linux】关于TCP三次握手和四次挥手

    1.TCP是什么 关于OSI的七层模型 TCP在第四层——Transport层,第四层的数据叫Segment->报文 IP在第三层——Network层,在第三层上的数据叫Packet->数 ...

  8. TCP三次握手四次断开

    今天被问到三次握手了,当时只是脑子里有印象,却忘了一些SYN细节,手动微笑. 这么下去还怎么混...赶紧复习个... 三次握手是什么? TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双 ...

  9. 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手

    .引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道“三次”和“四次”,但是如果问深入一点,他们往往都无法作出准确回答. 本篇文章尝试使用动画图片的方 ...

随机推荐

  1. Mysql binlog应用场景与原理深度剖析

    1 基于binlog的主从复制 Mysql 5.0以后,支持通过binary log(二进制日志)以支持主从复制.复制允许将来自一个MySQL数据库服务器(master) 的数据复制到一个或多个其他M ...

  2. 链表--笔记--数据结构(C++版)王红梅--自我思路整理与梳理

    看到这篇文的很多人大概都知道链表是个什么玩意了.简单说就是一个又一个的指针,指针之间用指针连接起来. 本文的阅读   适合有c++基础的人群 以下: 这叫做一个结点. 这就是一个链表.我们主要使用的是 ...

  3. yield浅析-Python3

    yield 浅析 先来一段代码: def fun1(): for i in range(5): yield i print("继续调用继续执行") gen1 = fun1() pr ...

  4. WordPress网站搬家数据迁移完整教程

    用本地环境搭建好的WordPress网站在做好之后如何从本地迁移到网络空间或者网络服务器上呢? 首先请确认你在本地建站的时候只做了themes里面的模版文件,如果只是自己改了下模版,那么网站在搬到服务 ...

  5. Java8 parallelStream浅析

    JAVA8中引入了lamda表达式和Stream接口.其丰富的API及强大的表达能力极大的简化代码,提升了效率,同时还通过parallelStream提供并发操作的支持,本文探讨parallelStr ...

  6. 埋在 MYSQL 数据库应用中的17个关键问题!

    Mysql的使用非常普遍,跟mysql有关的话题也非常多,如性能优化.高可用性.强一致性.安全.备份.集群.横向扩展.纵向扩展.负载均衡.读写分离等.要想掌握其中的精髓,可得花费不少功力,虽然目前流行 ...

  7. wex5 baasData规则和绑定 学习

    1 在baasData新建一个计算列 2 点击编辑规则,左边选择该计算列, 右边点击计算后面的设置 3 写规则的逻辑 好像不能用if 只能用三目运算符 4 绑定样式和文本的时候 这么用:

  8. yii的rules验证规则

    图片验证 public function rules() { return [ [['id'], 'integer'], [['id'], 'required'], [['files'], 'file ...

  9. Python的__hash__函数和__eq__函数

    Python的__hash__函数和__eq__函数 可哈希的集合(hashed collections),需要集合的元素实现了__eq__和__hash__,而这两个方法可以作一个形象的比喻: 哈希 ...

  10. 服务命令(systemctl的使用)

    常用的service与systemctl命令的对比 应用举例: ●start:开启服务 ●stop:停止服务 ●status:参数来查看服务运行情况 ●restart:重新加载服务 应用举例·: #启 ...