# 秋招总结

# 0x00 废话~

秋招从七月份投的第一家特斯拉开始,到目前 (2022.10.15),已经投了快 170 家了,有安全,网络,运维岗,我只能投这三个岗,因为我也只会这三个。我常因为自己太菜与你们格格不入~。目前 offer 有四家。

我先叠个 buff,下面说的除了技术纯熟虚构,不要对号入座,要是真想展开聊聊可以到主页上找有一篇文章有我的 qq

1. 信锐 (技术支持)

通过三面拿到的 offer,一面基本技术面,二面半技术半问答 (文章接下来的问答指的均是聊天,比如有女朋友吗,对技服了解吗这类非技术相关的问题),三面纯问答聊天。最终想薪资也是目前到现在最高的,年薪可以达到 20,因为他在官网写了 20 起步,我就不打码了

2. 兴唐通信 (系统集成)

这是一家国企,带有一些保密性质,因此入职三年之内不能离职,这可能是我最不能接受的点,因为子曾经曰过:“安全人,安全魂,安全人都是人上人”,我的计划是今年经济形势不好先随便找个给的多的企业苟着,来年再战,混到安全去!因此我拒绝了这家的 offer。第二个原因就是给的是在有点少,虽然 base 在上海,我立即推当场回家,但上海不到 xxW (具体多少也不能透露,反正没有 xxW,大概 xxk),着实有些难受,而且他的风评也有些诡异,告辞,惹不起。补充一句,这家也有三面,好像三面都没怎么问技术

3. 中海达 (技术支持)

这是一家鸽王,第一批面试的时候鸽了我 20 分钟,当时还在实习,是在是等不起,于是到了第二批。第二批又鸽了我二十分钟,上午的面试,中午才给我打电话,说改到下午五点,五点又迟到 8 分钟大无语事件。但那天一面面完第二天还是第三天直接发 offer 了。offer 上面没写薪资没写待遇福利,实在难以下咽,遂告辞。更新 1.0:offer 是九月底发的,但十月中旬突然又来和我探讨薪资的事,您这个跨度有些大啊~,而且给的和兴唐差不多,难顶 (薪资水平 xk-xk 左右)

4. 保融科技 (技术支持)

这家公司只有二面,两次面试都没咋问技术,但聊得很开心,是秋招目前为止聊得最开心的公司,一面的小姐姐也很好看好评,但无奈薪资问题和预期差距过大,毕竟第一个信锐 offer 拿到后,后面面的给的都没信锐多,厂商规模也没信锐大,这家 base 在杭州,但我的 offer 是实施,就是全国出差的那种,那其实和信锐没啥区别了,两家做的东西都相同的情况下,肯定是找大厂和工资高的,保融啊我对不起你啊 (2,3,4 这三家其实薪资都差不多)(记一下吧反正不发出去,这个基本薪资 x500,也有烂七八糟的补贴)
10.20 补充

今天又拿了两家 offer,再来废话两句

5. 宏杉科技 (技术支持)

这是个存储的公司,在全国大部分城市都有办事处,工作地点也和信锐一样,结合自己的意愿和公司实际情况分配。这家是目前为止除了信锐给的第一多的,一个月基本工资能有 xxk,还有乱七八糟的房补,和其他补贴。但他不讲武德的地方在于,如果你把它违约了你需要支付违约金,但如果你因为他把别人违约了他是一分不给。(学学信锐,哪有这么白嫖的),而且常住地,户籍所在地是没有房补的。没有必要,拒了。面试一共两次,第一次问了点技术,第二次也问了点,但比第一次少很多,第二次多了很多职场题目。

6. 东方日升 (运维工程师)

这家应该是做经济的,我投的好像是啥技术类管培生,他的 offer 上是这么写的,我也不记得我投了啥了。这家一共只有一面,是 hr 和一个问技术的一起面的,但技术没问啥,全问的项目实习,这种回答了几千遍的题目是在没意思,我全程输出,他根本插不上嘴,我一堆 span-leaf,border-leaf 把它杀穿。然后第二天就给 offer 了,问题在于实习 x000,转正 x800。难顶啊~拒了拒了

10.21 补充,又拿了一家 offer 再来 bb 两句 ,说实话,每次拿到 offer 都把我搞的精疲力尽

7. 中科闻歌 (运维工程师)

这家是面到现在最心动的一家公司,面试只有一面,但三个面试官,第一个问网络,第二个问项目,第三个 hr 随便问点,但他们给人一种很重视应届毕业生的感觉,也可能是错觉,而且这家公司规模其实能比信锐更大一些,我投的是做运维的,据他们说他们公司会让网络和搞云计算的一起工作,达成一些目的。但无奈薪资实在尴尬,北京 xw,没有房补,我真的要露宿街头了,当场贷款上班,告辞,最不巧的是给信锐寄方法和给中科翁工决定是同一天的同一个下午,但凡他有个房补,我当场违约。

10.25 补充,这是昨天还是前天的 offer 了

8. 石化盈科 (网络安全工程师)

非常奇葩的面试,只有一面,但一面包车的面试官,一个腾讯会议进去十几个人,每个人都应该是部门的经理一类的,然后 hr 是先和你进行讨论的人,讲到哪个技术部门负责人感兴趣会对你进行追问,比如当时有个部门应该是搞渗透测试的,还有个应该是搞二进制的。这个 offer 也很奇葩,hr 告诉部门经理 offer 已经给我了,让他来找我沟通,结果我没有收到 offer,听这个人一顿讲,最后不知道薪资多少。最后还是他帮我问的,一个月 xk+,还是包含房补的,工作地点在北六环附近,那边租房也得 2k-3k,抢钱啊~,但听那人最后的意思是找我去做数据中心运维…

10.29 补充

9. 上海汉得信息 (云解决方案工程师)

这个虽然名字很高级,什么云方案,但其实就是运维 + 技术支持,在上海总部,这是他比信锐唯一好的一点,薪资的话 ([xk-xk]+ 房补),有培训期,2-3weeks,有实习期,你拿到毕业证之前都算实习期,还有试用期,6 months,最后才是转正,每一级都会比上一级至少少 80%,就是转正之后每天还要为 2k 奋斗,因为如果只拿 xk 容易饭都吃不起,40|80 是项目补贴,每天都有,试用 x,转正 x,x 好像是餐补,房补不会真给你,但他会在公司附近帮你租房,或者住员工宿舍,其实算下来在北京租完房剩的和这差不多了,但我还想等等大厂,毕竟这家。。不是特别有想法。

11.2 更新

10. 中科曙光(云平台网络研发工程师)

这家特别离谱,让我做了三遍测评,说是前两遍没过,hr 甚至还找不部门的人为了给我第三次机会,然鹅,我做完了第三次,他们就不鸟我了,我记得 10.31 看到了中科曙光毁约在牛客上,我 emmmm,结果他们今天又来找我了,还来沟通 offer,xw 年薪,每个月还有 x00 餐补,一天 10 块钱,我喝西北风去吧还有七险两金,说自己是国企性质,呵呵呵,谁都说自己国企性质,国企性质和国企是两码事,别被骗了,我拖了两天,给他和我都留个台阶下,不如意外肯定拒了,他 base 在成都,其实成都这个价还行,但我纠结汉得和信锐,可恶啊,Amazon 不理我,云智也不理我,难顶~

11.18 更新 之前装逼遭报应了,整整半个月没一个 offer

11. 迪普科技(技术支持工程师)

这是一家搞安全的公司,看深信服 hr 朋友圈发的安全厂商里面市值排名第八,还行吧,但他产品线真的广,从网络到无线到安全,他都有。昨天接到的 offer,昨天也把汉得拒了,今天准备违约信锐签迪普,信锐产品线太少了,只有路由器和交换机,而且迪普我以后能搞到安全的概率会更大,但 tm 违约信锐要交 xk,我去 tm 的,之前有个朋友让我去 boss 直聘上面看看,投了十几家,面了几家,得出的结论是 boss 直聘狗都不去,面试官素质极低,面试质量极差,真的无语了,这家待遇 [xx000+(x000-x000)]*(x)

11.21 补充

12. 缔安科技(网络工程师)

这家给的实在太少了,x-1xk,呜呜呜,面试倒还行,一面面了三面的活,一个人问技术,一个人问项目,一个人问情商题,还有一个主持人,技术问的很有趣,秋招到现在第一次有人问 mpls vpn,稀客呀~,项目就那样吧,回答的麻了,重复了上百遍的回答,最后那个情商题我回答的和狗屎一样,同时他也问了对公司的了解,这就要骂人了,你这么小公司,逼乎都搜不到,我去哪了解你,还说我没充分了解,我 g。

13. 吉祥航空 (通信网络工程师)

一共一面,两个面试官,一个主持一个问技术,技术问的都是些项目,比如控制出口选路,昨天面得今天发的 offer,但给的太少了,全包 x.8w,告辞,少的离谱

12.2 补充

14. 长亭科技 (技术支持)

长亭好啊,一面 10/6,二面 11.9,三面 11.21,四面 11.25,offer12.2,这个面试过程实在是太长了,中途差点就和迪普签了,但还好有 yq 的因素拖了 dp 很久,等来了长亭,但长亭在上海,给的 x000+x00(餐补)*x-x 我的 offer 的年薪越来越少,人家越拿越多,离大谱,但长亭逼乎上的的评价基本都是正向的,而某些迪普全是差评和喷 hr 的。。。本来打算过完年就去实习,结果西安 zf 发病,非要立马把人全放了,考试下学期考。。。我 tm 下学期要去实习了还要考试?你在想什么啊??

15. 石化盈科 (网络安全)

在北京 x00+x000,这他妈还包含住房补贴,我去北京贷款上班吧,还 x000 违约金,offer 拿多了就会发现越是垃圾的公司违约金越高,长亭就 xk,这某些盈科怎么敢要 xk 的啊,真大无语,告辞,惹不起

12.6 补充

16. 嘉兴银行(科技管培生)

笔试和测评环节超多,已经加起来有五场,后面还有一个 ai 面和两个面试,那两个面试都是群殴类型,你一个打对面五六个,offer 发的很晚,面试流程很长,你忍一下,他 offer 只有一个短信,没有薪资没有其他任何信息,只有让你在五个小时以内回复同意 offer,过期作废,金融企业面子是真大,没回复他们,拒了拒了。看了一下 xxxxxshow 说是 **W (研究生)

12.20 补充

17. 腾讯云智 (网络技术类)

面过程非常非常长,10.28 一面,最后 offer12.20 发的,虽然是从池子里捞出来的。当时面完三面就没结果了,结果 12 月初又给我发面试。在西安,投的时候都叫技术支持,实际在入职时的岗位会变,比如我就变成了网络类,我朋友变成了运维。他第一年给的真的很多,第一年 2* = xx000 + xx000 + xx000 + xx*13 ,但第二年 xx00 白送的没了,xx000 房补也没了,第二年就很拉了,但这是在西安,这个年薪还是非常可观的要是没有更好的或者你们不搞安全可以去。反正因人而异吧,反正我去长亭了告辞,顺便说下,那个 x2000 的年终奖是评级最高档的,dddd

再废话两句,1. 有能投的就投,千万别看大小,举个栗子,谁都没想到今年最高的是个没听过名字的机器人公司,你认为的小厂不一定是小厂,一般有机构看机构的就业群,没有找公众号,公众号的企业虽然多,但不是所有企业都要我这种 IT 的,秋招群里的信息实际上是老师们过滤之后的,有针对性了很多

2. 笔试和测评可能很多很多,但还是要好好做的,万一呢~

