新网站建设的工作总结/怎样创建一个网站
连接—三次握手:
流程图:
过程详解:
客户端(connect)连接服务器(listen)
- Client将标志位SYN置为1,随机产生一个值seq=x, 并将该数据包发送给Server, Client进入SYN_ SENT状态,等待Server确认。
- Server收到数据包后由标志位SYN=1知道Client请求建立连接, Server将标志位SYN和ACK都置为1, ack=x+1, 随机产生一个值seq=y,并将该数据包发送给Client以确认连接请求, Server进入SYN_ RCVD状态。
- Client收到确认后,检查ack是否为x+1, ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给Server;
Server检查ack是否为y+1, ACK是否为1,如果正确则连接建立成功,Client 和Server进入ESTABLISHED状态, 完成三次握手,随后Client与Server之 间可以开始传输数据了。
断开—四次挥手:
流程图:
断连详解:
首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
- 数据传输结束后,Cli的应用进程发出连接释放报文段FIN,并停止发送数据,客户端进入FIN WAIT 1状态,此时客户端依然可以接收服务器发送来的数据。
- 服务器接收到FIN后,发送一个ACK给客户端, 确认序号ack=收到的序号+1,服务器进入CLOSE WAIT状态。客户端收到服务器的ACK后进入FIN WAIT_2状态。
- 当服务器完成了自己的发送工作后没有数据要发送时,服务器发送一个FIN报文, 此时服务器进入LAST_ ACK状态,等待客户端的确认
- 客户端收到服务器的FIN报文后,给服务器发送一个ACK报文, ack=收到的序号+1。此时客户端进入TIME_ WAIT状态,等待2MSL (MSL: 报文段最大生存时间),然后关闭连接。
断连原理:
TCP是全双工,每个方向都需要单独关闭,一方完成了自己的发送任务后,主动发送终止报文FIN结束此方向连接,代表从此刻开始这个方向不会再发送除了断连工作的必要报文外一切信息数据,直至对面方向也发送了FIN结束报文。
1. 三次握手容易出现的攻击---syn泛洪攻击
泛洪攻击、syn溢出攻击,DoS(拒绝服务攻击)的一种形式。
- 出现在第二次握手阶段
- 流程:攻击者伪造大量不存在的IP地址,一时间发送大量的第一次握手的同步报文,导致服务器需要在短时间内完成对客户端信息的保存并发送确认和自己的同步报文信息,为每一个建立连接的客户端开辟内存空间,而洪范攻击无第三次握手即第三次确认报文,服务器最终会连接失败,在判断识别失败需要的时间内,服务器就会因为短时间内的大量syn报文导致资源耗尽,正常的客户端连接需求亦无法得到满足。
- Land攻击:
在这种攻击中,攻击者发送一个SYN包,其源地址和目标地址都是受害服务器的IP地址。当服务器回复SYN+ACK包时,这个包实际上又被发送回服务器自己。这种攻击可能导致服务器资源耗尽,因为它不断地处理自己发送的包。
- Connection Flood攻击:
攻击者利用真实的IP地址向服务器发起大量的连接请求,建立连接后长时间不释放,并定期发送垃圾数据包以保持连接活性。这会导致服务器上残余连接(WAI-time状态)过多,效率降低,甚至资源耗尽,无法正常响应其他客户的连接请求。
2. 为了防范这些攻击,可以采取以下措施:
- 限制每个源IP的连接数:防止单个IP地址建立过多的连接。
- 对恶意连接的IP进行封禁:一旦发现某个IP地址在进行异常行为,可以将其封禁。
- 降低SYN timeout时间:使得服务器尽快释放半连接的占用,减少资源消耗。
- 采用SYN cookie技术:如果短时间内连续收到某个IP的重复SYN请求,则视为攻击,并丢弃后续请求。
- 在网关处设置过滤:拒绝将源IP地址不属于其来源子网的包进行路由。
请注意,这些防范措施并非绝对安全,应结合实际情况和安全需求进行选择和部署
3. 两次握手可以吗?
不可以
举反例以证实三次不可或缺
失效的连接报文请求:
客户端发出的SYN同步报文在传输过程中未及时到达服务器,在网络结点停滞到客户端与服务器连接、已经断联2MSL以后才到达。
在此情况下,若只有两次握手便可以达成连接,服务器则同意连接发送同步、确认报文。
客户端收到服务器发来的报文以无效处理,并不会给服务器发送信息,也不会主动断连,而服务器将会在等待中白白浪费内存资源
若有客户端第三次确认连接则不会发生以上问题
Dos攻击无法防范:
黑客会伪造大量SYN请求发送给服务器,服务器立即确认并建立连接,分配资源,但是这一系列连接并不是真实存在的, 这大大浪费了服务器的资源并且阻塞了正常用户的连接,这种也叫SYN洪泛攻击。
第二种是服务器返回给客户端的ACK数据包可能会在传输的过程中丢失
而客户端没有收到该ACK数据包而拒绝接收服务器接下来发送的数据,于是服务器因TCP可靠传输的超时重发和确认应答机制一直重复发送,客户端一直在拒绝, 形成死锁。
反之三次握手就可以解决以上问题.
4. 四次挥手可以变为三次挥手吗?
- 不能,四次挥手是必要的:
TCP全双工通信,所以各个方向都需要进行关闭连接,在主动断开放完成发送任务后向连接端发送结束FIN报文后,表示此方向已不会再发送信息数据(不排除TCP断连报文),而被动断开方接收到FIN结束报文后,首先确认发送ACK确认报文,以免主动断开放误以为FIN结束报文发送失败重新发送,然而被动断开方仍需处理自己的发送工作内容,直至完成后才向主动断开方再发送FIN报文,来表示现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的,这也是为什么释放连接时需要交换四次报文了。
- 偶尔,当客户端与服务器同时选择断开连接时,即代表双方都没有需要发送的数据信息后,即可以合并ACK 和 FIN 报文,变成三次挥手
5. 三次握手第二个阶段的异常
第二阶段:
服务器的端口号未打开,会回复 RST 复位报文,握手失败
服务器listen异常,监听队列达到上限,也可能失败
6. TCP三次握手第一次产生的SEQ
由ISN算法得到的。
seq=C + H (源IP地址,目的IP地址,源端口,目的端口)
C 计时器,每隔一段时间值就会变大;
H 消息摘要算法,输入是一个四元组(源IP地址,目的IP地址, 源端口,目的端口)
7. TCP的同时握手与同时挥手
同时打开连接是指通信的双方在接收到对方的SYN包之前,都进行了主动打开的操作并发出了自己的
SYN包。如之前所说一个四元组标识一个TCP连接,因此如果一个TCP连接要同时打开需要通信的双方知
晓对方的IP和端口信息才行,这种场景在实际情况中很少发生(NAT穿透中可能会多一些)。 同时打开的流
程如下图:
注意上图中,TCP连接同时打开的时候与三次握手的主要区别如下
1)我们同时称呼A和B为Client,他们都执行主动J开的操作(Active Opener)。
2)同时两端的状态变化都是由CLOSED->SYN SENT->SYN _RCVD->ESTABLISHED。
3)建立连接的时候需要四个数据包的交换,并且每个数据包中都携带有SYN标识,直到收到SYN的ACK为止同时关闭连接.
相对于四次握手过程基本类似,注意两者状态转换的区别,同时关闭的状态变化是:
ESTABLISHED->FIN_WAIT 1->CLOSING->TIME WAIT->CLOSED
8. TCP第三次握手携带数据
第三次携带,当客户端最后一次握手后发送确认报文后,对客户端来说已经建立连接,已经明确服务器的接收发送能力
第一次不能,客户端以确认报文中夹杂恶意信息,频繁发送SYN ,服务器将浪费大量时间、空间接收处理
第二次不能,服务器并不确认客户端是否真实有效,不是虚拟的恶意连接、或攻击,在大量连接请求时,携带数据会使得服务器更快的资源耗尽
9. TIME_WAIT 状态存在的意义
TIME_WAIT 指第四次挥手时,发送完确认报文后
- 保证在接收FIN报文后一切迟来报文被识别并丢弃
- TCP可靠连接的保证,使得对方成功接收ACK 报文,若ACK丢失对方会重发FIN报文并重新期待收到ACK
- TIME_WAIT 时间在2MSL (报文的最大传输时间1MSL:2分钟)
10. 在 Linux 系统上,一个TCP端口无法短时间建立两个或以上连接
TCP 在连接后释放处于TIME_WAIT 状态时,无法使用占用端口建立连接
强制进程立即使用处于 TIME_WAIT 状态的连接所占用的端口,可以通过 setsockopt()方法设置 socket 选项 SO_REUSEADDR 来完成。
11. TIME_WAIT 和 CLOSE_WAIT的区别
CLOSE_WAIT:第二次挥手,已发送对对方FIN 的确认ACK 报文
等待自己发送工作完成,未关闭
TIME_WAIT :第四次挥手,已发送最后的ACK确认报文
保证ACK 报文可靠传输,识别并丢弃迟来的报文信息,避免快速的经行下次连接而将以往无效报文接收
12. 服务器端出现大量的CLOSE_WAIT
第二次挥手阶段:已收到FIN 并回复ACK
总原因:服务器未完成工作内容且时间过长,没有发送FIN完成第三次挥手
- 服务器内部业务处理占用了过多时间,都没能处理完业务;
- 或者还有数据需要发送
- 或者服务器的业务逻辑有问题,没有执行close()方法
- 服务器的父进程派生出子进程,子进程继承了socket,收到FIN的时候子进程处理但父进程没有处理该信号,导致socket的引用不为0无法回收
处理方法:
- 停止应用程序
- 修改程序里的bug
13. TIME_ WAIT期间收到数据包
要根据包的情况,做出很多种的判断
RST 包
序列号是下一个要接受的序列号
立即释放time_ wait传输控制块,丢掉RST包。
不是下一个要接受的序列号:
丢弃
ACK 包
序列号是下一个要接受的序列号:
启动TIME WAIT定时器,丢弃ACK。
不是下一个要接受的序列号:
启动TIME WAIT定时器,然后给对端发送ACK。
SYN 包
上一个结束序列号大
可以接受,并建立新的连接
是上次结束前序列号
不会启动TIME _WAIT定时器,只会给对端发送ACK,告诉对端已经收到SYN包,避免重传,但连接应该不会继续建立。
14. 什么是RST?
tcp报头:
复位RST (ReSeT)当 RST= 1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一一个连接。RST也可称为重建位或重置位。
相关文章:

