网络 数据库

1 篇文章 0 订阅
1 篇文章 0 订阅

网络相关 数据库

三次握手

客户端发送带SYN=1 seq=x的包给服务器端,进入syn_send状态。
服务器端接收到客户端的包后,检查到SYN=1时表明对方要请求连接,服务器端同意连接即发送一个带ACK=1,ack=x+1,SYN=1,seq=k的包给客户端,进入syn_recv状态。
客户端接收检查包信息。发送一个带ACK=1,ack=k+1,seq=y+1的包给服务器,进入established确认状态,服务器端接收后也进入确认状态。

扩展:

1,为什么是三次而不是两次?
因为两次的话只能证明客户端知道服务器端的接收和发送功能是正常的,不能说明服务端知道客户端能有效的进行接收,服务端不确定客户端是否同意它的连接请求。另一方面,如果只有两次,假设客户端发送了一次请求包,但由于某种原因延迟了到达服务端的时间,再发送了一次请求包,这时先到达服务端,服务端确认并发送确认包后由于客户端没有响应,而此时延迟的包到达了服务器端,服务器会认为之前的连接失败,客户端重新发送了请求,于是以此次连接为基础双方传输数据时,客户端不承认这个连接,双方进入等待状态,直到连接结束。
3,TCP报文格式
| 源端口 |目的端口 |
确认号
确认序号
数据偏移4|保留6|URG|ACK|PSH|RST|SYN|FIN|窗口
校验和|紧急指针
选项和填充
在这里插入图片描述
4,SYN网络攻击问题-典型的DDOS网络攻击(客户端请求连接,服务器响应连接,客户端一直未响应连接)
攻击者伪造大量的SYN+不存在的ip的包发送给服务器,服务器响应,但因为是伪造的ip所以一直停留在SYN_RECEVED状态。
解决:排查伪造包,输入netstat -n -p TCP或netstat -nap | grep SYN_RECV可以查看大量停留在SYN_RECEVED状态且随机的ip。
注:也是由于这个原因,所以在确认连接前不连带数据一起传输的原因,避免大量的伪造数据占据空间。

四次挥手

客户端(FIN=1,seq=y)>FIN_WAIT1
服务端接收后发送ACK=1,ack=y+1进入closed_wait,客户端接收到进入FIN_WAIT2
服务端传输数据结束后,发送FIN=1,seq=k,进入last_ack
客户端接收检查,发送ACK=1,ack=k+1回去后,进入TIME_WAIT状态,等待2MSL时间 服务端接收到后双方进入CLOSED状态

http:

应用层的超文本传输协议,基于请求和响应的,无状态的,常基于tcp/ip协议。提供一种用于发布和接收HTML页面的方法。
http报文的格式分请求报文和响应报文。请求报文分请求行,首部行,实体主体,其中请求行包括了方法,url,版本,crlf回车换行。响应报文包括了状态行,首部行,实体主体,状态行包括了版本,状态码,状态短语,crlf。
在这里插入图片描述

crlf攻击:

通过header每一行后有一个crlf,header和body之间两个crlf,通过在回车换行编码%0d%0a来给header添加一些属性,比如设置cookie,设置X_XSS_protected:0就可以对xss攻击不拦截了。
crlf就是回车换行的意思,cr回车lf换行

http的特点:

1,无状态,不会对客户端的状态进行存储,没有记忆功能
2,无连接,由于无状态特征,每次请求都需要重新连接,如果客户端向同一个资源进行请求,服务端不知道,都会做新的响应。
3,基于请求和响应。
4,明文传输,不能对对方进行身份认证,不能保证数据的完整性
5,简单快速,灵活。

解决Http无状态:1,增加cookie/session机制保存状态
2,设置持久连接,在请求首部字段添加connection:keep-alive代表持久连接

https
是带ssl加密协议的http。
特点:
1,内容加密。2,使用证书认证身份。3保护数据完整性,防止被冒充或篡改数据。

SSL,https是如何进行封装的?