3. 考研,考研,考研,重要的事情说八百遍,今天面试的哥们问我你有 ie 为啥不去华为,我:…,华为是不会要双非的本科的,考研最好也往 211 考。

4. 最好对自己投的企业做个详细记录,同时对面试过程也做个详细记录,方便后续复盘,我今天的复盘的全部内容来自于我每次面完写的 CSDN,最好每次面完就复盘,这样对你下一家类似岗位的很有帮助,人不能在一个地方疯狂翻车

5. 不要死磕运维 / 安全岗,有给的多的,差不多能干的就先跑,不雅等春招,某个企业的 HR 在和我聊得时候透露等春招他们就剩个位数岗位或者直接不招了,而且春招还要再加几百万研究生们,难度直接上天

总结到这,废话说完了,开始正题,预计文章会有两大部分。 1.网络岗,技术支持岗,运维岗面试总结 2.安全岗面试总结

项目实习啥的就不说了问的基本上都一样,还有一些你遇到的困难,印象深刻的事啦,随缘临场发挥吧

安全岗包括但不限于安服,网络安全管培生等职位,和安全相关的都在下面列举

# 0x01 网络,技术支持,运维岗总结

# 1.DHCP 工作原理,报文种类

出现厂家:特斯拉一面(ip helper address),信锐(获取地址方法,问的其实还是这个),中科曙光,宏杉

image-20221016184839806
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1.四次交互获取IP
广播发送discover报文,寻找DHCP服务器
offer单播回,其中包含着一个ip地址和一些配置信息比如,网关,租期,dns等
广播发送request请求这个IP地址,发广播的原因可能网络中还有其他的DHCP服务器,告诉他们自己有了IP地址
dhcp服务器收到a的request之后单播发送一个ACK,此地址才可以开始使用

2.租期,续约
当租期到达50%会单播发送request包,服务器收到单播回复ack,主机租期刷新
在租期到达85%会广播发送request包,网络上任何一台DHCP服务器都可以应答ack或者nak,收到ACK刷新租期,收到NAK重新申请IP
当租期到达100%会发送release报文,释放IP地址,之后重新discover申请地址
即可以通过request刷新租期,release释放地址

3.DHCP是UDP的,使用67(server),68(client)

4.dhcp一共八种报文,剩下四种
NAK:服务器拒绝请求
release:释放IP地址
infrom:向服务端请求一些信息
decline:地址冲突时,告知服务器禁止使用此地址

5.一些协议细节~
1.如果该客户端上次也问服务端要过地址,那么客户端在检查该地址没有被分配有还是会分配给这个客户端(所以说dhcp是C/S的)
2.客户端发的discover含有request ip,服务端检查地址是否可用,如果可用,还是会分给客户端此地址
3.客户端发的discover不含request ip,服务端从地址池上找一个最小的可用IP分配
4.NAK的情况:请求的静态IP,MAC无法与之对应。ack中验证失败

6.DHCP offer中有租期是华为特有,其他厂商是使用inform报文
最好看看不同厂商对于DHCP的支持

# dhcp 中继 (云智)

1
2
DHCP中继,其实就是在与DHCP Server不同而又需要申请DHCP服务的网络内,设置一个中继器,中继器在该网络中代替DHCP Server服务器接收DHCP Client的请求,并将DHCP Client发给DHCP Server的DCHP报文,以单播的形式发送给DHCP Server。DHCP Server在收到由DHCP发送来的DHCP 报文后,同样会把响应的DHCP报文发送给DHCP 中继。这样,DHCP其实是充当了一个中间人的作用,起到了在不同的网络中运行DHCP的目的。

# 3.TCP/UDP 相关

# tcp 滑动窗口初始值,慢启动,流控 (快手)

1
2
3
4
5
6
7
8
9
10
11
12
滑动窗口
TCP连接每一方的接收缓冲空间大小都固定,接收端只允许另一端发送接收端缓冲区所能接纳的数据,TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出;TCP也是一样的,除了入口有发送方滑动窗口,出口处也设立有接收方滑动窗口。
拥塞控制
防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
拥塞控制避免
慢开始( slow-start )、拥塞避免( congestion avoidance )、快重传( fast retransmit )和快恢复( fast recovery )。
发送方维持一个拥塞窗口 cwnd ( congestion window )的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞。
发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。
慢开始算法:当主机开始发送数据时,如果立即所大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在并不清楚网络的负荷情况。因此,较好的方法是 先探测一下,即由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。通常在刚刚开始发送报文段时,先把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送方的拥塞窗口 cwnd ,可以使分组注入到网络的速率更加合理。
...自己看吧,我也不知道这啥玩意
https://blog.csdn.net/qq_41431406/article/details/97926927
https://blog.csdn.net/ligupeng7929/article/details/79597423

# TCP syn flood 防御 (快手)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
利用TCP三次握手协议,大量与服务器建立半连接,服务器默认需要重试5次,耗时63s才会断开接,这样,攻击者就可以把服务器的syn连接队列耗尽,让正常的连接请求不能处理。
最直接的做法就是提高服务能力,比如组建集群,升级硬件。
对于防火墙这类安全设备而言,SYN报文是正常的业务报文,防火墙的安全策略必须允许其通过,否则服务器就无法对外提供服务。
如果能明确虚假源的IP地址,就能通过精细的安全策略阻止这些源发来的SYN报文。
此时需要anti-DDoS。Anti-DDoS系统处理SYN报文主要有两种手段,源认证和首包丢弃。
Anti-DDoS系统拦截客户端发送的SYN报文,代替服务器向客户端发送SYN-ACK报文,如果客户端不应答,则认为该客户端为虚假源;如果客户端应答,则Anti-DDoS系统认为该客户端为真实源,并将其IP地址加入白名单,在一段时间允许该源发送的所有SYN报文通过,也不做代答。
如果Anti-DDoS系统代替服务器应答了所有的SYN Flood攻击报文,那么性能瓶颈仅仅是从服务器转移到了Anti-DDoS系统而已。一旦Anti-DDoS系统的系统资源耗尽,攻击依旧会透传到服务器,而且大量反弹的SYN-ACK报文也会对网络造成一定的压力。Anti-DDoS系统利用首包丢弃来解决这个问题。
TCP协议的可靠性不仅体现在三次握手,还体现在超时与重传的机制。正常情况下客户端发送SYN报文后如果在一定时间没有收到服务器的SYN-ACK应答,客户端会重新发送SYN报文。Anti-DDoS系统会丢弃掉收到的第一个SYN报文。SYN Flood攻击时,黑客发送的绝大多数是变源的SYN报文,所有的SYN报文对于Anti-DDoS系统来说都是首包,都将被直接丢弃。如果客户端重传了SYN报文,Anti-DDoS系统再对该报文进行源认证。如此一来,大大减少了Anti-DDoS系统代答的压力。首包丢弃和源认证两种手段结合,对于防御SYN Flood(特别是不断变换源IP和源端口的虚假源攻击)非常有效。
hping3
hping3是一个很有名的网络安全工具,使用它可以很容易构造各种协议包。
增大tcp_max_syn_backlog 增大队列用来存放还没有确认ACK的客户端请求
减小tcp_synack_retries 减少服务端重发ack的次数
启用tcp_syncookies 当启用tcp_syncookies时,backlog满了后,linux内核生成一个特定的n值,而不并把客户的连接放到半连接的队列backlog里(即没有存储任何关于这个连接的信息,不浪费内存)。当客户端提交第三次握手的ACK包时,linux内核取出n值,进行校验,如果通过,则认为这个是一个合法的连接。

过滤
增加积压
减少SYN-RECEIVED定时
复用古老的半开通TCP
SYN缓存
SYN Cookie
混合方法
防火墙和代理

# tcp 和 UDP 区别 (茄子,汉得)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议
UDP(User Data Protocol)是一个非连接的协议,传输数据之前源端和终端不建立连接

2.UDP和TCP报头长度
UDP 8字节
TCP 20字节

3.
UDP面向报文,尽力而为,没有拥塞控制等算法
TCP可靠,有差错校验,滑动窗口,流控,面向字节流

4.
TCP只能点到点全双工,UDP支持一对一,一对多,多对一

5.
TCP要求的系统资源较多,UDP较少

# tcp 四次挥手 timewait 作用 (长亭)

img

img

1
2
3
4
5
6
7
8
9
timewait的作用:
为了确保最后的 ACK 能让被动关闭方接收,从而帮助其正常关闭。
在这里,如果图中主机 1 的 ACK 报文没有传输成功,那么主机 2 就会重新发送 FIN 报文。如果主机 1 没有维护 TIME_WAIT 状态,而直接进入 CLOSED 状态,它就失去了当前状态的上下文,只能回复一个 RST 操作,从而导致被动关闭方出现错误。而重发fin一来一去正好两个MSL
让之前因为某些原因延迟到达路由器的报文消失,如果关闭的连接被重用了,那么这些延迟收到的包就有可能会跟新连接混在一起
time-wait是从主机A收到FIN后发送ack开始计时的

timewait的危害
第一是内存资源占用
第二是对端口资源的占用,一个 TCP 连接至少消耗一个本地端口。

# 为啥挥四次握三次 (长亭)

1
2
为了保证A发送的最有一个ACK报文段能够到达B。
没有数据传输,服务端的SYN和ACK报文可以一起发送,但是挥手时有数据传输,等待自己的数据传输完成后再ACK,ACK和FIN报文不能同时发送

# 接下来是八股文时间:~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
0x00 TCP第一次握手SYN包丢包
重传第一个包,重传次数由/proc/sys/net/ipv4/tcp_syn_retries决定,每次重传的时间翻倍上涨的,直至达到tcp_syn_retries决定,不在重传,开始摆烂
1 2 4 8 16 32 酱紫翻倍的

0x01 TCP第二次握手SYN包丢包
客户端无法收到synack包,会重传syn。
服务端收到客户的SYN包后,就会回SYN、ACK包,但是客户端一直没有回ACK,服务端在超时后,重传了
SYN、ACK 包,接着一会,客户端超时重传的SYN包又抵达了服务端,服务端收到后,超时定时器就重新
计时,然后回SYN、ACK包,所以相当于服务端的超时定时器只触发了一次,又被重置了;
当第二次握手的SYN、ACK丢包时,客户端会超时重发SYN包,服务端也会超时重传SYN、ACK包。同时客户端重传次数由tcp_syn_retries决定

0x02
TCP第三次握手SYN包丢包
如果第三次握手的ACK,服务端无法收到,则服务端就会短暂处于SYN_RECV状态,并且依次等待3秒、6秒、12秒后重新发送SYN+ACK包,而客户端会处于 ESTABLISHED 状态。由于服务端一直收不到TCP第三次握手的ACK,则会一直重传SYN、ACK包,直到重传次数超过tcp_synack_retries,直至重传次数超过tcp_synack_retries

0x03
// 第一次握手重传次数限制
cat /proc/sys/net/ipv4/tcp_syn_retries

// 第二次握手重传次数限制
cat /proc/sys/net/ipv4/tcp_synack_retries

// 数据包最大重传次数限制
cat /proc/sys/net/ipv4/tcp_retries2

参考链接:https://juejin.cn/post/6844904181795389454
师傅在文章里还有详细截图,看不懂我写的可以去看他写的~

0x04 TCP第一次挥手FIN包丢包
client发的FIN包丢了,对于client,因为没收对应的ACK包,应当一直重传(像普通包一样),直至到达上限次数,直接关闭连接;对于server,它应该无任何感知;

0x05 TCP第二次挥手ACK包丢包
server回client的ACK包丢了,对于client,将执行(1),对于server将像丢普通的ack一样,再次收到FIN后,再发一个ACK包;