TCP:三次握手四次挥手及相关问题:
连接—三次握手: 流程图: 过程详解: 客户端(connect)连接服务器(listen) Client将标志位SYN置为1,随机产生一个值seqx, 并将该数据包发送给Server, Client进入SYN_ SENT状态,等待Server确认。Server收到数据包后由标…...

链式二叉树--前序中序后序遍历,高度,节点个数问题
目录 前言: 一:链式二叉树的结构定义 二:链式二叉树的遍历--->前序,中序,后序 1.前序 递归展开图分析 2.中序 递归展开图分析 3.后序 三:二叉树结点的求解 1.二叉树总结点 递归展开分析 2…...

HCIA——TCP协议详解
目录 1、TCP概念及协议头部格式 1.1TCP特点 1.2TCP协议协议头部格式 1.3字段进行介绍 1.3.1源端口和目的端口 1.3.2序号(seq) 1.3.3确认序号(ack) 1.3.4数据偏移 1.3.5标志位 1.3.6窗口 1.3.7校验和 1.3.8紧急指针 2、TCP的可靠性 2.1 TCP可靠性的保障 2.2排序机…...

Hadoop大数据应用:Linux 部署 HDFS 分布式集群
目录 一、实验 1.环境 2.Linux 部署 HDFS 分布式集群 3.Linux 使用 HDFS 文件系统 二、问题 1.ssh-copy-id 报错 2. 如何禁用ssh key 检测 3.HDFS有哪些配置文件 4.hadoop查看版本报错 5.启动集群报错 6.hadoop 的启动和停止命令 7.上传文件报错 8.HDFS 使用命令 一…...

