SE_Gao 的文章
  • 关于TCP的三次握手,四次挥手

    关于TCP的三次握手,四次挥手 作者:三分恶 链接:https://www.cnblogs.com/three-fighter/p/14802786.html 来源:博客园 TCP三次握手、四次挥手,在面试这锅滚油里,可谓是炸了千百遍的老油条。 我们都知道TCP是面向连接的,三次握手就是用来建立连接的,四次挥手就是用来断开连接的。 三次握手 先上图: 我们来看一下三次握手的过程: 一开始,客户端和服务端都处于 CLOSED 状态。客户端主动打开连接,服务端被动打卡连接,结束CLOSED z状态,开始监听,进入 LISTEN状态。 一次握手 客户端会随机初始化序号(client_isn),将此序号置于 TCP 首部的「序号」字段中,同时把 SYN 标志位置为 1 ,表示 SYN 报文。接着把第一个 SYN 报文发送给服务端,表示向服务端发起连接,该报文不包含应用层数据,之后客户端处于 SYN-SENT 状态。 二次握手 服务端收到客户端的 SYN 报文后,首先服务端也随机初始化自己的序号(server_isn),将此序号填入 TCP 首部的「序号」字段中,其次把 TCP 首部的「确认应答号」字段填入 client_isn + 1, 接着把 SYN 和 ACK 标志位置为 1。最后把该报文发给客户端,该报文也不包含应用层数据,之后服务端处于 SYN-RCVD 状态。 三次握手 客户端收到服务端报文后,还要向服务端回应最后一个应答报文,首先该应答报文 TCP 首部 ACK 标志位置为 1 ,其次「确认应答号」字段填入 server_isn + 1 ,最后把报文发送给服务端,这次报文可以携带客户到服务器的数据,之后客户端处于 ESTABLISHED 状态。 好了,经过三次握手的过程,客户端和服务端之间的确定连接正常,接下来进入ESTABLISHED状态,服务端和客户端就可以快乐地通信了。 这里有个动态过程的图示: 这里有个小细节,第三次握手是可以携带数据的,这是面试常问的点。 那么为什么要三次握手呢?两次不行吗? 为了防止服务器……

    SE_Gao 2024-03-05
    14 0 0
  • 【MySQL】:超详细MySQL完整安装和配置教程

    一. MySQL数据库 1.1 版本 官方: https://www.mysql.com/ MySQL官方提供了两种不同的版本: 社区版本(MySQL Community Server) 免费, MySQL不提供任何技术支持 商业版本(MySQL Enterprise Edition) 收费,可以使用30天,官方提供技术支持 本篇博客所讲述的是MySQL的社区版-MySQL Community Server 8.0.26的下载安装 1.2 下载 下载地址:https://downloads.mysql.com/archives/installer/ 需要安装包的小伙伴可以私信“MySQL”领取。 1.3 安装 要想使用MySQL,我们首先先得将MySQL安装好,下面的步骤,一步一步的完成MySQL的安装。 双击官方下来的安装包文件 根据安装提示进行安装 安装MySQL的相关组件,这个过程可能需要耗时几分钟,耐心等待。 输入MySQL中root用户的密码,一定记得记住该密码 配置 安装好MySQL之后,还需要配置环境变量,这样才可以在任何目录下连接MySQL。 A. 在此电脑上,右键选择属性 B. 点击左侧的 “高级系统设置”,选择环境变量 C. 找到 Path 系统变量, 点击 “编辑” D. 选择 “新建” , 将MySQL Server的安装目录下的bin目录添加到环境变量 启动停止 MySQL安装完成之后,在系统启动时,会自动启动MySQL服务,我们无需手动启动了。 当然,也可以手动的通过指令启动停止,以管理员身份运行cmd,进入命令行执行如下指令: 1 net start mysql80 2 net stop mysql80 注意 : 上述的 mysql80 是我们在安装MySQL时,默认指定的mysql的系统服务名,不是固定的,如果未改动,默认就是mysql80。 1.4 客户端连接 **方式一:**使用MySQL提供的客户端命令行工具 **方式二:**使用系统自带的命令行工具执行指令 mysql [-h 127.0.0.1] [-P 3306] -u root -p 参数: -h : MySQL服务所在的主机IP -P : MySQL服务端口号, 默认3306 -u : MySQL数据库用户名 -p : MySQL数据库用户名对应的密……

    SE_Gao 2024-03-05
    12 0 0
  • BGP高级特性—— AS-PATH 正则表达式

    使用 正则表达式目的:匹配BGP路由,进行选路和过滤和执行其他操作 一、正则表达式元字符特殊字符 —————————————————————————————————————————————————————— 二、字符组合路由含义: ^$    从本地as起源的路由 ^2_  所有从直接相连的位于as 2的邻居来的路由, 始发于AS 2 _3_   经过as 3 .*      所有BGP路由 ^2$  源于as2中的邻居路由 _300$ 匹配最后一个AS 时as 300的 ^12.  匹配12以及 120~129的BGP路由 ———————————————————————————————————————————————————— 三、实列理解: 2、描述:匹配行的起始和结束 考虑下面的AP_PATH过滤器: (1)ip as-path access-list 20 permit 850 含义:凡是AS号码里面有8和5和0的路由都能匹配出来 该匹配任何包含字符串850的AS_PATH。匹配的AS_PATH例如:(850),(235,850,155)和(3568,5850,310)等。无论是是属性中唯一的串或者属性中多个AS号中的一个甚至是属性中一个很大的AS号中的一部分,该匹配都成功。 假设你只想匹配包含唯一AS号850的AS_PATH,你必须描述行的开始和结束。使用补字号(^)匹配行的开始,美元符($)匹配行的结束: (2)ip as-path access-list 20 permit ^850$ 含义:只匹配 AS 850 这样表示表达式的开始紧接一个字符串850,然后紧接行的结束符。 你还可以使用两个描述来匹配一个空的AS_PATH: (3)ip as-path access-list 21 permit ^$ 含义:匹配本地AS产生的路由 在上述情况,正则表达式匹配行的开始紧接行的结束;如果行的开始与行的结束间存在任何字符则匹配不成功。 3、括弧:匹配字符集和 括弧是你能指定单字符的范围。 (1)ip as-path access-list 22 permit ^85[0123459]$ 含义:匹配包含单一AS号850,851,852,853,854,855或859的AS_PATH。 上述过滤器匹配包含单一AS号850,851,852,853,854,855或859的AS_PATH。 如果字……

    SE_Gao 2024-03-05
    110 0 0
  • MySQL安全配置之操作系统级配置

      1. 禁用MySQL命令历史记录 安全说明 在linux /UNIX上,mysql客户机将交互式执行的语句记录到一个历史文件中。默认情况下,该文件在用户的主目录中名为.mysql_history。大多数在mysql客户机应用程序中运行的交互式命令都保存到历史文件中。应该禁用mysql命令历史记录。 配置方法 如果存在.mysql_history,则删除它。 使用下面两种方法来防止它再次被创建: a. 将mysql_histfile环境变量设置为/dev/null.这将需要放在shell的启动脚本中。 配置环境变量 vi ~/.bashrc 添加如下配置: export MYSQL_HISTFILE=/dev/null 修改完后,保存退出,执行如下命令,使更改生效 source ~/.bashrc b. 创建$HOME/mysql_history作为/dev/null的链接。 ln -s /dev/null $HOME/.mysql_history   2. 禁用MYSQL_PWD环境变量 安全说明 MYSQL_PWD是一种用于存储mysql密码的环境变量,以明文形式存储mysql密码,存在安全隐患。 检查方法 检查MYSQL_PWD环境变量是否存在于某个进程中: grep MYSQL_PWD /proc/*/environ 如果有返回行说明那个进程使用了MYSQL_PWD环境变量。 配置方法 不设置环境变量或确保MYSQL_PWD环境变量未设置敏感信息,对使用MYSQL_PWD环境变量变量的脚本和进程,建议不再使用该环境变量。   3. 禁用MySQL操作系统账号登陆 安全说明 MySQL系统账号在安装完数据库后,不应该有其他用途。建议禁止该账号登陆操作系统。此举在防止黑客利用MySQL数据库漏洞反射shell有极佳效果。 检查方法 假设MySQL数据库操作系统账号就是mysql,执行下列命令: getent passwd mysql | egrep "^.*[ \ /bin\ / false| \ / sbin \ / nologin]$" 如果没有返回行则说明存在安全隐患。 配置方法 执行下列语句禁止mysql用户(如hadoop)登陆: usermod -s /sbin/nologin hadoop 回退步骤 usermod -s /bin/bash hadoop  

    SE_Gao 2024-03-04
    9 0 0
  • aix更换硬盘

    更换硬盘 先看哪块盘损坏 #errpt 查看rootvg 中有几块盘 #lsvg -p rootvg 先查看一下硬盘上是否lv一至 #lspv -l hdiskx 查看目标盘上的free空间是否够 #lspv hdisk1 |grep "free pps" 如果hdisk0故障 先拆除mirror #unmirrorvg rootvg hdisk0 (smitty unmirrorvg) 去除引导信息 #chpv -c hdisk0 如果lg_dumplv在hdisk0上,需将其移往hdisk1 #migratepv -l lg_dumplv hdisk0 hdisk1 将hdisk0从rootvg中去除 reducevg rootvg hdisk0 然后删除磁盘 #rmdev -Rdl hdisk0 查看hdisk0是否还存在 #lspv lscfg -vl hdisk0 判断硬盘位置 #smitty diag Task Selection Hot Plug Task SCSI and SCSI RAID Hot Plug Manager Identify a Device Attached to a SCSI Hot Swap Enclosure Device hdis0 此时hdisk0的硬盘会亮红灯 更换硬盘 识别新硬盘 #cfgmgr -v 然后重新创建mirror 先给新硬盘id号 #chdev -l hdisk0 -a pv=yes 把新硬盘加入rootvg #extendvg rootvg hdisk0 (smitty extendvg) 查看一下状态 #lsvg -l rootvg 重新做mirror #mirrorvg -s rootvg hdisk0(smitty mirrorvg) 查看mirror是否成功 #lsvg -l rootvg 设置引导项 #bosboot -ad /dev/hdisk0 设置引导顺序 #bootlist -m normal hdisk0 hdisk1 cd0 查看引导是否设置成功 #bootlist -m normal -o

    SE_Gao 2024-03-04
    75 0 0
  • 子网划分和子网汇总技术保姆级教学

    一,子网划分 1,什么是子网划分? 子网划分就是为了减少IP地址浪费的一种技术手段,将一个母网段通过借位(将网络位后的主机位按需求借位成网络位)进而划分成几个子网段,避免IP资源的浪费。举个例子,现在有4个班级需要不同的网段进行使用,但是一个班级也就几十个人,要是一个班给一个主网段,就太浪费了。于是子网划分就应运而生了,将一个主网段划分成4个子网段,将这四个子网再分给他们,就大大减少了IP资源的浪费。但是子网划分会存在一个问题,就是每个网段主机位为全0和全1的IP都要作为特殊地址使用,显然子网段也是同样的,所以子网化分得越多,总的IP数就会多减少一部分。但是与之前的浪费相比这个问题就不值一提了。 2,网络号 将ip地址的主机位全部置零就可以得到网络号(即将ip与网络掩码进行逻辑与运算) 逻辑与:有0则0,全1为1. 例如:192.168.25.19 /24 从中我们可以得出他的网络位为24位主机位为8位---->所以19 代表的是主机位将他置零就可以得到网络号:192.168.25.0 /24 如果IP地址是192.168.25.19 /22 他的网络位为22位主机位为10位---->所以将他写成二进制,再将他的主机位全部置0就得到网络号 1100 0000.1010 1000.0001 1001.0000 0000 其中蓝色部分为网络位,橙色部分为主机位,现在我们将主机位置0再将二进驻转十进制就得到网络号192.168.24.0 所以他的网络号为192.168.24.0 /22 3,如何进行子网划分? 子网划分:借位,借n位主机位,能划分出2的n次方个子网段。 首先我们要明白不同网段是如何区分的:通过网络号,网络号不同就可以将不同的网段区分出来。 所以如何将将一个网段分成四个网段呢?通过借位(将主机位借为网络位)--->借主机位那么我们是从高位网低位借还是从低位网高位借位呢? 记住只能 从高位往低位借位 原因是: 网络掩码:是由32个二进制,连续的1+连续的0……

    SE_Gao 2024-03-04
    19 0 0
  • 【Linux系统】进程概念

    在了解进程概念前我们还得了解下冯诺依曼体系结构和操作系统的概念与定位。 1 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系: 输入单元:包括网卡,键盘, 鼠标,扫描仪, 写板,话筒等 ; 中央处理器(CPU):含有运算器和控制器等 ; 输出单元:网卡,显示器,打印机等; 关于冯诺依曼,必须强调几点: 这里的存储器指的是内存 ; 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备) ; 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取; 一句话,所有设备都只能直接和内存打交道; 对冯诺依曼的理解,不能只停留在概念上,要深入到对软件数据流理解上,请解释,从你登录上qq开始和某位朋友聊天开始,数据的流动过程。 在不考虑网络层情况下,小明用qq向小红发送了一条消息,小明的电脑从键盘上读取信息然后加载到内存,再从内存将数据通过一系列操作发送到输出设备上(网卡),然后通过一系列的网络操作将数据发送到小红的输入设备上(网卡),小红的电脑再从输入设备中将数据读到内存,然后通过输出设备(显示器)将信息刷新到小红的电脑上,这里数据刷新是两个方面的,再成功发送后小明的电脑也会显示出已经成功发送后的信息。 2 操作系统(Operator System) 概念 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括: 内核(进程管理,内存管理,文件管理,驱动管理) 其他程序(例如函数库,shell程序等等) 设计OS的目的 与硬件交互,管理所有的软硬件资源 为用户程序(应用程序)提供一个良好的执行环境 定位 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件。 总结 计算机管理硬件 先描述起来,用struct结构体 再组织起来,……

    SE_Gao 2024-03-04
    25 0 0
  • mysql日志中的时间和系统时间不一致问题

    show variables like '%log_time%'; UTC是世界统一时间,而我现在的系统为北京时间是东八区,比UTC早了8个小时,所以这里设置为SYSTEM 在[mysqld]下增加:log_timestamps=SYSTEM

    SE_Gao 2024-03-01
    12 0 0
  • 802.11介绍

    无线局域网(Wireless Local Area Network,WLAN)已经成为现代生活中不可或缺的一部分,它为我们提供了便捷的无线网络连接,让我们能够在家中、办公室、公共场所等地轻松上网。在无线局域网技术的发展过程中,IEEE 802.11标准起到了关键作用,它不仅推动了无线通信的进步,还为我们带来了更快速、更稳定的网络连接。 自1997年首次发布以来,IEEE 802.11标准经历了多个版本的演进,每个版本都引入了新的技术和改进,不断提高了无线局域网的传输速率、网络容量和稳定性。本文将探讨IEEE 802.11标准的演进历程,介绍不同版本的技术特点以及它们在不同应用场景中的应用。让我们一同回顾IEEE 802.11的历史,探索无线局域网技术的发展脉络。 一、背景 无线通信的历史可以追溯到19世纪末,当时科学家们开始研究电磁波的传播和应用。意大利物理学家马可尼在1895年成功发现了无线电波,标志着无线通信技术的诞生。随后,无线电通信迅速发展,无线电台的建设和使用使得远距离的信息传输成为可能。 20世纪后半叶,移动通信技术开始崭露头角。在1960年代初,美国发明家马丁·库珀完成了世界上第一个手持式移动电话的试验,拉开了移动通信时代的序幕。随后,移动通信系统不断改进和扩展,从第一代(1G)模拟移动通信发展到现今的第五代(5G)数字移动通信,无线通信技术得到了飞速的发展。 与移动通信技术并行发展的是无线局域网技术。在上世纪90年代初,人们意识到无线局域网的潜力,并开始研究和推进相关标准的制定。其中最重要的标准之一就是IEEE 802.11,它开启了无线局域网技术的新纪元。 IEEE 802.11是由IEEE(Institute of Electrical and Electronics Engineers)制定的无线局域网标准,于1997年首次发布。它涵盖了无线局域网的各个方面,包括无线接入、数据传输、安全性等。IEEE 802.11标准为无线局域网的发展奠定……

    SE_Gao 2024-03-01
    49 0 0
  • mysql8 配置密码问题 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

      mysql8.0配置了新的安全策略所以配置密码是和5.7是不一样的。 首先,我们先按照他的要求配置一个符合的密码,如'FGsd_jfdlaflk455-+'就是那种自己记不住级别就行了。 然后使用命令 //如果没有先配好root的密码,使用初始密码是无法查看对应的参数的。 SHOW VARIABLES LIKE 'validate_password%';   然后修改参数 set global validate_password.policy=0; set global validate_password.length=1; 然后修改自己的密码变成简单的密码就可以。 ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword'; 生产环境建议还是使用复杂点的密码,避免自己的数据泄露出去。  

    SE_Gao 2024-02-29
    48 0 0