0x06 TCP第三次挥手FIN包丢包
如果client收到ACK后,server直接跑路。client将永远停留在这个状态(半打开状态,就像client关闭了输出一样)。linux有tcp_fin_timeout这个参数,设置一个超时时间 cat /proc/sys/net/ipv4/tcp_fin_timeout 查看,默认60s。
server发的FIN包丢了,对于server,像丢普通的包一样,重传。若此时client早已跑路且与其他人建立的连接,client应会不认识这个FIN包,直接回个RST包给server。如若client没跑路,且没收到server的FIN包,如(3)描述;

0x07 TCP第三次挥手ACK包丢包
防止回复的ACK包丢失(丢失后,server因为没收FIN的ACK,所以会再发一个FIN),将等待2MSL(最大报文存活时间)

0x08 大结局
syn = 1丢了 计时器超时后重传第一个包(syn=1)
syn = 1, ack = 1丢了 重传第一个(syn=1)和第二个包(syn=1,ack=1)
ack = 1丢了 等待3秒、6秒、12秒后重新发送第二个(syn=1,ack=1)包
客户端fin = 1丢了 重传第一个包(fin=1)
服务端ack = 1丢了 重传第一个(fin=1)和第二个包(ack=1)
服务端fin = 1丢了 服务端重传第三个包(fin=1),client行为分类讨论,如果已经和别人建立了连接,那么回RST,如果没跑路,那么client将永远停留在这个状态(fin-wait)
客户端ack = 1丢了 服务端重传第三个包(fin=1),客户端等待Time-wait,即2MSL
如果他接下来再问你wait-time是干啥的,你直接创他
但我上面写了,别说我没写

链接:https://www.cnblogs.com/quehualin/p/10409607.html
这个师傅写得很详细,师傅流啤~

# 连续收到三个 ack 怎么办(云智)

1
2
即,当TCP源端收到3个相同的ACK确认时,即认为有数据包丢失,则源端重传丢失的数据包,而不必等待RTO(Retransmission Timeout)超时。
https://www.ppkanshu.com/post/4505.html

# 4.OSI 相关

# 路由协议分类 (宏杉,中科曙光,信锐)

1
2
3
4
5
6
从大类分,分为BGP和IGP 即内部网关和边界网关协议
BGP 中只有BGP这一个协议,BGP 又可以称为路径矢量型协议
IGP 中可以分为两大类:
距离矢量: RIP,EIGRP(高级的距离矢量型协议,Cisco私有)
链路状态:ISIS ,OSPF
然后慢慢扩展吧,千万别说完这个就不说了,你说说每个协议的应用场景等

# osi/tcpip 区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
OSI:							TCP/IP
应用层 应用层
表示层
会话层
传输层 传输层
网络层 网路层
数据链路层 网络接口层
网络层

层数不同—-OSI为7层,TCP/IP为四层或五层
TCP/IP支持跨层封装;OSI不支持 跨层封装主要用于非终端设备间相互沟通的流量,非远距离;
TCP/IP仅仅支持IP网络协议; OSI支持多种网络层协议(IP IPX APPLE TALK NOVELL NSAP)
TCP/IP 参考模型没有对网络接口层进行细分,只是一些概念性的描述; OSI 参考模型对服务和协议做了明确的区分。
OSI 先有模型,后有协议规范,适合于描述各种网络;TCP/IP 是先有协议集然后建立模型,不适用于非 TCP/IP 网络。
TCP/IP 一开始就提出面向连接和无连接服务,而 OSI 一开始只强调面向连接服务,直到很晚才开始制定无连接的服务标准。
OSI 实现起来较困难;相反,TCP/IP作为一种简化的分层结构还是比较成功的。

# 二层三层交换机的区别 (深信服)

1
2
3
4
5
6
7
8
9
10
11
二层交换机属数据链路层设备
三层交换机工作在网络层

二层交换机的原理是当交换机从某个端口收到一个数据包,它会先读取包中的源MAC地址,再去读取包中的目的MAC地址,并在地址表中查找对应的端口,如表中有和目的MAC地址对应的端口,就把数据包直接复制到这个端口上。
三层交换机的原理比较简单,就是一次路由多次交换,通俗来说就是第一次进行源到目的的路由,三层交换机会将此数据转到二层,那么下次无论是目的到源还是源到目的都可以进行快速交换。

二层交换机基于MAC地址访问,只做数据的转发,并且不能配置IP地址
三层交换机将二层交换技术和三层转发功能结合在一起,也就是说三层交换机在二层交换机的基础上增加了路由功能,可配置不同VLAN的IP地址,可通过三层路由实现不同VLAN之间通讯。

二层交换机主要用于网络接入层和汇聚层
三层交换机主要用于网络核心层,但是也存在少部分三层交换机用于汇聚层的现象

# OSI 每层协议 (长亭,招联,中科曙光)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
应用层:
http/https 80/443
dns 53
snmp 161/162
smtp 25
ftp 20/21
pop3 110
telnet 22

表示层
GIF
JPEG
ASCII
HTML
encryption

会话层:
NetBIOS
AppleTalk
NFS

传输层:
tcp
udp

网络层:
IP,IPX

数据链路层
FR
HDLC
PPP
802.3
ATM

物理层
RJ45
Ethernet

TCP/IP
应用层:参考OSI
传输层:TCP,UDP
网络层:ICMP,IGMP
数据链路层:ARP

你真想混起来将我觉得也没事,估计面试官也分不清楚,我之前一致混起来讲的,面试官听得挺开心,我讲的也挺开心~
毕竟分太细容易把自己埋了,他不问你不说,大家dddd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
顺带着我就把常见端口写了
http/https tcp 80/443
dns tcp+udp 53
snmp udp 161/162
smtp tcp 25
ftp tcp 20/21
pop3 tcp 110
telnet 23
dhcp 67/68
ssh 22
tftp udp 60
JBOSS Tomcat 8080
RDP 3389
Oracle 1521
mssql tcp/udp 1433,1434
mysql 3306
samba 139
ladp 389
redis 6379
weblogic 7001

# 封装解封装 (长亭)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
应用层,人机交互接口,接收用户输入
表示层,将接收到的数据翻译成二进制数组成的计算机语言,并对数据进行压缩和解压、数据加密和解密等工作
会话层,建立、管理、中止会话。
传输层,为每个数据封装 TCP或UDP 报文头部。 在头部有一个关键的字段信息——端口号,它用于标识上层的协议或应用程序,确保上层应用数据的正常通信。
网络层,上层数据被封装上新的报文头部——IP 头部。 在 IP 头部中有一个关键的字段信息——IP 地址,进行逻辑地址寻址
数据链路层,上层数据被封装一个 MAC 头部,其内部有一个关键的字段信息 ——MAC 地址,在 MAC 头部也同时封装着目标 MAC 地址和源 MAC 地址,进行硬件地址寻址、差错校验等功能。
在物理层,将这些二进制数字组成的比特流转换成电信号在网络中传输。

在物理层,首先将电信号转换成二进制数据,并将数据送至数据链路层
在数据链路层, 将查看目标 MAC 地址,判断其是否与自己的 MAC 地址吻合,并据此完成后续处理。如果 数据报文的目标 MAC 地址就是自己的 MAC 地址,数据的 MAC 头部将被“拆掉”,并将剩余 的数据送至上一层;如果目标 MAC 地址不是自己的 MAC 地址,对于终端设备来说,它将 会丢弃数据
在网络层与在数据链路层类似,目标 IP 地址将被核实是否与自己的 IP 地址相 同,从而确定是否送至上一层
到了传输层,首先要根据 TCP 头部判断数据段送往哪个应用层协议或应用程序,然后将之前被分组的数据段重组,再送往应用层
会话层,建立、管理、中止会话。
表示层,将接收到的二进制变为应用的数据,并对数据进行压缩和解压、数据加密和解密等工作
在应用层,这些数据将经历复杂的解码过程,以还原发送者所传输的原始信息。

# 5.OSPF 相关

# ospf 负载分担 (快手)

1
2
华为产品文档ospf cost命令原话
当有多条发现协议、开销值、目的地址都相同的路由时,这几条路由就满足负载分担的条件。请根据实际组网情况,通过修改接口开销值来选择是否需要进行负载分担。

# 需要 A->B 不负载分担,回程不管,在哪配开销,来回路径不一致有问题吗(快手)

1
2
3
4
5
6
7
8
9
在A配,因为A发送时需要查看路由表,只有路由表中没有开销相同的路由才不会负载分担

路由来回路径不一致虽然还是可以通信,但是可能会出现偶尔访问慢或规律丢包等现象。
因此可考虑配置路由优先级或冗余端口来实现主备。
但对安全设备来说,有影响,可能对应报文会被丢弃。

华为中fw可以如下操作:
如果出现来回路径不一致情况,不管是在路由模式下,还是在透明模式下,此时默认都是开启的链路状态检测。要解决这个问题,关闭链路状态检测即可,即:
undo firewall session link-state check

# 单区域网络类型 P2P 有几种 LSA (快手)

1
只有1类

image-20221020210537797

image-20221020210832630

# 5.4LSA 常见类型 (快手)

1
2
3
4
5
6
1类LSA 每台运行ospf协议的路由器都会产生,用于描述加入到OSPF进程中自身直连链路的状态。有路由和拓扑信息
2类LSA 携带DR的router-id,DR接口子网掩码,伪节点的邻居,单区域p2p是没有2类的,有路由和拓扑信息
3类LSA 在区域间传递LSA,只有路由信息
4类LSA ABR产生,描述了ASBR的位置,类似路由信息
5类LSA 外部LSA,携带重发布的路由信息,只有路由信息
7类LSA NSSA区域引入外部路由时产生

# 5.5OSPF 防环 (快手)

1
2
3
4
5
6
7
8
9
区域内通过spf防环
区域间通过:
区域间水平分割(1类,2类优于3类,骨干3类优于非骨干3类)
区域设计原则(非骨干必须和骨干直接相连)
ABR(只有ABR能产生泛洪3类LSA)
区域间防环:
5类LSA在整个区域泛洪时link id,adv rtr,type 都不改变
ASBR同一区域的路由器通过SPF计算出去往ASBR的无环路径,即通过1类2类防环
ASBR不同区域的路由器通过4类LSA防环,4类防环规则与3类一致

# 5.6SPF 算法 (快手)

1
2
https://blog.csdn.net/qq_57686163/article/details/123466172
这篇文章师傅写的很明白了,我不想写了,摆烂

# 5.7DR,BDR (宏杉)

1
2
3
4
5
6
7
8
9
10
基于链路选择。即在每一条广播型链路或NBMA链路都需要进行DR,BDR选举,BDR可选存在。即在每一条广播型链路或NBMA链路上DR只有一个,BDR如果存在有且只有一个
DR只会从DR的合集当中竞选,BDR只会从BDR的合集当中竞选。如果集合当中有路由器,优先从集合当中竞选。

DR选举(包含在hello包内): 1.比较优先级 (范围:0-255,默认优先级为1 ,越大越优)
2.比较各自的router-id,越大越优

1.DR抢占是关闭的
3.优先级范围0-255,数字为0代表不参与选举,默认为1,若两个直连路由器优先级都为0,则不能学习LSA,只能维持邻居关系
4.先选举BDR ,再升级为DR (BDR备份路由器,当BDR选举超过40秒后(=dead time),升级为DR,将剩下最优的作为BDR)
当DR BDR选举完成时,会给224.0.0.6发送组播传递LSA,且只有DR和BDR才会接收,DR和BDR在用224.0.0.5发送给所有