纯 CSS 实现文字换行环绕效果
实现效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title><…...

【爬虫逆向】Python逆向采集猫眼电影票房数据
进行数据抓包,因为这个网站有数据加密 !pip install jsonpathCollecting jsonpathDownloading jsonpath-0.82.2.tar.gz (10 kB)Preparing metadata (setup.py) ... done Building wheels for collected packages: jsonpathBuilding wheel for jsonpath (setup.py) .…...

解析服务器下载速度:上行、下行与带宽之谜
在日常使用中,我们经常会遇到从服务器下载内容速度忽快忽慢的情况,即便服务器的硬件配置如4核CPU、8GB内存和12Mbps的带宽看似足够。为何会出现这种现象?这背后涉及到网络中的上行、下行以及带宽等关键概念。本文旨在揭开这些术语背后的含义&…...

计算机网络的概念
目录 <计算机网络的定义> <计算机网络的形成与发展> 1.第一阶段远程联机阶段----60年代以前: 2.第二阶段多机互联网络阶段----60年代中期: 3.第三阶段标准化网络阶段----70年代末: 4.第四阶段网络互联与高速网络阶段一90年代: <计算机网络的未来--下一代…...

MATLAB中的脚本和函数有什么区别?
MATLAB中的脚本和函数是两种不同的代码组织方式,它们在结构、功能和使用方式上有显著的区别。以下是对这两种方式的详细解释,总计约2000字。 一、MATLAB脚本 MATLAB脚本是一种包含多条MATLAB命令的文件,这些命令按照在文件中的顺序依次执行…...

