目录

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. SSH代理

    参考: http://www.dkys.org/archives/1111.html SSH的-L与-D代理 SSH有三种代理参数-L,-D,-R.-R代理不是本次重点,有兴趣的读者可以自行查阅man ...

  2. 2019icpc南昌邀请赛B Polynomial (拉格朗日插值法)

    题目链接:https://nanti.jisuanke.com/t/40254 题意: 思路: 这题要用到拉格朗日插值法,网上查了一下,找到一份讲得特别好的: -------------------- ...

  3. 牛客小白月赛14 -G (筛法)

    题目链接:https://ac.nowcoder.com/acm/contest/879/G 题意:给定A1和A数组公式: 以及B数组: 求 思路:利用筛法更新b数组,最后求异或和即可. AC代码: ...

  4. C++拷贝构造函数:浅拷贝与深拷贝

    在介绍C++浅拷贝与深拷贝之前,我们先引出C++的拷贝构造函数. C++拷贝构造函数是一种特殊的构造函数,其形参是本类对象的引用.用于在建立一个新的对象时,使用一个已经存在的对象来初始化这个新对象.因 ...

  5. jpa报错 Unable to acquire a connection from driver [null], user [null] and URL [null]

    jpa报错 Unable to acquire a connection from driver [null], user [null] and URL [null] 为啥报错 因为你在persist ...

  6. Android SDK安装与环境配置

    一.单独下载只有sdk的包,SDK不包括在Android Studio里,适用于不需要Android Studio的用户,其他可自行去官网下载. 1:Android SDK (https://www. ...

  7. 欧拉系统-登陆 SSH 出现 Access Denied 错误

    1./home 权限问题如果 /home 只支持 root 访问,那么不妨试一下 /tmp ,然后用 mv 命令再转移 2./etc/ssh/sshd_config 配置问题     vi  /etc ...

  8. 使用sublimeserver启动本地服务器进行调试

    最近在做前后端分离的项目,访问后台接口的时候会产生跨域问题,修改了相关配置解决了跨域问题,但是配置中只对开发环境进行了设置,没有设置生产环境,为了验证生产环境确实无法访问后台接口遂npm run bu ...

  9. ubuntu终端安装最新ss

    有时候因为加密方式比较新,比如aes-256-gcm,导致旧版本的不能用 一句命令安装ss最新版本 aes-256-gcm加密方式可以用,没毛病

  10. jq sku实现

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...