# 5.8ospf 建立邻居

Down: 这是邻居的初始状态,表示没有从邻居收到任何信息。

Init: 判断邻居参数可以建立邻居后 init。在此状态下,路由器已经从邻居收到了 Hello 报文,但是自己的 router-id 不在所收到的 Hello 报文的邻居列表中,表示尚未与邻居建立双向通信关系,可以称为 one-way。在此状态下的邻居要被包含在自己所发送的 Hello 报文的邻居列表中。

2-Way: 在此状态下,收到邻居 hello 包,并从 hello 包中发现自己 router-id。两台路由器已确认可以双向通信,邻居关系已经建立;但是还没有建立邻接关系。若发送方收到的 hello 包中有自己 id,可以直接进入 two-way。这是建立邻接关系以前的最高级状态。如果网络为广播网络或者 NBMA 网络则选举 DR/BDR。drother 之间停留此状态,不会进行 LSDB 同步,其他情况会继续进行 LSDB 同步

exstart 状态,开始发送 DBD 报文。主要完成主从选举,为可靠的 LSDB 同步做准备工作,不会携带任何 LSDB 中 LSA 头部信息

exchange 主从选举完成后,一旦发送携带 LSA 头部的 DD 报文,则进入 exchange,slave 路由器开始发送携带自身 LSDB 中 LSA 的头部信息的 DBD 报文,并使用

loading 状态发送 LSR,LSU,LSACK ,LSACK 中会将 LSU 的 Seq 作为自己的 seq,同时携带摘要作为显示确认

FUll:LSR 重传列表为空,发送和接受 LSACK 报文后,防止同步出现问题。

attempt— 过度状态,在某些不能发送的 hello 包的网络中,不能主动建立邻居。通过单播邻居方式建立,需要选 DR 时,等待选举状态为 attempt 状态

停留 attempt 状态说明单播指邻居邻居指错

# 5.9ospf 卡在 exstart 状态的原因(迪普)

1
2
3
4
5
卡在down状态:OSPF没有运行;
卡在init状态:没有收到对方的包;
卡在2-way状态:MA网络没法选举;
卡在exstart状态:MTU不匹配;
卡在loading状态:LSA加载不完全、包交互有问题;

# 5.10ospf 影响邻居建立因素(迪普)

1
2
3
4
5
6
7
8
9
10
11
router-id冲突
area id
auth type
auth data
network-mask
hello-interval
dead-interval
options
MTU (DD)
ospf network-type
silent interface

# 5.11p2mp 和 p2p 能建邻居吗(迪普)

可以建立邻居,P2MP 以组播形式发送 hello 报文,P2P 以组播形式发送所有报文

但 P2P hello 时间 10s,P2MPhello 时间 40s,需要手动修改 hello 时间一致

# 6.BGP 相关

# 6.1origin 属性,network 和 import 都是什么属性,优先级,origin 控制选路 (快手)

1
2
3
4
5
6
定义路径信息的来源。描述该路由是用什么方式成为BGP路由的,公认必尊
1.将IGP路由network到BGP中 i
2.将EGP路由import到BPG中 e
3.将IGP路由import到BGP中 ?
选路时origin i > e > ?
手动汇总路由继承明细路由中优先级最低起源属性,自动汇总origin全部为incomplete(?)

# bgp 选路(中科闻歌,绿盟)

1. 优选协议首选值 (PrefVal) 最高的路由

2. 优选本地优先级 (Local_Pref) 最高的路由

3. 优选本地生成的路由,解决路由冲突,agg > auto > network > import > peer

4. 优选 AS 路径 (AS_Path)最短的路由

5. 比较 Origin 属性,依次优选 Origin 类型为 IGP、EGP、Incomplete 的路由

6. 优选 MED 值最低的路由

7. 优选从 EBGP 邻居学来的路由 (EBGP 路由优先级高于 IBGP 路由)

8. 优选到下一跳 IGP Metric 较小的路由

----------------------------

9. 优选 Cluster_List 最短的路由,没有簇列表簇列表为空,没有簇列表一定更优

10. 优选起源 ID,越小越优

11. 优选 Router lD 最小的路由器发布的路由

12. 比较对等体的 IP Address,优选从具有较小 IP Address 的对等体学来的路由

简单来说

P L L A O M E N 漂亮老男人

Pref LocalPre Local AS origin MED EBGP next_cost

BGP 邻居建立 (迪普)

image.png

ldle (空闲) : ldle 是 BGP 连接的第一个状态,在空闲状态,BGP 在等待一个启动事件,启动事件出现以后,BGP 初始化资源,复位连接重试计时器 (Connect-Retry),发起一条 TCP 连接,同时转入 Connect (连接)状态。

Connect (连接)︰在 Connect 状态,BGP 发起第一个 TCP 连接,如果连接重试计时器 (Connect-Retry) 超时,就重新发起 TCP 连接,并继续保持在 Connect 状态,如果 TCP 连接成功,就转入 OpenSent 状态,如果 TCP 连接失败,就转入 Active 状态。

Active (活跃)︰在 Active 状态,BGP 总是在试图建立 TCP 连接,如果连接重试计时器 (Connect-Retry) 超时,就退回到 Connect 状态,如果 TCP 连接成功,就转入 OpenSent 状态,如果 TCP 连接失败,就继续保持在 Active 状态,并继续发起 TCP 连接,没有收到对 open-send 报文的确认报文。

TCP 三次握手建立。自己发送 open,等待接收正确的 open。接收正确 open 的进入 openconfirm,发 keepalive,收到对方 keepalive 进入 established。对方也是这个过程

BGP 路由刷新 (迪普)

Route-Refresh

用于手动实现 BGP 触发更新。不中断 TCP 会话触发更新,可以针对邻居触发更新

refresh bgp all (peer) export 向对方发送 update message,更新对方路由信息

refresh import 向对方发送 route-refresh,对方收到后回复 update message 完成路由刷新

route-refresh 报文中携带 AFI 和 SAFI

img

BGP 路由撤销 (迪普)

1.IPV4 路由撤销

通过 update 报文 NLRI 字段中的 withdraw route 实现,其中不携带任何属性

2.VPNV4 路由撤销

不携带路由属性,在 update 报文 path attribute 中 MP_UNREACH_NLRI 携带撤销路由

不携带路由属性,只携带 RD 和标签栈

# 7. 双点双向重发布 (快手)

1
2
3
4
5
6
7
8
9
10
11
在多点双向重发布中,若A协议的优先级大于(次)B协议,此时若将A协议通过一台ASBR引入到B协议时,那此优先级会降低(变优),会导致另一台ASBR路由表的生成,此时另一台ASBR再次将B往A协议重发布时,原先A协议的路由会再次回到A协议中--路由回馈
解决方案:将重发布进来的路由优先级改高--Cisco提出,在Cisco的EIGRP协议中,内部路由优先级90,外部170。所以,华为设备因为不支持EIGRP,仅支持OSPF,所以借鉴了Cisco的做法--在华为中,OSPF内部优先级10,外部150
OSPF协议学习OSPF网络内的所有环回接口网段时,学习到的都是32为的主机路由,但是将本设备工作在OSPF的直连接口重发布时时原本的掩码,
所以可能会导致在重发布时同一条路由条目变成不同的掩码发布到另一协议
解决方案:
1)修改环回接口掩码直接为32位
2)修改环回接口的OSPF工作的网络类型
在进行多点双向重发布时,由于协议之间不兼容,因此原路由的度量值进入新协议时,会被起始度量代替,所以存在选路不佳的问题
解决方案:需要人为的干涉选路---路由策略技术
注意:BGP与OSPF或其他协议做多点多向重发布,会出现瞬时环路。
就是BGP收敛慢,OSPF收敛快,两个协议启动会存在时差,在这个时差内协议的边界路由器是没有BGP协议的路由,那么在协议边界路由上就存在路由黑洞

# 8.http/https 相关问题

# http 状态码 (汉得,曙光)

1
2
3
4
5
6
7
8
9
10
11
12
常见状态码          
200 请求成功
301 永久重定向
302 临时重定向
400 请求错误,通常是访问的域名未绑定引起
403 禁止访问
404 请求的内容未找到或已删除
500 服务器端程序错误
502 网关无响应
503 服务器端临时错误
504 网关超时
https://seo.juziseo.com/doc/http_code/

# 访问网页过程 (信锐,汉得)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1.首先在浏览器地址栏中输入URL或者域名。
2.电脑开始域名解析:
看查找IP是否是本机。不是再去查询浏览器缓存,本机hosts文件,如果有对应的IP则进行反馈,然后进行下一步。如果本机Hosts文件不含有,则本机向发出一个DNS请求到本地DNS服务器。
DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地DNS服务器还要向DNS根服务器进行查询。
根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。
最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。
网址真正的解析过程为: . -> .com -> Microsoft.com. -> www.Microsoft.com.
3.进行tcp三次握手
上面八股文你有写过,自己看吧
4.http/https请求和返回
HTTP报文是包裹在TCP报文中发送的,服务器端收到TCP报文时会解包提取出HTTP报文。
https = http + tls,具体下面有写,这边就不写了,开摆
浏览器对服务器发出HTTP请求报文
发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议中发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)。HTTP请求报文是由三部分组成: 请求行, 请求报头和请求正文。
服务器处理请求并返回HTTP响应报文
后端从在固定的端口接收到TCP报文开始,这一部分对应于编程语言中的socket。它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用。HTTP响应报文也是由三部分组成: 状态码, 响应报头和响应报文。
5.浏览器渲染页面
浏览器在收到HTML,CSS,JS文件后,浏览器是一个边解析边渲染的过程。首先浏览器解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。

# https (长亭)

1
2
3
4
5
6
7
8
9
10
HTTPS是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。
https = http + tls
tls 位于传输层上层
HTTPS在传输数据之前需要客户端与服务器进行一个握手(TLS/SSL握手),在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL使用了非对称加密,对称加密以及hash等。
HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:
1、TCP 三次同步握手
2、客户端验证服务器数字证书
3、DH 算法协商对称加密算法的密钥、hash 算法的密钥
4、SSL 安全加密隧道协商完成
5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。

1、客户端发起 HTTPS 请求

就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。

2、服务端的配置

采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面 (startssl 就是个不错的选择,有 1 年的免费服务)。

这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3、传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4、客户端解析证书

这部分工作是有客户端的 TLS 来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5、传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6、服务端解密信息