从电影《沙丘》说起——对人工智能的思考
正文 从《沙丘》开始说起 之前看《沙丘》电影,里面有一类角色叫门泰特,这类人大脑可以飞快地运算,在电影设定里是替换人工智能、机器运算的存在。男主保罗也是这类型的人,但他可能基因更强大,吸食了香料后࿰…...

使用Python进行自然语言处理(NLP):NLTK与Spacy的比较【第133篇—NLTK与Spacy】
👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行自然语言处理(NLP):NLTK与Spacy的比较 自…...

学习笔记--在线强化学习与离线强化学习的异同(3)
这篇博文很多部分仅代表个人学习观点,欢迎大家与我一起讨论 强化学习与离线强化学习的区别 强化学习和离线强化学习都是机器学习的分支,主要用于训练智能体以在不断尝试和错误的过程中学习如何最大化累积奖励。它们之间的主要区别在于数据的获取方式和训…...

使用Thymeleaf导出PDF,页眉插入图片与内容重叠?
CSS 打印分页功能 需求:打印 在第一页的内容被挤到第二页的时候,又想每一页页头都有相同的样式,使用页眉。 问题:第二页的内容与页眉重叠了? 查各路找出的原因:header 页眉不占空间 解决:不…...

python网络编程:通过socket实现TCP客户端和服务端
目录 写在开头 socket服务端(基础) socket客户端(基础) 服务端实现(可连接多个客户端) 客户端实现 数据收发效果 写在开头 近期可能会用python实现一些网络安全工具,涉及到许多关于网络…...

论文阅读——RSGPT
RSGPT: A Remote Sensing Vision Language Model and Benchmark 贡献:构建了一个高质量的遥感图像描述数据集(RSICap)和一个名为RSIEval的基准评估数据集,并在新创建的RSICap数据集上开发了基于微调InstructBLIP的遥感生成预训练…...