ssl连接过程: 1,客户端请求连接到服务器的443端口,客户端发送随机数1和一组加密算法给服务端
2,服务端发送随机数2和客户端提供的加密算法(客户端加密算法的子集)给客户端响应握手信息
3,服务端发送证书信息给客户端
4,客户端检查证书信息,通过就产生随机数3(预主秘钥),使用公钥加密发送给服务器。
5,服务端使用私钥解密该秘钥。使用该秘钥与之前协商的随机数12组装成会话秘钥。(使用随机数12是为了使每次的会话秘钥都不同的概率增大)
6,客户端使用之前协商的随机数12,和秘钥组装成会话秘钥,加密传输数据发送给服务端,检验是否正常。
7,服务端使用会话秘钥加密信息也发送给客户端。

补充:
服务端会使用哈希函数先摘要原文成一段密文,再使用秘钥加密成数字签名传输,对方会使用公钥去解密,再把原来的原文使用哈希函数摘要,比对两个数字摘要是否相同,不同表示文件内容被篡改了。
在这里插入图片描述
怎么保证保证服务器给客户端下发的公钥是真正的公钥,而不是中间人伪造的公钥呢?
解决:使用双向验证,在客户端中内置服务器公钥。服务器发送CA证书时要求返回公钥。客户端也发送内置的证书。双方验证比对是否相同且是否和内置的公钥相同。

多路复用:使用同个tcp连接来多重并行进行请求和响应,提高处理速度
在这里插入图片描述

内连接、左连接、右连接

内连接就是满足连接条件的元组查询,外连接就是以一个表为基准表,除了满足条件的还要不满足条件的表的所有内容。
内连接:显式使用关键字Inner join,例子:select * from a inner join b on a.id=b.id;
隐式的情况就是普通的联表查询,select * from a,b where a.id=b.id,可能会出现笛卡尔积。取决于where后面的条件在两个表中是否是唯一性的。
与内连接对应的有外连接,外连接有三种:左连接,右连接,全外连接。
左连接:以左边表,也就是from后的表为基础,在它的基础上找到右边表满足的对应起来,左边表存在而右边表不存在的右边表的列字段补null。select * from a left join b on a.id=b.id。
右连接:同理。 right join
’全外连接:full join,把左边表对应右边表,右边列不存在补空,右边列对应左边列,左边列不存在补空,查询出全部元组。比如:select * from a full join b on a.id=b.id;
一般,选择合适的联表查询方式很重要,影响到数据的正确性。 当要查询两个表中相同的部分时可以用内连接; 当右边表是左边表的子集时可以用左连接;
当左边表是右边表的子集时可以用右连接; 当左边表和右边表彼此有交集且不是彼此的子集时,要查询全部,使用full join。

补充:交叉连接,也叫笛卡尔积。显示cross join,隐式,select * from a,b where…

进程线程、区别等

进程:进程是一个具体独立功能的程序在某个数据集合上的一次运行活动。它是系统资源分配和调度的基本单位。
线程:而线程是进程的实体,是比进程更小的独立单位,它是cpu分配和调度的基本单位。
区别:1,进程拥有自己的内存单位,而线程没有独立的内存单位,但是同属于一个进程下的线程可以共享进程的内存空间和资源。
2,线程不拥有系统资源,除了少部分的运行需要的栈,一组寄存器,程序计数器外。
3,线程是比进程更小的执行体,一个程序至少要有一个进程,一个进程至少要有一个线程。
4,进程比线程更健壮。当一个进程崩掉了,在保护模式下不会影响其他进程,而当一个线程崩掉了,整个进程也就死掉了。

状态码

1信息提示,接受的请求正在处理 2请求处理完毕 200成功 3重定向,分配了新的url,需要进行额外操作才能往下
301永久性重定向 302短暂性重定向 4
客户端错误 401请求报文语法错误 402未经许可,需进行http认证
403访问权限限制拒绝访问 404找不到请求的资源 5**服务端错误 500服务器处理请求时发生了错误
503由于服务器超负载或者停机处理导致无法处理请求。

linux搜索一个字符

grep -E -i ‘a|b’ 目录路径(-E表示“|”可以不用转义符号,不需写成“|”,-i表示忽略大小写区分)找含有字符a或者b的行。
文件搜索,find -type -name ‘*.png’

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值