服务端用私钥解密后,得到了客户端传过来的随机值 (私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7、传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8、客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

image-20221022105328092

HTTP 与 HTTPS 的区别 | 菜鸟教程 (runoob.com)

# http/https 区别 (没人问,我自己问着玩)

1
2
3
4
5
6
7
8
9
HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

# http1.0,1,1 和 2.0 区别 (长亭)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
1.1.0和1.1之间的区别
1.缓存策略:
http1.0的缓存策略主要是依赖header中的If-Modiified-Since,Expire(到期)
http1.1的缓存策略要比http1.0略多,例如 Entity tag(实体标签), If-Unmodified-Since, If-Match, If-None-Match等.
2. 宽带和网络连接优化:
http1.0中会存在一些性能浪费,比如我们的只需要对象中的一部分,但是每次请求返回的却是整个对象,这无疑造成了性能的损害
http1.1则不然,它可以通过在请求头处设置range头域,就可以返回请求资源的某一部分,也就是返回码为206(Partial Content)的时候,这对于性能优化很有必要.
这里所谓的请求资源的一部分,也就是大家常说的断点续传
关于断点续传的应用场景,例如用户需要下载一个大文件,最佳的方式是将这个大文件分割成几部分,然后由多个进程同时进行.
这个时候,我们可以在请求头中设置range字段,来规定分割的byte数范围.
而服务端会给客户端返回一个包含着content-range的响应头,来对应相应的分割byte数范围
请求头中:
Range: bytes=0-801 // 一般请求下载整个文件是bytes=0- 或不用这个头
响应头中:
Content-Range: bytes 0-800/801 //801:文件总大小
3. 新增部分错误通知:
http1.1版本新增了24个错误状态响应码,比如
409(Conflict)表示: 请求的资源与当前的状态发生冲突
410(Gone)表示服务器上某个资源被永久性的删除了
4.Host头处理:
http1.0中默认每台服务器都绑定唯一的一个IP地址,所以请求消息中url并没有传递主机名,也就是hostname.
http1.1中请求消息和响应消息都支持Host头域,而且,如果我们不传这个字段还会报一个400(bad request)的状态码
通用头域:
Cache-Control: 缓存头域 => 常见值为no-cache(不允许缓存), no-store(无论请求还是响应均不允许缓存), max-age(规定可以客户端可以接受多长生命期的数据)
Keep-Alive: 使得服务端和客户端的链接长时间有效
Date: 信息发送的时间
Host: 请求资源的主机IP和端口号
Range: 请求资源的某一部分
User-Agent: 发出请求的用户的信息(鉴权)
5. 长连接:
http1.1支持长连接和请求的流水线(pipelining),在一个TCP链接上可以传送多个http请求和响应.这样就不用多次建立和关闭TCP连接了.

2.1.x和2.0的区别
http1的解析是基于文本协议的各式解析,而http2.0的协议解析是二进制格式,更加的强大
多路复用(Mutiplexing) : 一个连接上可以有多个request,且可以随机的混在一起,每个不同的request都有对应的id,服务端可以通过request_id来辨别,大大加快了传输速率
header压缩: http1.x中的header需要携带大量信息.而且每次都要重复发送.http2.0使用encode来减少传输的header大小.而且客户端和服务端可以各自缓存(cache)一份header filed表,避免了header的重复传输,还可以减少传输的大小.
服务端推送(server push): 可以通过解析html中的依赖,只能的返回所需的其他文件(css或者js等),而不用再发起一次请求.
Keep-Alive:
Keep-Alive 是使用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,而不是为每一个新的请求/应答打开新的连接的方法。我们知道 HTTP 协议采用“请求-应答”模式,当使用普通模式,即非 Keep-Alive 模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接( HTTP 协议为无连接的协议);当使用 Keep-Alive 模式(又称持久连接)时,Keep-Alive 功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了建立或者重新建立连接。

总结:
HTTP1.0
浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接
HTTP1.1
引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用
在同一个TCP连接里面,客户端可以同时发送多个请求
虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的,服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理需要时间特别长特别慢,后面的请求只能排队等着
新增了一些请求方法put、delete、options
新增了一些请求头和响应头
HTTP2.0
采用二进制格式而非文本格式
完全多路复用,而非有序并阻塞的、只需一个连接即可实现并行
使用报头压缩,降低开销
服务器可以推送
链接:https://juejin.cn/post/7089068858241515551

# http 报文组成 (长亭) 头行

HTTP 请求报文是由三部分组成: 请求行请求报头请求正文

后端从在固定的端口接收到 TCP 报文开始,这一部分对应于编程语言中的 socket。它会对 TCP 连接进行处理,对 HTTP 协议进行解析,并按照报文格式进一步封装成 HTTP Request 对象,供上层使用。

HTTP 响应报文也是由三部分组成: 状态码响应报头响应报文

img

①是请求方法,GET 和 POST 是最常见的 HTTP 方法,除此以外还包括 DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持 GET 和 POST

②为请求对应的 URL 地址,它和报文头的 Host 属性组成完整的请求 URL。

③是协议名称及版本号。

④是 HTTP 的报文头,报文头包含若干个属性,格式为 “属性名:属性值”,服务端据此获取客户端的信息。

⑤是报文体,它将一个页面表单中的组件值通过 param1=value1&m2=value2 的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求 URL 也可以通过类似于 “/chapter15/user.html? param1=value1&m2=value2” 的方式传递请求参数。

img

img

①报文协议及版本;
②状态码及状态描述;
③响应报文头,也是由多个属性组成;
④响应报文体,服务器返回给浏览器的文本信息,通常 HTML, CSS, JS, 图片等文件就放在这一部分。

# get 和 post 区别(汉得)

Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的 GET 和 POST 方法。二者主要区别如下:

  • 1、Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传递数据。
  • 2、Get 将表单中数据的按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用 “?” 连接,而各个变量之间使用 “&” 连接;Post 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action 所指向 URL。
  • 3、Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求 URL 记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post 的所有操作对用户来说都是不可见的。
  • 4、Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输大量的数据,所以在上传文件只能使用 Post(当然还有一个原因,将在后面的提到)。
  • 5、Get 限制 Form 表单的数据集的值必须为 ASCII 字符;而 Post 支持整个 ISO10646 字符集。
  • 6、Get 是 Form 的默认方法。

使用 Post 传输的数据,可以通过设置编码的方式正确转化中文;而 Get 传输的数据却没有变化。在以后的程序中,我们一定要注意这一点。

# session 和 cookie 区别(汉得)

1.Cookie 的工作原理
(1)浏览器端第一次发送请求到服务器端

(2)服务器端创建 Cookie,该 Cookie 中包含用户的信息,然后将该 Cookie 发送到浏览器端

(3)浏览器端再次访问服务器端时会携带服务器端创建的 Cookie

(4)服务器端通过 Cookie 中携带的数据区分不同的用户

————————————————

2.Session 的工作原理

(1)浏览器端第一次发送请求到服务器端,服务器端创建一个 Session,同时会创建一个特殊的 Cookie(name 为 JSESSIONID 的固定值,value 为 session 对象的 ID),然后将该 Cookie 发送至浏览器端

(2)浏览器端发送第 N(N>1)次请求到服务器端,浏览器端访问服务器端时就会携带该 name 为 JSESSIONID 的 Cookie 对象

(3)服务器端根据 name 为 JSESSIONID 的 Cookie 的 value (sessionId), 去查询 Session 对象,从而区分不同用户。

name 为 JSESSIONID 的 Cookie 不存在(关闭或更换浏览器),返回 1 中重新去创建 Session 与特殊的 Cookie

name 为 JSESSIONID 的 Cookie 存在,根据 value 中的 SessionId 去寻找 session 对象

value 为 SessionId 不存在 **(Session 对象默认存活 30 分钟)**,返回 1 中重新去创建 Session 与特殊的 Cookie

value 为 SessionId 存在,返回 session 对象

————————————————

(1) cookie 数据存放在客户的浏览器上,session 数据放在服务器上,但是服务端的 session 的实现对客户端的 cookie 有依赖关系的;

(2) cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗,如果主要考虑到安全应当使用 session

(3) session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用 COOKIE

(4) 单个 cookie 在客户端的限制是 3K,就是说一个站点在客户端存放的 COOKIE 不能 3K。

(5) 所以:将登陆信息等重要信息存放为 SESSION; 其他信息如果需要保留,可以放在 COOKIE 中

# 9. 一些 linux 命令

# 0.Liunx 查看内核版本,发行版 (特斯拉,茄子)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1.
[root@VM-16-11-centos ~]# uname -r
3.10.0-1160.45.1.el7.x86_64
//3 –内核版本 10 –重大修订 0 –轻微修订 1160 –错误修复
2.
[root@VM-16-11-centos ~]# uname -a
Linux VM-16-11-centos 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Linux –内核名称。 如果在BSD或macOS上运行相同的命令,结果将有所不同。
VM-16-11-centos –主机名
3.10.0-1160.45.1.el7c –内核版本
#1 SMP Wed Oct 13 17:20:51 UTC 2021 – 这意味着Ubuntu编译了3.10.0-1160.45.1.el7 1次。最后的编译时间戳也在那里。
x86_64 –机器架构
x86_64 –处理器架构
x86_64 –操作系统体系结构(您可以在64位处理器上运行32位OS)
GNU/Linux –操作系统(不,它不会显示发行名称)
3.
[root@VM-16-11-centos ~]# cat /proc/version
Linux version 3.10.0-1160.45.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Wed Oct 13 17:20:51 UTC 2021
4.
[root@VM-16-11-centos ~]# dmesg | grep Linux
[ 0.000000] Linux version 3.10.0-1160.45.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Wed Oct 13 17:20:51 UTC 2021

Ubuntu 完整的桌面 Linux 操作系统
Fedora 是商业版RedHat的上游。
Debian 应用程序最丰富的 Linux 发行版。
openSUSE 成为最简单易用、最广泛的发行版
kali dddd

# crontab * 的含义 (茄子)

1
2
3
4
5
6
7
8
9
10
11
12
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

vim /etc/crontab
crontab -u root -e
crontab -u root -l

# 查看 linux 文件夹大小 (茄子)

先来说明一件事:

drwxr-xr-x 5 root root 4.0K Apr 5 2022 src
drwxr-xr-x 2 www www 4.0K Apr 5 2022 maomao

  • 文件储存在硬盘上,硬盘的最小存储单位叫做 “扇区”(Sector)。每个扇区储存 512 字节(相当于 0.5KB)。
  • 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个 “块”(block)。这种由多个扇区组成的 “块”,是文件存取的最小单位。“块” 的大小,最常见的是 4KB,即连续八个 sector 组成一个 block。
  • 文件数据都储存在 “块” 中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做 inode,中文译名为 “索引节点”。
  • 每一个文件都有对应的 inode,里面包含了与该文件有关的一些信息。

而 Linux 系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的 inode 号码。

所以 ls -al 命令实际显示的就是目录文件的大小。又因为 OS 定义的文件最小存取单位 “块”(block)是 4KB,所以目录一般显示为 4096B。

[svc] 为何 linux ext4 文件系统目录默认大小是 4k? - _毛台 - 博客园 (cnblogs.com)

img

[lighthouse@VM-16-11-centos ]$ du -h -d 0 sqllab/
9.2M sqllab/

  1. -h , 简单可读的现实大小,自动判断 B,K,M,G…
  2. -d 0 , 现实列表深度为 0,就是只现实.kde 目录的占用,如果 - d 1 会显示第一级文件的大小,以此类推

du -sh 命令,可查看当前文件夹的总大小

du -h --max-depth=1
9.2M ./sqllab
32K ./maomao
59M ./wordpress
199M ./besides
13M ./src
5.6M ./sqli
223M ./vulhub
377M ./keshe
44M ./html
942M .

# 分区挂载过程 (茄子)

1
2
3
4
5
6
7
8
9
10
11
12
(1)虚拟机添加硬盘
fdisk -l
(2)分区
fdisk /dev/sdb
e 即分为逻辑分区,按 p 即分为主分区
+1024m
(3)格式化
mkfs -t ext3 -c /dev/sdb1mkfs -t ext3 -c /dev/sdb1
(4)挂载
mount /dev/sdb1 /mnt
(5)设置可以自动挂载
vim /etc/fstab

# 查看历史命令,查看自己的和别人的 (深信服)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
history
history命令后面可以加选项:
-c:清空历史命令(包括缓存和文件)
-w:把缓存中的历史命令写入历史命令保存文件~/.bash_history(显然每个用户有自己的文件)
-r 将命令历史文件中的内容读入到目前shell的history记忆中【就是按↑能翻到】
数字# 列出最近的#条命令

历史命令最多可以保存1000条,可以在/etc/profile中进行修改:
source /etc/profile使环境变量生效。
history -c 只能清除history命令查看的,不能清除.bash_history文件中的,需要自己手动删除

查看别人的,去别人家目录看.bash_history

查看history时,还能看执行时间
vim /etc/profile
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "

# 定时任务有哪些 (宏杉)

1
2
3
4
5
6
7
8
crontab //前面讲过
at 一次性任务
at +时间
atq
atrm jobid
at 10:00 #输入“at 时间”;开始设置at ,支持am、pm
at> touch /home/cjk #输入任务内容
at> echo "hello" >> /home/cjk<EOT>

# linux 启动过程 (宏杉)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:

内核的引导。
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
运行 init。
init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。
init 程序首先是需要读取配置文件 /etc/inittab。
运行级别
许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
init进程的一大任务,就是去运行这些开机启动的程序。
Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
系统初始化。
在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit
而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
建立终端 。
rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。
init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:
同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名
而用户输入的用户将作为参数传给login程序来验证用户的身份。
用户登录系统。
一般来说,用户的登录方式有三种:
(1)命令行登录
(2)ssh登录
(3)图形界面登录

# linux 运行级别 (amazon)

Linux 系统有 7 个运行级别 (runlevel):

  • 运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
  • 运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登录
  • 运行级别 2:多用户状态 (没有 NFS)
  • 运行级别 3:完全的多用户状态 (有 NFS),登录后进入控制台命令行模式
  • 运行级别 4:系统未使用,保留
  • 运行级别 5:X11 控制台,登录后进入图形 GUI 模式
  • 运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

# linux 进程状态(汉得)

3 running, 144 sleeping, 0 stopped, 1 zombie

img

# 查看服务是否运行(汉得)

ps ef 和 ps aux

[root@VM-16-11-centos ~]# ps -ef | grep sshd
root 2896 1 0 Mar22 ? 00:01:56 /usr/sbin/sshd -D
root 11786 2896 0 09:52 ? 00:00:00 sshd: lighthouse [priv]
lightho+ 11800 11786 0 09:52 ? 00:00:00 sshd: lighthouse@pts/0
root 13538 11930 0 09:57 pts/0 00:00:00 grep --color=auto sshd

ps aux 最初用到 Unix Style 中,而 ps -ef 被用在 System V Style 中,两者输出略有不同。

其中 STAT 状态位常见的状态字符有
D // 无法中断的休眠状态(通常 IO 的进程);
R // 正在运行可中在队列中可过行的;
S // 处于休眠状态;
T // 停止或被追踪;
W // 进入内存交换 (从内核 2.6 开始无效);
X // 死掉的进程 (基本很少见);
Z // 僵尸进程;
< // 优先级高的进程
N // 优先级较低的进程
L // 有些页被锁进内存;
s // 进程的领导者(在它之下有子进程);
l // 多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ // 位于后台的进程组;

# 查看服务器 CPU,内存,磁盘利用率,linux 版本(汉得)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
1.查看内存使用率

[root@VM-16-11-centos ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 685M 149M 12M 1.0G 947M
Swap: 1.0G 374M 650M
[root@VM-16-11-centos ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 383388 153348 213388 813048 0 0 2 26 0 1 3 1 95 0 0

2.查看CPU使用率
[root@VM-16-11-centos ~]# top
top - 10:07:30 up 217 days, 10:19, 1 user, load average: 0.42, 0.30, 0.21
Tasks: 150 total, 3 running, 146 sleeping, 0 stopped, 1 zombie
%Cpu(s): 3.0 us, 1.0 sy, 0.0 ni, 96.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
[root@VM-16-11-centos ~]# cat /proc/cpuinfo | grep physical | uniq -c
1 physical id : 0
1 address sizes : 46 bits physical, 48 bits virtual
[root@VM-16-11-centos ~]# dmidecode
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
9 structures occupying 398 bytes.
Table at 0x000F6A20.
......

3.查看磁盘利用率
[root@VM-16-11-centos ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 908M 0 908M 0% /dev
tmpfs 919M 32K 919M 1% /dev/shm
tmpfs 919M 1.1M 918M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 50G 21G 27G 43% /
tmpfs 184M 0 184M 0% /run/user/0
tmpfs 184M 0 184M 0% /run/user/1000
overlay 50G 21G 27G 43% /var/lib/docker/overlay2/6abafa18f5d96ab29f1273e0173f6573cb815fdfef8b88e2911fe106021c5cdc/merged
[root@VM-16-11-centos ~]# fdisk -l

Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009ac89

Device Boot Start End Blocks Id System
/dev/vda1 * 2048 104857566 52427759+ 83 Linux

4.进程
ps -ef ps -aux

5.内核
uname -a

Linux 系统查看 CPU、机器型号、内存等信息 - 腾讯云开发者社区 - 腾讯云 (tencent.com)

# chmod (改变文件所属者)(汉得)

1
2
3
4
chmod 777 /home/aaa/aaa.sh
chmod +x ./ssb.sh
chmod -R 644 a.txt
chmod 4775 file //设置了特殊权限位

# LVM(宏杉,吉利英伦)

LVM 是逻辑盘卷管理(Logical Volume Manager)的简称,它是 Linux 环境下对磁盘分区进行管理的一种机制,LVM 是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM 最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。
VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组

PV 物理卷常用操作
pvcreate /dev/DEVICE: 创建 PV
pvs:简要 PV 信息显示
pvdisplay:显示 PV 的详细信息
pvremove /dev/DEVICE: 移除 PV
pvscan: 扫描系统中连接的所有硬盘,列出找到的物理卷列表

VG 常用操作
vgcreate /dev/DEVICE: 创建 VG 卷组
vgs: 简要 VG 信息显示
vgextend:动态扩展 LVM 卷组,它通过向卷组中添加物理卷来增加卷组的容量
vgreduce:通过删除 LVM 卷组中的物理卷来减少卷组容量,不能删除 LVM 卷组中剩余的最后一个物理卷
vgdisplay:显示 VG 的详细信息
vgscan:查找系统中存在的 LVM 卷组,并显示找到的卷组列表
vgremove:删除卷组,其上的逻辑卷必须处于离线状态

4、LV 常用操作
lvcreate : 用来创建 LVM 的逻辑卷
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvs : 显示逻辑卷信息
lvscan:扫描当前系统中的所有逻辑卷,及其对应的设备文件
lvdisplay:显示逻辑卷属性
lvextend:可在线扩展逻辑卷空间
lvreduce:缩减逻辑卷空间,一般离线使用
lvremove:删除逻辑卷,需要处于离线(卸载)状态

缺点:

在从卷组中移除一个磁盘的时候必须使用 reducevg 命令(这个命令要求 root 权限,并且不允许在快照卷组中使用)。

当卷组中的一个磁盘损坏时,整个卷组都会受到影响。

因为加入了额外的操作,存储性能受到影响

不能减小文件系统大小(受文件系统类型限制

# 压缩,解压缩 (迪普,汉得)

Linux 中可以识别的常见压缩格式,".zip"、".gz"、".bz2"、“tar”、".tar.gz"、".tar.bz2" 等等

1.zip 压缩

zip mytxt.zip abc.txt abd.txt bcd.txt # 把三个 txt 文件压缩成一个 zip 文件

unzip -d /home/hepingfly/abc/mytxt.zip # 如果不指定 -d 参数,默认解压到当前目录下

2.gz

gzip 压缩文件后会把源文件删除掉,它是不支持保留源文件的

选项:
-c :将压缩数据输出到标准输出中,可以用于保留源文件
-d :解压缩
- r:压缩目录

gzip abc.txt # 将 abc.txt 压缩为 abc.txt.gz

gzip -d # 解压 gzip

gunzip # 解压 gzip

3.bz2

bzip2 [选项] 源文件
选项:
-d :解压缩
-k :压缩时保留源文件
-v :显示压缩的详细信息

bzip2 -k bcd.txt #压缩

bzip2 -d 压缩包 # 解压

bunzip2 压缩包 # 解压

4.tar

tar [选项] [-f 压缩包名] 源文件或目录
选项:
-c :打包

-z :压缩和解压缩 “.tar.gz” 格式

-f :指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名。
-v :显示打包文件过程

tar [选项] 压缩包
选项:
-x :解打包
-f :指定压缩包的文件名
-v :显示解打包文件过程

-j : 压缩和解压缩 “.tar.bz2” 格式

# awk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 每行按空格或TAB分割,输出文本中的1、4项
$ awk '{print $1,$4}' log.txt
# 格式化输出
$ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
# 使用","分割
$ awk -F, '{print $1,$2}' log.txt
# 或者使用内建变量
$ awk 'BEGIN{FS=","} {print $1,$2}' log.txt
# 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
$ awk -F '[ ,]' '{print $1,$2,$5}' log.txt
# 设置变量a=1
$ awk -va=1 '{print $1,$1+a}' log.txt
# awk -f {awk脚本} {文件名}
$ awk -f cal.awk log.txt
# 过滤第一列大于2的行
$ awk '$1>2' log.txt
# 过滤第一列大于2并且第二列等于'Are'的行
$ awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt
# 输出顺序号 NR, 匹配文本行号
$ awk '{print NR,FNR,$1,$2,$3}' log.txt
# 指定输出分割符
$ awk '{print $1,$2,$5}' OFS=" $ " log.txt
# 输出第二列包含 "th",并打印第二列与第四列(~ 表示模式开始// 中是模式)
$ awk '$2 ~ /th/ {print $2,$4}' log.txt
# 忽略大小写
$ awk 'BEGIN{IGNORECASE=1} /this/' log.txt
# BEGIN{ 这里面放的是执行前的语句 }
# END {这里面放的是处理完所有的行后要执行的语句 }
# {这里面放的是处理每一行时要执行的语句}
# 计算文件大小
$ ls -l *.txt | awk '{sum+=$5} END {print sum}'

grep 更适合单纯的查找或匹配文本
sed 更适合编辑匹配到的文本
awk 更适合格式化文本,对文本进行较复杂格式处理


FS(Field Separator):输入字段分隔符, 默认为空白字符
OFS(Out of Field Separator):输出字段分隔符, 默认为空白字符
RS(Record Separator):输入记录分隔符(输入换行符), 指定输入时的换行符
ORS(Output Record Separate):输出记录分隔符(输出换行符),输出时用指定符号代替换行符
NF(Number for Field):当前行的字段的个数(即当前行被分割成了几列)
NR(Number of Record):行号,当前处理的文本行的行号。
FNR:各文件分别计数的行号
ARGC:命令行参数的个数
ARGV:数组,保存的是命令行所给定的各参数

# selinux

Linux 下默认的接入控制是 DAC,其特点是资源的拥有者可以对他进行任何操作(读、写、执行)。当一个进程准备操作资源时,Linux 内核会比较进程和资源的 UID 和 GID,如果权限允许,就可以进行相应的操作。

SELinux 属于 MAC 的具体实现,增强了 Linux 系统的安全性。MAC 机制的特点在于,资源的拥有者,并不能决定谁可以接入到资源。具体决定是否可以接入到资源,是基于安全策略。而安全策略则是有一系列的接入规则组成,并仅有特定权限的用户有权限操作安全策略。

Security Enhanced Linux (SELinux) 为 Linux 提供了一种增强的安全机制,其本质就是回答了一个 “Subject 是否可以对 Object 做 Action?” 的问题,例如 Web 服务可以写入到用户目录下面的文件吗?其中 Web 服务就是 Subject 而文件就是 Object,写入对应的就是 Action。

  • Subject: 在 SELinux 里指的就是进程,也就是操作的主体。
  • Object: 操作的目标对象,例如 文件
  • Action: 对 Object 做的动作,例如 读取、写入或者执行等等
  • Context: Subject 和 Object 都有属于自己的 Context,也可以称作为 Label。Context 有几个部分组成,分别是 SELinux User、SELinux Role、SELinux Type、SELinux Level

进程和文件都有属于自己的 Context 信息,Context 分为几个部分,分别是 SELinux User、Role、Type 和一个可选的 Level 信息。SELinux 在运行过程中将使用这些信息查询安全策略进行决策。

显示进程的 Context ps -z

显示文件的 Context 信息 ls -z

临时修改文件的 SELinux Type 为 htttpd_sys_content_t chcon -t httpd_sys_content_t file-name

SELinux 有三个运行状态,分别是 disabled, permissive 和 enforcing

  • Disable: 禁用 SELinux,不会给任何新资源打 Label,如果重新启用的话,将会给资源重新打上 Lable,过程会比较缓慢。
  • Permissive:如果违反安全策略,并不会真正的执行拒绝操作,替代的方式是记录一条 log 信息。
  • Enforcing: 默认模式,SELinux 的正常状态,会实际禁用违反策略的操作

SELinux 的 Log 日志默认记录在 /var/log/audit/audit.log

SELinux 的配置文件位于 /etc/selinux/config

Booleans 允许在运行时修改 SELinux 安全策略。

理解 Linux 下的 SELinux - 知乎 (zhihu.com)

# 10.mysql 相关

# mysql 新建用户 (茄子)

CREATE USER user_account IDENTIFIED BY password; #CREATE USER dbadmin@localhost IDENTIFIED BY ‘pwd123’;

CREATE USER superadmin@’%’ IDENTIFIED BY ‘mypassword’; # 要允许用户帐户从任何主机连接,请使用百分比 ( % ) 通配符

CREATE USER remote_user; #可以从任何主机连接到数据库服务器:

可以使用 INSERT 语句将用户的信息添加到 mysql.user 表中,但必须拥有对 mysql.user 表的 INSERT 权限。通常 INSERT 语句只添加 Host、User 和 authentication_string 这 3 个字段的值。

INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (‘hostname’, ‘username’, PASSWORD(‘password’), ‘’, ‘’, ‘’);

GRANT SELECT ON*.* TO ‘test3’@localhost IDENTIFIED BY ‘test3’;

4. 删除用户

DROP USER ‘username’@‘host’;

5. 更改密码

SET PASSWORD FOR ‘username’@‘host’ = PASSWORD(‘newpassword’);

# mysql 查看权限 (茄子)

SHOW GRANTS FOR dbadmin@localhost;

GRANT privileges ON databasename.tablename TO ‘username’@‘host’

REVOKE privilege ON databasename.tablename FROM ‘username’@‘host’;

# mysql 备份 (中海达)

mysqldump -h 主机名 -P 端口 -u 用户名 -p 密码 –database 数据库名 > 文件名.sql

mysqldump –all-databases > allbackupfile.sql // 备份所有数据库

直接将 MySQL 数据库压缩备份

mysqldump -hhostname -uusername -ppassword -database databasename | gzip > backupfile.sql.gz

备份 MySQL 数据库某个 (些) 表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

免费的 MySQl 热备份软件 Percona XtraBackup

恢复数据库

source /opt/all.sql;

学习 MySQL 备份一篇就够了!!!(完全备份、增量备份、备份恢复)_下一个艺术家的博客 - CSDN 博客_mysql 备份文件

# mysql 可靠 (中海达)

… 这个问题超标了,自己看吧

五大常见的 MySQL 高可用方案 - 知乎 (zhihu.com)

# acid (汉得)

数据库管理系统在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性

  • Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
  • Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
  • Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

# mysql 锁 (汉得)

先挖个坑

MySQL 锁总结 - 知乎 (zhihu.com)

# 隔离级别 (汉得)

再挖个坑

彻底搞懂 MySQL 事务的隔离级别 - 阿里云开发者社区 (aliyun.com)

# 主键,外键区别,主键,索引区别 (汉得)

1、主键用来保证数据完整性,外键用来和其他表建立联系用;

2、主键只能有一个,而一个表可以有多个外键;

3、主键不能有重复,不允许为空,而外键可以有重复,可以是空值。

主键、外键和索引的区别:

a. 定义

主键:唯一标识一条记录,不能有重复,不允许为空。
外键:表的外键是另一表的主键,外键是可以有重复的,可以是空值。
索引:该字段没有重复值,但可以有一个空值。

b. 作用

主键:用来保证数据完整性
外键:用来和其他表建立联系用
索引:用来提高查询排序的速度

c. 个数

主键:主键只能有一个。
外键:一个表可以有多个外键。
索引:一个表可以有多个唯一索引。

提高了查询效率缺点是在插入、更新和删除记录时,需要同时修改索引因此,索引越多,插入、更新和删除记录的速度就越慢。

通过 UNIQUE 关键字我们就添加了一个唯一索引

# 10. 云计算相关问题

# 使用过公有云吗,对公有云了解吗,中科还问了 OpenStack 了解吗 (中海达,茄子,中科曙光)

OpenStack 入门科普,看这一篇就够啦! - 知乎 (zhihu.com)

OpenStack 入门 —— 理论篇(一):OpenStack 的概念、概览以及核心组件概述_51CTO 博客_openstack 的技术核心

表示层:负责与用户交互,主要包含一些图形化界面的 web 门户网站(用于提供给非开发人员进行界面操作),同时该部分还提供了供开发人员进行二次开发的 API 接口。该部分还包括一些更高级的特性,例如:负载均衡、控制台代理安全和命名服务。

逻辑层:提供云服务的智能控制功能,如:orchestration(负责任务的工作流管理)、scheduling(任务到资源的调度管理)、policy(配额等服务)、image registry(镜像实例的元数据管理)和 logging(事件计费管理)。

资源层:包含计算、网络和存储等物理资源。

什么是公有云?和私有云什么区别? - 华为 (huawei.com)

# IAAS,PAAS,SAAS (吉利英伦)

Infrastructure-as-a-service
Platform-as-a-service
Software-as-a-service

image-20221029101351518 image-20221029101444881

# VPC 之间网络隔离(云智)

安全组是一个逻辑上的分组,由一个区域内具有相同安全需求的 ECS 组成。安全组和 ECS 绑定,可以实现如防火墙一样的功能,不同安全组的实例默认不相通,但可以授权两个安全组之间互访。

网络 ACL 与安全组类似,也是安全防护策略,若想增加额外的安全防护层时,就可以启用网络 ACL。网络 ACL 是对子网的一个保护,通过与子网关联的出方向、入方向规则控制出入子网的数据流。安全组只有 “允许” 策略,但网络 ACL 可以 “拒绝” 和 “允许”。

vpc 网络隔离_云计算中 VPC 的由来及浅析_爱吃生菜的鱼的博客 - CSDN 博客

(66 条消息) vpc 网络隔离_一文秒懂云中安全 VPC_英俊潇洒你冲哥的博客 - CSDN 博客

# 11. 负载均衡相关

# 有哪些负载均衡器 (茄子)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
LVS、Nginx、Haproxy
LVS:
1). 基于4层网络协议,几乎无流量产生,这个特点也决定这几个负载均衡软件里负载能力最强,内存、CPU占用资源也低。
2). 应用范围广,不仅对Web服务做负载均衡,而且可结合其他应用做负载,如LVS+MySQL负载均衡。
3). 配置简单, 可配置东西较少。
4). 无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
5). 有个虚IP概念。
Nginx:
1). 基于7层网络协议,对Http应用做分流策略,如配置域名。
2). 高负载、稳定。支持上万高并发。负载能力小于LVS。
3). 安装配置简单,支持的正则比Haproxy丰富。且对网络稳定性的依赖非常小。
4). 可通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,把返回错误的请求重新提交到另一个节点。
5). 作Web服务器。
6). 反向代理\负载均衡。
Haproxy:
1). 支持虚拟主机,可工作在4层、7层。
2). 负载均衡效率上来讲Haproxy比Nginx更出色,在并发处理上也是优于Nginx。
3). 能够补充Nginx的一些缺点,如支持Session的保持,Cookie的引导。同时支持通过获取指定的url来检测后端服务器的状态。
4). 支持负载均衡策略较多。如roundrobin简单轮询、leastconn最少服务器连接数、static-rr权重轮询、uri哈希、sourceIP哈希、url_param请求的URL参数等。