长连接技术
个人学习记录,欢迎指正 1.轮询 1.1 轮询的形式 短连接轮询 前端每隔一段时间向服务端发起一次Http请求来获取数据。 const shortPolling () > { const intervalHandler setInterval(() > {fetch(/xxx/yyy).then(response > response.json()).then(respo…...

供电系统分类详解
一、供电系统分类 电力供电系统一般有5种供电模式,常用的有:IT系统,TT系统,TN系统,其中TN系统又可以分为TN-C,TN-S,TN-C-S。 1、TN-C系统(三相四线制) 优点: 该系统中…...

基于centos7的k8s最新版v1.29.2安装教程
k8s概述 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。 Kubernetes 这个名字源于希腊语&…...

【赠书第20期】AI绘画与修图实战:Photoshop+Firefly从入门到精通
文章目录 前言 1 入门篇:初识Photoshop与Firefly 2 进阶篇:掌握Photoshop与Firefly的核心技巧 3 实战篇:运用Photoshop与Firefly进行创作 4 精通篇:提升创作水平,拓展应用领域 5 结语 6 推荐图书 7 粉丝福利 前…...

如何在并行超算云上玩转PWmat③:使用Q-Flow提交计算的案例演示
3月的每周二下午14:00我们将会在并行直播间为大家持续带来线上讲座。前面两期我们分享了”PWmat特色功能和应用“以及“如何在并行超算云平台使用PWmat计算软件”主题讲座,回看视频和PPT已上传至B站”龙讯旷腾“账号内。 本周张持讲师将继续带着大家手把手上机教学…...

html5cssjs代码 017样式示例
html5&css&js代码 017样式示例 一、代码二、解释 这段HTML代码定义了一个网页的基本结构,包括头部、主体和尾部。在头部中,设置了网页标题、字符编码和样式。主体部分包含一个标题和一个表格,表格内分为两个单元格,左侧为…...

Vue.js动画
Vue.js动画 Vue.js动画是指在Vue组件中通过添加/移除CSS类或应用CSS过渡/动画效果来实现的视觉效果。这些动画可以帮助改善用户体验,使界面更加生动和吸引人。 Vue.js提供了两种类型的动画:过渡和动画。 过渡:过渡是在元素插入、更新或删除…...

信号与系统学习笔记——信号的分类
目录 一、确定与随机 二、连续与离散 三、周期与非周期 判断是否为周期函数 离散信号的周期 结论 四、能量与功率 定义 结论 五、因果与反因果 六、阶跃函数 定义 性质 七、冲激函数 定义 重要关系 作用 一、确定与随机 确定信号:可以确定时间函数…...

PyTorch深度学习实战(39)——小样本学习
PyTorch深度学习实战(39)——小样本学习 0. 前言1. 小样本学习简介2. 孪生网络2.1 模型分析2.2 数据集分析2.3 构建孪生网络 3. 原型网络3. 关系网络小结系列链接 0. 前言 小样本学习 (Few-shot Learning) 旨在解决在训练集中只有很少样本的情况下进行分…...

论文阅读——Vision Transformer with Deformable Attention
Vision Transformer with Deformable Attention 多头自注意力公式化为: 第l层transformer模块公式化为: 在Transformer模型中简单地实现DCN是一个non-trivial的问题。在DCN中,特征图上的每个元素都单独学习其偏移,其中HWC特征图上…...

AJAX概念和axios使用、URL、请求方法和数据提交、HTTP协议、接口、form-serialize插件
AJAX概念和axios使用 AJAX概念 AJAX就是使用XMLHttpRequest对象与服务器通信,它可以使用JSON、XML、HTML和text文本等格式发送和接收数据,AJAX最吸引人的就是它的异步特性,也就是说它可以在不重新刷新页面的情况下与服务器通信,…...

【R语言基础操作】
🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享 擅长Python、Matlab、R等主流编程软件 累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…...

sqlite 常见命令 表结构
在 SQLite 中,将表结构保存为 SQL 具有一定的便捷性和重要性,原因如下 便捷性: 备份和恢复:将表结构保存为 SQL 可以方便地进行备份。如果需要还原或迁移数据库,只需执行保存的 SQL 脚本,就可以重新创建表…...

基于深度学习的车辆检测技术
基于深度学习的车辆检测技术是现代智能交通系统的重要组成部分,它利用计算机视觉和机器学习算法,特别是深度学习模型,来识别和定位图像或视频中的车辆。这项技术广泛应用于自动驾驶、交通监控、违章抓拍等多个领域。 深度学习车辆检测技术的…...

MyBatis 之三:配置文件详解和 Mapper 接口方式
配置文件 MyBatis 的配置文件是 XML 格式的,它定义了 MyBatis 运行时的核心行为和设置。默认的配置文件名称为 mybatis-config.xml,该文件用于配置数据库连接、事务管理器、数据源、类型别名、映射器(mapper 文件)以及其他全局属性…...