python-socket介绍

cs架构

在这里插入图片描述

osi七层

理解网络通信的原理

两个教室的电脑的软件要沟通的流程

在这里插入图片描述

通过ip与端口可以定位到目标位置指定机器的一个具体的应用程序

ip与网卡绑定在一起

有ip可对应上mac信息最终可实现一台电脑的定位
在这里插入图片描述

在这里插入图片描述

了解socket 所在的位置

在这里插入图片描述

》socket是什么

在这里插入图片描述

》套接字的发展史与分类

在这里插入图片描述
在这里插入图片描述

套接字的工作流程

在这里插入图片描述

》服务端的模拟 tcp

在这里插入图片描述
图中漏了一个conn断开

》完整的tcp客户端,服务端流程

在这里插入图片描述

》服务端代码

在这里插入图片描述

》客户端代码

在这里插入图片描述

》服务端可能出现的问题

在这里插入图片描述

当服务端关闭后马上又重开,可能出现这个问题

linux系统下,会有的

原因是

套接字关闭后,会有一段时间,套接字完成断开的操作,有一小段时间的延迟

这段时间的延迟,是tcp套接字在做四次挥手

三次握手,与四次挥手

在这里插入图片描述

》了解syn洪水攻击

TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

》解决办法

通过半链接池

这个好比等候区(银行取钱,都围在窗口,服务会崩)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值