精华内容
下载资源
问答
  • TCP连接管理

    2020-12-21 14:12:11
    TCP连接管理 TCP连接传输三个阶段:

    TCP连接管理

    TCP连接传输三个阶段:
    在这里插入图片描述
    TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器
    在这里插入图片描述
    TCP连接建立的过程中,要解决一下三个问题:

    1. 要使每一方都能确知对方的存在
    2. 要允许双方协商一些参数
    3. 能够对运输实体资源进行分配

    TCP连接的端口称为套接字(socket)或插口,端口拼接到IP地址即构成套接字。
    每条TCP连接唯一地被通信两端的两个端点确定。

    TCP的连接建立

    假设运行一台主机(客户)上的一个进程想与另一台(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户TCP,他想建立一个与服务器上某个进程之间的连接,客户中的TCP会用一下步骤与服务器中的TCP建立一条TCP连接:
    在这里插入图片描述
    三次握手:

    1. 客户端发送连接请求报文段,无应用层数据。首部中的SYN标志位置1,客户机会随机选择一个起始序号seq = x(连接请求报文不携带数据,但要消耗一个序号)SYN = 1,seq = x(随机)
    2. 服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。在确认报文段中,SYN和ACK置1,确认号字段值为x+1,并且服务器随机产生起始序号seq=y(确认报文不携带数据,但也要消耗一个序号)SYN = 1,ACK = 1,seq = y(随机),ack = x+1
    3. 客户端为该TCP连接分配缓存和变量,并向服务端返回确认的确认,可以携带数据。报文段ACK标志位被置1,序号字段为x+1,确认号字段ack = y+1。SYN = 0,ACK = 1,seq = x+1,ack = y+1

    SYN洪泛攻击

    SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发生TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样会浪费服务器资源,攻击者就对服务器发送大量这种TCP连接,由于每个都无法完成三次握手,所以在服务器上,这些TCP连接就会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。

    服务器资源是在完成第二次握手分配的,而客户端资源是在完成第三次握手时分配的,使得服务器易于受到SYN洪泛攻击。

    TCP的连接释放

    四次握手:TCP连接释放的过程,参与TCP连接的两个进程中任何一个都能终止该连接。
    在这里插入图片描述
    参与一套TCP连接的两个进程中的任何一个都能终止该连接,连接接收后,主机中的“资源“(缓存和变量)都将被释放。
    在这里插入图片描述

    1. 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。该报文段的FIN标志位被置1,seq = u,它等于前面已传送过的数据的最后一个字节的序号加1(FIN报文段即使不携带数据,也要消耗一个序号)。TCP是全双工的,即一条TCP连接上有两条数据通路。发送FIN报文时,发送FIN的一端不能再发送数据,即关闭其中一条数据通路,但对方还可以发送数据。FIN = 1,seq = u
    2. 服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了——半关闭状态。确认号是ack = u+1,这个报文段自己序号是v,等于它前面已传送过的数据的最后一个字节的序号加1。服务器若发送数据,客户机仍要接收,从服务器到客户机的连接未关闭。ACK = 1,seq = v,ack = u+1
    3. 服务器端发送完数据,就发出连接释放报文段,主动关闭TCP连接。发出FIN = 1的连接释放报文段。FIN = 1,ACK = 1,seq = w,ack = u+1
    4. 客户端回送一个确认报文段,再等时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。在确认报文段中,ACK字段置为1,确认号ack = w+1,序号seq = u+1。ACK = 1,seq = u+1,ack = w+1
    展开全文
  • TCP 连接管理

    2018-12-13 08:18:39
    TCP是面向连接的协议。运输连接是用来传输报文的。运输连接的建立和释放在每一次通信中是必不可少的内容。因此运输连接分为三个阶段:建立连接、传输数据和释放链接。运输管理就是保证每一步都能正常运行。 在TCP...

    概述

      TCP是面向连接的协议。运输连接是用来传输报文的。运输连接的建立和释放在每一次通信中是必不可少的内容。因此运输连接分为三个阶段:建立连接、传输数据和释放链接。运输管理就是保证每一步都能正常运行。

    在TCP 连接的建立过程主要解决三个问题:

    1. 要使每一方都能够知道对方的存在
    2. 要允许双方协商一些参数(如窗口最大值、是否使用窗口扩大选项和时间戳等)
    3. 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

    一、TCP 连接的建立

    在这里插入图片描述

    TCP 的连接建立,我们常常称为三次握手。

    A:您好,我是A。

    B:您好,我是B

    A:您好B。

    连接过程

    假设A 为客户端(上图左),B 为服务端(右)

    1. 一开始A、B 均为关闭状态。B先开启服务器,建立传输控制块TCB。准备接受连接请求,然后处于LISTEN 状态。等待用户连接请求并作出响应。

    TCB:(Transmission Control Block,存储了每一个连接中的一些重要信息,如:TCP 连接表,指向发送和接受缓存的指针,指向重传队列的指针,当前发送和接受序号等等)

    1. A 也是先创建连接控制模块TCB 。然后A 向B 发送请求报文段,这时首部中的同部位SYN = 1,同时选择一个初始序号 seq = x。TCP 规定,SYN 报文段不能携带数据,但要消耗掉一个序号。然后客户端进入SYN-SEND (同步已发送)状态。
    2. B 接受到A 的连接请求后,如果同意连接需要给S 发送确认。确认报文段ACK 置为1,确认号ack = x+1,同时选择一个自己的初始序号seq = y。请注意这个报文段也不能传输数据,但也要消耗一个序号。这是B 进入SYN-RCVD (同步收到)状态。
    3. A 收到B 的确认后,需要发送一个确认给B。确认报文段ACK 置为1,确认号ack = y + 1,而自己的序号seq = x + 1,。TCP 规定,ACk 报文段可以添加数据。但如果没有添加数据则不消耗序号。这时,TCP 连接已经建立,A 进入ESTABLISHED (已经建立连接)状态。
    4. B 收到 A 的确认也进入ESTABLISHED (已经建立连接)状态。

    为什么TCP 是三次握手?

    假设A B 只用两次握手就建立连接。

    当A 第一次发送给B 连接请求时,如果迟迟得不到回应,A会再次发送连接请求。那么现在网络中有两次请求,一般情况下第一次请求挂掉了,那么B 收到第二次请求,然后回应A,连接建立,没毛病。但是第一次请求可能只是滞后了,假设AB断开连接后,B 又收到了第一次请求,又会尝试建立连接,但是A 会觉得自己没有尝试建立连接,从而拒绝B。因为是两次握手,B 会以为自己已经建立连接了,等待A 发送数据,白白浪费资源。

    三次握手就不会出现这个问题,B 在发送确认后,得不到A 的确认,就会知道这是个过时的请求,知道A 没有要求建立连接。

    二、TCP 连接释放

    在这里插入图片描述
    好了,说完了连接,接下来说一说“拜拜”,好说好散。这常被称为四次挥手。

    A:B 啊,我不想玩了。

    B:哦,你不想玩了啊,我知道了。

    这个时候,还只是 A 不想玩了,也即 A 不会再发送数据,但是 B 能不能在 ACK 的时候,直接关闭呢?当然不可以了,,很有可能 A 是发完了最后的数据就准备不玩了,但是 B 还没做完自己的事情,还是可以发送数据的,所以称为半关闭的状态。

    这个时候 A 等待 B 也主动关闭。

    B:A 啊,好吧,我也不玩了,拜拜。

    A:好的,拜拜。

    释放链接的过程

    首先AB 都处于ESTABLISHED 状态

    1. A 先发送连接释放报文段,并停止发送数据,主动关闭TCP 连接。A 把链接释放报文段首部的中止控制位FIN 置为1 ,其序号为seq = u(等于前一个传输数据的序号+1)。这是A 进入 FIN-WAIT-1(终止等待连接1)状态,等待B 的确认。TCP规定,FIN 报文段即使不携带数据,也会消耗一个序号。
    2. B 收到A 的连接释放报文段后发出确认。确认号ack = u + 1,而报文段自己的序号seq = v(等于前一个传输数据的序号+1)。然后B 进入CLOSED-WAIT(关闭等待)状态,这是A->B方向的连接就已经断开了,TCP 连接处于半关闭状态.
    3. A 收到B 的确认后,进入FIN-WAIT-2(终止等待2)状态,等待B 发送释放报文段。
    4. 若B 发送完数据后,向A 发送TCP 释放报文段。FIN 置为1 ,先假设序号seq = w (B可能又发送了一些数据),B 还必须重复上次已经发送的确认号ack = u + 1。这是B 进入LAST-ACK(最后确认)状态,等待A 的确认
    5. A 在收到连接释放报文段后发送确认。在确认报文段中把ACK 置为1 ,确认号ack = w + 1,而自己的序号seq = u + 1(TCP 规定,前面发送过的FIN 报文段要消耗一个序号)。然后进入到TIME-WAIT(时间等待)状态
    6. 现在TCP 连接还没有断掉。必须经过时间等待计时器(TIME-WAIT time)设置的2MSL时间过后,A 才进入到CLOSED 状态。

    MSL(Maximum Segment Lifetimr)最长报文生存时间,RFC793 建议为2 分钟。

    1. B 收到A 的ACK 后进入CLOSED 状态

    为什么A 在TIME-WAIT 必须等待2MSL时间?

    1. 为了保证A 发送的最后一个ACK 报文段能够到达B。
    2. 防止已失效的连接请求报文段出现在本链接中。A 在发送完最后一个ACK 后,在经过2MSL 的等待时间可以保证本链接持续时间内发送的报文在网络中消失。这样就不会出现旧连接请求出现在新连接请求里面的情况

    TCP 保活计时器

    除了时间等待器外,TCP 还设有一个保活计时器(keepalive timer)。

    当客户与服务器建立了连接,而客户出现故障无法响应客户端时,服务器就会发一个探测报文,75秒发一个,若连续发10 个客户端都没响应,则服务器端自动关闭连接。保活计时器默认为2 个小时,每收到一次请求刷新。

    TCP 状态机

    在这里插入图片描述

    参考资料

    • 极客时间:《趣谈网络协议》
    • 《计算机网络》
    展开全文
  • tcp连接管理

    2016-08-21 17:11:00
    1000 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目,对重负载服务器而言,该值需要调高一点。...[root@ok etc]# cat /proc/sys/net/ipv4/tcp_max_syn_backlo...

     

    [root@ok etc]# cat /proc/sys/net/core/netdev_max_backlog 
    1000
    每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目,对重负载服务器而言,该值需要调高一点。见议设为16384
    [root@ok etc]# cat /proc/sys/net/ipv4/tcp_max_syn_backlog 
    2048 #建议设为:16384
    对于那些依然还未获得客户端确认的连接请求﹐需要保存在队列中最大数目。对于超过 128Mb 内存的系统﹐默认值是 1024 ﹐低于 128Mb 的则为 128。如果服务器经常出现过载﹐可以尝试增加这个数字。
    [root@ok etc]# cat /proc/sys/net/ipv4/tcp_synack_retries 
    5 #建议设为:
    控制内核向某个socket的ack,syn段(三次握手的第二次握手)重新发送响应的次数,降低此值可以尽早检测到来自远程主机的连接失败尝试
    [root@ok etc]# cat /proc/sys/net/ipv4/tcp_retries2
    15#建议设为:
    控制内核向已建立连接的远程主机重新发送数据的次数,降低此值,可以尽早的检测连接失效
    在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行多少次重试。默认值为15,根据RTO的值来决定,相当于13-30分钟(RFC1122规定,必须大于100秒).(这个值根据目前的网络设置,可以适当地改小,我的网络内修改为了5)
    [root@ok etc]# cat /proc/sys/net/ipv4/tcp_syncookies 
    1
    表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
    SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接

     

    转载于:https://www.cnblogs.com/bass6/p/5793070.html

    展开全文
  • 5.3.2 TCP连接管理

    2020-05-08 12:42:59
    5.3.2 TCP连接管理 文章目录tcp 连接管理tcp的连接简历TCP传输连接中的SYN、ACK、SEQ、 AN分别是什么意思?syn洪泛攻击tcp的连接释放 tcp 连接管理 tcp的连接简历 TCP传输连接中的SYN、ACK、SEQ、 AN分别是什么意思...

    5.3.2 TCP连接管理

    tcp 连接管理

    在这里插入图片描述

    tcp的连接简历

    在这里插入图片描述

    TCP传输连接中的SYN、ACK、SEQ、 AN分别是什么意思?

    在这里插入图片描述

    syn洪泛攻击

    在这里插入图片描述

    tcp的连接释放

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 一、TCP 连接管理、 二、TCP 连接建立、 三、TCP 连接建立 相关报文段 字段、 四、SYN 洪泛攻击、 五、TCP 连接释放、
  • TCP连接管理机制

    千次阅读 2018-07-30 14:07:22
    一:TCP连接管理机制 服务器状态转化: 1.CLOSED -> LISTEN:服务器创建监听套接字后进入LISTEN状态,等待客户端建立连接; 2.LISTEN -> SYN_RCVD:当监听到连接请求(SYN),就将该连接放入内核...
  • TCP连接管理 TCP连接的建立与终止 一个TCP连接是由一个四元组构成,分别是两个IP地址和两个端口号 一个TCP的连接分为3个阶段:启动,数据传输,退出 TCP连接的步骤: (1)客户端发送一个SYN报文段, SYN报文段就是...
  • 经过前面对TCP连接管理的介绍,我们本小节通过TCP连接管理的状态机来总结一下看看TCP连接的状态变化一、TCP状态机整体状态转换图(截取自第二版TCPIP详解)二、TCP连接建立和终止过程中状态迁移总结下面我们总结一下...
  • 在最近的求职面试过程中,关于"建立TCP...本文算是对整个TCP连接管理做一个比较系统的梳理。 1. TCP报文段结构(TCP Segment Structure)(i.e. TCP Header) source port: 源端口,占16位。 dest port: 目标...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,733
精华内容 2,293
关键字:

tcp连接管理