https://www.yisu.com/zixun/14680.html

# LVS(云智)

LVS(Linux Virtual Server)即 Linux 虚拟服务器,是开源负载均衡项目,目前 LVS 已经被集成到 Linux 内核模块中。该项目在 Linux 内核中实现了基于 IP 的数据请求负载均衡调度方案,其体系结构如图 1 所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的 Web 请求会发送给 LVS 调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台 Web 服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问 LVS 调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据 LVS 工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS 工作模式分为 NAT 模式、TUN 模式、以及 DR 模式。
1、基于 NAT 的 LVS 模式负载均衡

在 LVS(NAT)模式的集群环境中,由于所有的数据请求及响应的数据包都需要经过 LVS 调度器转发,如果后端服务器的数量大于 10 台,则调度器就会成为整个集群环境的瓶颈。

image-20221031102931633

2. 基于 TUN 的 LVS 负载均衡

LVS(TUN)的思路就是将请求与响应数据分离,让调度器仅处理数据请求,而让真实服务器响应数据包直接返回给客户端。

LVS(TUN)模式要求真实服务器可以直接与外部网络连接,真实服务器在收到请求数据包后直接给客户端主机响应数据。

image-20221031102950493

3、基于 DR 的 LVS 负载均衡

直接路由模式(DR 模式)要求调度器与后端服务器必须在同一个局域网内,VIP 地址需要在调度器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源 IP 为 VIP 地址,目标 IP 为客户端 IP,这样客户端访问的是调度器的 VIP 地址,回应的源地址也依然是该 VIP 地址(真实服务器上的 VIP),客户端是感觉不到后端服务器存在的。

