zoukankan      html  css  js  c++  java
  • TCP 握手 -> 微服务

    建立时 3 次握手

    首先要安装 tcpdump 软件, sudo apt-get install tcpdump (用来抓包)

    然后查看网卡的名字, ifconfig, 我这里网卡的名字是ens33.

    然后我们再打开一个ssh链接,输入命令用来监听: tcpdump -nn -i ens33 port 80               这里我们抓的是80端口的包

    然后我们打开另一个ssh链接, 输入 curl www.baidu.com    百度用的是 80 端口, 这样我们就请求一个网页, 看那边的监听情况

    这是截图的结果. 不是特别明显, 还的用另一个命令 exec 9<> /dev/tcp/www.baidu.com/80 

    exec 只是进行TCP链接, 其中 [S] 表示链接, 正常的流程是, 需要先和baidu 建立 TCP 链接, 然后在发HTTP请求利用这个TCP链接, 然后baidu 在回复网页.

    这里的 9 可以理解为是一个 socket 的代表名称, 它就代表着跟baidu 的这个socket连接.

    接下来可以给百度发HTTP请求,   echo -e  "GET / HTTP/1.0 " >&9

    然后正常来说可以通过 cat <&9  获取到返回内容. 我们可以看到返回内容(是http文件).

     

    我们可以看到,我们命名的 9 实际上就是指向一个 socket 通信. 用的本地端口号是 34827.   socket 通信是 IP+端口的通信.

    socket 是什么

    socket 套接字 IP,PORT + IP,PORT

    使用命令 netstat -natp

    连接/通信 是建立在 客户端的 IP+端口 与 服务器的 IP+端口上的. 服务器的端口是 80, 而客户端每次随机拿出一个端口号与服务器建立连接, 注意,客户端自己也是需要一个端口号的,每次连接都需要一个端口号, 使用完,自动释放这个端口号,每个机器的端口号是有限制的 65535. 所以,也就是限制了socket通信的个数。一个浏览器的多个tab页也是使用不同的端口号。 

    tcp协议: 面向连接的, 可靠的(靠对方确认的). 3次握手 -》数据传输 -》4次分手

    3次握手:

    1) 客户端 -> 服务器 发 SYN 数据包

    2) 服务器 -> 客户端 发 ACK 数据包 acknowledge

    3) 客户端 -> 服务器 发 ACK 数据包 acknowledge

    然后, 客户端和服务器都可以分配内存资源了, 为对方服务 (这时还没发 HTTP包呢)

    DDOS 攻击, 上面步骤1,2,都完成了,然后黑客修改了本地,导致客户端不发送3,而服务器在等待接收3。太多了就无法提供服务给别人了

    DDOS 如何解决: 黑名单 + 负载均衡.

    断开时 4 次分手

    4次分手类似离婚, 因为对方会不同意

    1) 客户端 -> 服务器 发FIN 数据包 finish 结束

    2) 服务器 -> 客户端 ACK 数据包, acknowledge

    3) 服务器 -> 客户端 发 FIN 数据包 服务器也想 finish

    4)客户端 -> 服务器 发 ACK 数据包, acknowledge

    详解上面截图:

     我的IP是 192.168.183.130, 百度的IP 182.61.200.7  , 上面截图一共3条报文 注意 <> 左右箭头方向

    1): 我给百度发请求 S 表示报文 SYN

    2): 百度回给我 S.  就是 ACK的意思

    3): 我回百度 . 就是我本地的 ACK 的意思. 也有百度回正式数据的含义.

    现在连接建立成功. (3次握手)

    然后发了一些数据包, 其中状态 P 就是真正数据用的数据包已经发送完的意思, 因为数据包有大小限制,所以可能拆分成多个数据包,比如3个,那么再发送第三个的时候就会发送 P 标记. 

    4次分手, F 就是 分手的标记

    1) 我给百度发 F

    2) 百度给我回 ack

    3) 但是此时, 百度没给我回 FP, 所以客户端继续发 P 表示催促百度赶紧处理

    4) 百度回 ACK

    5) 我又发了一次 P

    6) 百度回 ACK

    7) 百度发 FP, 表示 百度也想断开了

    8) 我回 ACK.  这时双方到已经得到对方确认可以断开了.

  • 相关阅读:
    VBA Exit Do语句
    VBA Exit For语句
    VBA Do...While循环
    VBA While Wend循环
    VBA For Each循环
    VBA for循环
    sqoop 教案
    Hbase 取数据 和放数据 使用mr
    Hbase 四种过滤器
    Hbase java API 的方法
  • 原文地址:https://www.cnblogs.com/moveofgod/p/12445658.html
Copyright © 2011-2022 走看看