码迷,mamicode.com
首页 > 其他好文 > 详细

网路基础 -2

时间:2020-09-02 16:45:11      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:sed   数据帧   攻击   time   cti   lock   地址   mic   led   

TCP 握手和挥手

TCP 协议

? 全双工协议

三次握手

技术图片

? 第一次握手,(SYN=1, seq=x),客户端发送一个 SYN标志 位置1的包,?指明 客户端打算连接的服务的端口,以及初始序号X, 保存在 包头的 序列号(Sequence Number) 字段里。 客户段进去 SYN_SENT 状态。

? 第二次握手,(SYN=1, ACK=1,seq=y, ack=x+1), 服务器 发回确认包(ACK)应答。即 SYN 和ACK 标志位 均为1. 服务器端 选择 自己 ISN序列号,放到 Seq域里, 同时将 确认 序号(Acknowledgement Number)设置为 客户的 ISN ? 1.即 x+ 1. 发送结束,服务器端,进入 SYN _RCVD状态。

? 第三次握手,( ACK=1,seq=y, ack=y+1) 客户端再次发送确认包(ACK),SYN 标志位 为1,ACk 标志位 为1 并且把服务器发来的 ACK 的 序号端(seq)+1, 放在确定字段中 发送给 对方,并且 在 数据段 放 ISN 发送完毕,客户端 进入ESTABLISHED 状态,当服务器端接受到这个包时,也进入ESTABLISHED 状态。

DDoS(分布式拒绝服务) 攻击

SYN 攻击就是 Client 在短时间内伪造大量不存在的 IP 地址,并向 Server 不断地发送 SYN 包,Server 回复确认包,并等待 Client 的确认,由于源地址是不存 在的,因此,Server 需要不断重发直至超时,这些伪造的 SYN 包将产时间占用未连接队 列,导致正常的 SYN 请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。

? SYN 攻 击时一种典型的 DDOS 攻击,检测 SYN 攻击的方式非常简单,即当 Server 上有大量半连接 状态且源 IP 地址是随机的,则可以断定遭到 SYN 攻击了。

四次挥手

技术图片

发送4个包 确认 连接的断开。

? 第一次挥手 (FIN=1,seq=u),客户端发送一个 FIN 标志位 为 1 的包,表示自己已经没有数据 可以发送了,但是仍然可以接受数据。发送完毕后,客户端进入 FIN_WAIT_1 状态。

? 第二次挥手(ACK=1,ack=u+1),服务器端确认客户端的 FIN 包,发送一个确认包,表明自己接受到了客户端关闭连接的请求, 但还没有准备好关闭连接。发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这 个确认包之后,进入 FIN_WAIT_2 状态,等待服务器端关闭连接。

? 第三次挥手(FIN=1,seq=w,ACK=1,ack=u+1),服务器端准备好关闭连接时,向客户端发送结束连接请求,FIN 置为 1。发送完毕后,服务器 端进入 LAST_ACK 状态,等待来自客户端的最后一个 ACK。

? 第四次挥手(ACK=1,ack=w+1) 客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT 状态,等待 可能出现的要求重传的 ACK 包。 服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。

客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime) 之后,没有收到服务器端的 ACK,认为服务器端已经正常关闭连接,于是自己也关闭连接, 进入 CLOSED 状态。

为什么 TIME_WAIT 状态需要经过 2MSL(最大报文段生存时间)才能返回到 CLOSE 状态?

必须假定 网络是不可靠的,有可以最后一个 ACK 丢失。所以 TIME_WAIT 状态就是用来重发可能丢 失的 ACK 报文。

理解 TCP 的通信原理及 IO 阻塞

接收缓冲区

发送缓冲区

滑动窗口; 图示

? 一种流量控制技术。 发送和接收放都会维护一个 数据帧的序列。

  • 阻塞
    • todo
  • 非阻塞
  • IO多路复用

一台机器理论能支持的连接数

标示 一个tcp 连接:

> source_ip, source_port, destination_ip, destination_port
>
> 一个不同,就是不同 的连接

连接数的设置

1、内存大小。 每个 tcp 都占用一块 内存
2、文件句柄限制,一个tcp 占用一个 fd,一旦超过限制,返回 “can‘t open so many files”?异常。 如下可以进行一些调整。
  2.1、ulimit -n  查看但前一个进程 最大能打开的 文件数,linux 一般 1024, mac 256
  2.2、可 通过 vim /etc/security/limits.conf 修改系统醉倒的文件 打开数的限制
  > soft nofile 2048
  > hard nofile 2048
  >  表示修改所有用户限制、soft/hard 表示软限制还是硬限制,2048 表示修改以后的值
  2.3、可通过【cat /proc/sys/fs/file-max】 查看linux 系统最大 打开文件数限制,标但前 服务器 最多能同==同时打开的文件数
3、带宽资源的限制

参考:

mic 老师的远程通信协议

网路基础 -2

标签:sed   数据帧   攻击   time   cti   lock   地址   mic   led   

原文地址:https://www.cnblogs.com/idea-persistence/p/13529033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!