调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的 MAC 地址修改为选出的真实服务器的 MAC 地址,通过交换机将该数据帧发给真实服务器。整个过程中,真实服务器的 VIP 不需要对外界可见。

image-20221031102959587

LVS 负载均衡(LVS 简介、三种工作模式、十种调度算法)_chenhuyang 的博客 - CSDN 博客_lvs 负载均衡

# 12. 有哪些监控软件 (中海达,茄子)

Prometheus(普罗米修斯)

Zabbix

Cacti

Nagios

Grafana

Open-falcon

https://blog.csdn.net/t8116189520/article/details/81737694

# 13. 中间件相关

# Nginx 了解吗,Nginx 特性,正向代理和反向代理,负载均衡模式 (中海达,长亭,品高)

1. 正向代理和反向代理
正向代理: 一般的访问流程是客户端直接向目标服务器发送请求并获取内容,使用正向代理后,客户端改为向代理服务器发送请求,并指定目标服务器(原始服务器),然后由代理服务器和原始服务器通信,转交请求并获得的内容,再返回给客户端。正向代理隐藏了真实的客户端,为客户端收发请求,使真实客户端对服务器不可见;

比如你访问 Google 时用的代理服务器就是正向代理

反向代理: 与一般访问流程相比,使用反向代理后,直接收到请求的服务器是代理服务器,然后将请求转发给内部网络上真正进行处理的服务器,得到的结果返回给客户端。反向代理隐藏了真实的服务器,为服务器收发请求,使真实服务器对客户端不可见。一般在处理跨域请求的时候比较常用。现在基本上所有的大型网站都设置了反向代理。Nginx 可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走 web 服务器。并且 Nginx 对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

image-20221101094821621

2. 负载均衡

单个服务器解决不了的问题,可以使用多个服务器,然后将请求分发到各个服务器上,将负载分发到不同的服务器,这就是负载均衡,核心是「分摊压力」。Nginx 实现负载均衡,一般来说指的是将请求转发给服务器集群。

Nginx 提供的负载均衡策略有 2 种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

image-20221101095012272

3. 动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

由于 Nginx 的高并发和静态资源缓存等特性,经常将静态资源部署在 Nginx 上。如果请求的是静态资源,直接到静态资源目录获取资源,如果是动态资源的请求,则利用反向代理的原理,把请求转发给对应后台应用去处理,从而实现动静分离。

使用前后端分离后,可以很大程度提升静态资源的访问速度,即使动态服务不可用,静态资源的访问也不会受到影响。

image-20221101095048519

4.web 缓存

Nginx 可以对不同的文件做不同的缓存处理,配置灵活,并且支持 FastCGI_Cache,主要用于对 FastCGI 的动态程序进行缓存。配合着第三方的 ngx_cache_purge,对制定的 URL 缓存内容可以的进行增删管理。

Nginx 从入门到实践,万字详解! - NGINX 开源社区

Nginx 配置详解 | 菜鸟教程 (runoob.com)

# 14. 连通性 /toubleshooting 问题

# 14.1 判断和主机建立了连接的 IP (茄子)

netstat -ano

netstat -lntup

nbtstat -A 10.129.52.207

NBTSTAT [ [-a RemoteName] [-A IP address] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [interval] ]

        -a (适配器状态) 列出指定名称的远程机器的名称表
    
        -A (适配器状态) 列出指定 IP 地址的远程机器的名称表。
    
        -c (缓存) 列出远程[计算机]名称及其 IP 地址的 NBT 缓存
    
        -n (名称) 列出本地 NetBIOS 名称。
    
        -r (已解析) 列出通过广播和经由 WINS 解析的名称
    
        -R (重新加载) 清除和重新加载远程缓存名称表
    
        -S (会话) 列出具有目标 IP 地址的会话表
    
        -s (会话) 列出将目标 IP 地址转换成计算机 NETBIOS 名称的会话表。
    
        -RR (释放刷新) 将名称释放包发送到 WINS,然后启动刷新

# 14.2 主机间是否连通,端口是否开放 (茄子)

连通:

ping

traceroute

端口:

telnet 192.192.193.211 3389

nc -z 192.192.193.211 22 //tcp

nc –uz 192.192.193.211 22 //udp

nmap // 看我写的安全那块

netstat -ano

ssh 10.0.250.3 -p 80 -v

wget …:

# 15. 怎么保证安全和可靠 (信锐)

可靠的接入层应提供以下主要特性:

  • 使用冗余引擎和冗余电源获得系统级冗余,为关键用户群提供高可靠性;
  • 与具备冗余系统的汇聚层进行双归属连接,获得缺省网关冗余,支持在汇聚层的主备交换机间快速实现故障切换;
  • 通过链路汇聚提高带宽利用率,同时降低复杂性;
  • 通过配置 802.1X,动态 ARP 检查及 IP 源地址保护等功能增加安全性,有效防止非法访问。

接入层到汇聚层选择三角形组网,由于接入层三角形组网存在二层环路,所以需要在交换机上使能多生成树协议 MSTP。汇聚层交换机部署虚拟路由器冗余协议 VRRP,将 VRRP 组的虚拟 IP 地址作为服务器网关。

汇聚层应使用与核心层相同结构的冗余节点备份连接,以实现最快速的路由收敛并避免黑洞产生。汇聚层做三层接入网关时,还需要通过 VRRP 等协议实现网关的冗余备份和流量的负载分担。汇聚层边界发生链路或节点故障时,收敛速度取决于缺省网关冗余与故障切换,通过合理地配置协议定时器,可达到秒级的收敛速度。

汇聚层到核心层间采用 OSPF 等动态路由协议进行路由层面高可用保障。

核心层设备作为网络的骨干,需要能提供快速的数据交换和极高的永续性。从备份和负载分担的角度可选用双核心或多核心;从单台设备考虑,选用交换性能和可靠性高的设备,支持双主控、电源冗余、风扇冗余、分布式转发等特性。并降低核心设备配置的复杂度,减少出现错误的几率。

传统架构为保证网络高可靠性通常采用 MSTP+VRRP,这种组网需要在接入交换机与汇聚交换机间运行 MSTP 协议,管理和维护较复杂。但当接入交换机和汇聚交换机都采用 H3C IRF 智能弹性架构技术之后,可将每两台交换机(也可以是多台)配置成一个 IRF 堆叠组,两台汇聚交换机也配置成一个堆叠组,接入交换机与汇聚交换机之间通过捆绑链路连接,如图 3 所示。从逻辑上看,一个堆叠组就是一台设备,因此接入交换机和汇聚交换机间不存在二层环路,可以避免 MSTP 的配置管理,简化网络设计。

(67 条消息) 网络的可靠性是设计出来的_半遮雨的博客 - CSDN 博客_网络可靠性

如何保证网络安全 (cnfla.com)

# 16.DNS

# DNS 原理,端口 (特斯拉,长亭)

img

1、在浏览器中输入 www . qq .com 域名,操作系统会先检查自己本地的 hosts 文件是否有这个网址映射关系,如果有,就先调用这个 IP 地址映射,完成域名解析。
2、如果 hosts 里没有这个域名的映射,则查找本地 DNS 解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果 hosts 与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找 TCP/ip 参数中设置的首选 DNS 服务器,在此我们叫它本地 DNS 服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地 DNS 服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析,此解析不具有权威性。
5、如果本地 DNS 服务器本地区域文件与缓存解析都失效,则根据本地 DNS 服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地 DNS 就把请求发至 13 台根 DNS,根 DNS 服务器收到请求后会判断这个域名 (.com) 是谁来授权管理,并会返回一个负责该顶级域名服务器的一个 IP。本地 DNS 服务器收到 IP 信息后,将会联系负责.com 域的这台服务器。这台负责.com 域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com 域的下一级 DNS 服务器地址 (http://qq.com) 给本地 DNS 服务器。当本地 DNS 服务器收到这个地址后,就会找 http://qq.com 域服务器,重复上面的动作,进行查询,直至找到 www . qq .com 主机。
6、如果用的是转发模式,此 DNS 服务器就会把请求转发至上一级 DNS 服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根 DNS 或把转请求转至上上级,以此循环。不管是本地 DNS 服务器用是是转发,还是根提示,最后都是把结果返回给本地 DNS 服务器,由此 DNS 服务器再返回给客户机。
从客户端到本地 DNS 服务器是属于递归查询,而 DNS 服务器之间就是的交互查询就是迭代查询。

下面我们列出几条常用的资源记录类型:

SOA: Start Of Authority, 起始授权记录,一个区域解析库仅能有一个 SOA 记录,而且必须为解析库的第一条

NS:Name Server,域名服务器,专用于标明当前区域的 DNS 服务器

MX: Mail eXchange, 邮件交换器,MX 记录有优先级属性(0-99)

A:internet Address,FQDN --> IP,专用于正向解析,用于实现将 FQDN 解析为 IP 地址

PTR: PoinTeR,IP --> FQDN,专用于反向解析,将 IP 地址解析为 FQDN

AAAA:FQDN --> IPv6,专用于正向解析,将 FQDN 解析为 IPv6 地址

CNAME: Canonical Name,别名记录

TXT:Text

SRV:Service

DNS 的工作原理及解析_zhengqijun_的博客 - CSDN 博客_dns 的工作原理

面试官:讲讲 DNS 的原理? - 知乎 (zhihu.com)

https://cloud.tencent.com/developer/article/1618781

DNS 中也有一个地方用到了 TCP 协议。那就是区域传送!

DNS 的规范规定了 2 种类型的 DNS 服务器,一个叫主 DNS 服务器,一个叫辅助 DNS 服务器。在一个区中主 DNS 服务器从自己本机的数据文件中读取该区的 DNS 数据信息,而辅助 DNS 服务器则从区的主 DNS 服务器中读取该区的 DNS 数据信息。当一个辅助 DNS 服务器启动时,它需要与主 DNS 服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。 这种情况下,使用 TCP 协议。

UDP 的 DNS 协议只要一个请求、一个应答就好了。而使用基于 TCP 的 DNS 协议要三次握手、发送数据以及应答、四次挥手。但是 UDP 协议传输内容不能超过 512 字节。不过客户端向 DNS 服务器查询域名,一般返回的内容都不超过 512 字节,用 UDP 传输即可。

# 递归和迭代区别 (这个目前还没人问,我闲着蛋疼自己问自己)

1
2
3
4
5
(1)递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

(2)迭代查询
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。

17. 二层相关

stp 作用 (宏杉)

super vlan (宏杉)

stp 选举 (中科闻歌)

18 链路聚合 (宏杉,中科曙光)

19. 防火墙硬件实现,IPSEC 了解过吗 (中科曙光)

防火墙用过吗,啥型号的,A 访问 B 时在防火墙配置单向还是双向,如果是交换机,需要配置单向还是双向 (中科闻歌)

20. 项目题

小型星星网络

1. 确定网络设备

2. 交换机设备和接口数量,交换机选型 (吞吐量)

# 21.docker/k8s

# k8s 四层网络架构

img

Node 节点网络

1
底层基础设施支持节点主机之间网络的互通

Pod 网络

1
能够相互做IP寻址、相互通讯

Service

1
2
一个service背后往往是由多个pod组成的集群
由此引入了服务发现以及负载均衡等问题

深入理解 K8S 网络原理上 - 知乎 (zhihu.com)

img

中型

大型

ping 丢包

# 0x02 安全岗总结

1. 反序列化相关

PHP 反序列化的魔法方法,wakeup 绕过 (理想)

shrio 反序列化,fastjson 反序列化,struct S062 (深信服)

java 反序列化 (深信服)

2. 逻辑漏洞类

逻辑漏洞任意邮箱注册怎么修复 (理想)

登录框有啥漏洞 (安天)

3.XSS 类

富文本编辑器 XSS 怎么解决 (理想)

说说看 xss (长亭)

4.SQL 注入类

SQL 注入怎么防,PDO 在 order by 场景怎么防 (理想)

sql 注入有几种 (深信服)

union select 后面可以加 insert 吗,union select 叫啥名字 (深信服)

怎么通过数据库获取系统权限,mysql,sqlserver (深信服)

mysql 写 shell 命令 (深信服)

堆叠注入原理,和 union select 有啥区别 (深信服)

报错注入语句 (深信服)

时间盲注原理,语句 (深信服)

5. 入侵排查怎么查,netstat 怎么看,怎么找进程 (理想,安天)

6.discuz 漏洞复现 (可能因为我简历里写了)(理想)

7.cookie 对单个参数长度限制 (理想)

8. 出现 0day,资产排查 (理想)

10. 文件上传 shell 成功但不能连接,怎么办 (深信服)

11. 内网渗透相关

内网隧道怎么搭,earthworm 三种模式 (深信服)

内网横向 (深信服)

wmin 端口,横向之后啥权限 (深信服)

12. 权限维持 (深信服)

13.waf 是干啥的,哪一层的 (长亭)

14. 工具使用类

nmap 参数,操作系统 (理想)

Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

John Doe WeChat Pay

WeChat Pay

John Doe Alipay

Alipay

John Doe PayPal

PayPal