一、OSI七层模型
- 应用层 Application:网络应用程序及应用层协议留存(message)
- 表示层 Presentation:使通信的应用程序能够释放交换数据的含义
- 会话层 Session:提供数据交换定界和同步功能,包括建立检查点和恢复方案
- 运输层 Transport:在应用程序端点间传送用应用层报文(segment)
- 网络层 Network:将数据报(datagram)从一台主机移动到另一台主机
- 链路层 Link:相邻网络节点间传递帧(frame)
- 物理层 Physical:比特从一个节点移动到另一个节点
体系结构分层原因:
- 某层改变时系统其余部分保持不变
- 每一层通过自身内部行动和依靠自身下层提供的服务实现一种服务
- 模块化易于系统维护和更新
不同层的协议:
- 应用层:HTTP、FTP、SMTP、邮件访问协议(POP3、IMAP、HTTP)、DNS
- 运输层:UDP、TCP
- 网络层:IP、ICMP、OSPF、IGMP
- 链路层:SLIP、CSLIP、PPP、ARP、RARP、MTU
- 物理层:ISO2110、IEEE802、IEEE802.2
二、HTTP协议
HTTP协议:超文本传输协议,web的应用层协议,是web的核心协议。
HTTP协议使用TCP作为它的支撑运输协议,是一个无状态的协议,不保存客户的任何信息。
http协议可以分为非持续连接协议和持续连接协议。
-
非持续连接:每个请求/响应对是经一个单独的TCP连接发送
-
持续连接:所有请求/响应对是经相同的TCP连接发送
HTTP默认使用持续连接
1. HTTP请求方法
- GET
向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。 - TRACE
回显服务器收到的请求,主要用于测试或诊断 - CONNECT
预留给能够将连接改为管道方式的代理服务器。 - HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。 - PUT
向指定资源位置上传其最新内容 - DELETE
请求服务器删除Request-URL所标识的资源 - POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form - OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。
2. GET和POST的区别
GET请求无消息体,只能携带少量数据(最多只能有1024字节)将数据放在url地址中。GET请求提交的数据放置在HTTP请求协议头中。
POST请求有消息体,可以携带大量数据,将数据放在消息体中。POST提交的数据放在实体数据中。
3. HTTP状态码
HTTP状态码:告知客户端从服务器端返回的请求结果。
-
1xx information 接受的请求正在处理
-
2xx success 请求正常完毕
- 200 OK : 请求在服务器端被正常处理了
- 204 No Content: 表示服务器接收的请求已经成功处理,但是在返回的响应报文中不含实体的主体部分。
- 206 Partial Content:表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文内包含由Content-Range指定范围的实体内容。
-
3xx redirction 需要进行附加操作以完成请求
- 301 Moved Permanently :表示请求的资源已经分配了新的URI,以后请求该资源应该访问新的URI。
- 302 Found:表示请求的资源已经被分配了新的URI,希望客户端本次能使用新的URI访问。
- 303 See Other:表示由于请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源。
- 304 Not Modified:表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。
- 307 Temporary Redirect:302 Found 状态码有相同的含义。307 不会强制浏览器将 POST 方法改为 GET 方法,而是遵循浏览器自身的标准。
-
4xx client error 服务器无法处理请求
- 400 Bad Request :表示请求报文中存在语法错误。
- 401 Unauthorized:表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。
- 403 Forbidden:表明对请求资源的访问被服务器拒绝了,当未获得文件系统的访问授权,访问权限出现某些问题
- 404 Not Found:表示服务器上无法找到请求资源。
-
5xx sever error 服务器处理请求出错
- 500 Internal Server Error:表明服务器端在执行请求时发生了错误。
- 503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护
三、输入URL到页面加载过程
1. 浏览器构建HTTP Request请求
应用层进行DNS解析,通过DNS将域名解析成IP地址,按照浏览器缓存、系统缓存、路由器缓存、ISP(运营商)DNS缓存、根域名服务器、顶级域名服务器、主域名服务器的顺序,逐步读取缓存,直到拿到IP地址。
应用层生成HTTP请求报文,HTTP请求报文包括起始行、首部和主体部分。
传输层建立TCP连接,进行三次握手。
网络层使用IP协议来选择路线(IP协议的路由功能)。
数据链路层实现网络相邻节点间可靠的数据连接。把数据包packet封装成帧(Frame),并按顺序传送各帧。
物理层传输数据,数据链路层的帧(Frame)转换成二进制形式的比特(Bit)流,从网卡发送出去,再把比特转换成电子、光学或微波信号在网络中传输
2. 网络传输
3. 服务器构建HTTP Response响应
服务器接收到这个比特流,把比特流转换成帧格式,上传到数据链路层,服务器发现数据帧中的目的MAC地址与本网卡的MAC地址相同,服务器拆除数据链路层的封装后,把数据包上传到网络层。服务器的网络层比较数据包中的目的IP地址,发现与本机的IP地址相同,服务器拆除网络层的封装后,把数据分段上传到传输层。传输层对数据分段进行确认、排序、重组,确保数据传输的可靠性。数据最后被传到服务器的应用层。
5. 网络传输
6. 浏览器渲染页面
四、TCP三次握手与四次挥手
参考:参考原文
TCP头部结构:
序列号seq:
占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。
确认号ack:
占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号
确认ACK:
占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效
同步SYN
连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。
终止FIN:
用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接
ACK\SYN\FIN表示标志位,值为1或0
三次握手过程——TCP建立连接
第一次握手:
客户端发送连接请求报文(SYN=1,seq=x)
第二次握手:
服务器端接收到报文后向客户端回复ACK报文(SYN=1,ACK=1,seq=y,ack=x+1),并分配资源
第三次握手:
客户端接收到ACK报文后也向服务端发送ACK报文(ACK=1,seq=x+1,ack=y+1),并分配资源。
完成三次握手。
A向B建立TCP连接,通过第一次握手B知道A能够发送数据,通过第二次握手A知道B能发送数据,第一次加第二次握手A知道B能接收数据,结合第三次握手,B知道A能够接收数据。
四次挥手过程——TCP断开连接
TCP断开连接可以是客户端发起或者服务端发起。
第一次挥手:
客户端进程发出连接释放报文(FIN=1,seq=u),停止发送数据。
第二次挥手:
服务端接收到连接释放报文,向客户端发出确认报文(ACK=1,seq=v,ack=u+1)
第三次挥手:
客户端接收到服务器的确认报文后,等待服务器端发送连接释放报文。这期间服务器将向客户端发送最后的数据。然后服务器端向客户端发送连接释放报文(FIN=1,ACK=1,seq=w,ack=u+1)
第四次挥手:
客户端接收到服务器端发送的连接释放报文后,发出确认报文(ACK=1,seq=u+1,ack=w+1)。服务器端接收到连接释放确认报文后立即关闭,但客户端会等待2∗∗MSL(最长报文段寿命)后断开。
问1:为什么要三次握手?只有两次握手可以吗?
答:三次握手可以完成两个重要功能:服务器端和客户端都知道彼此已经准备好(接收和发送);并且允许双方协商初始序列,在握手过程中发送和确认序列号。如果只有两次握手,可能发生已经失效的请求连接报文被传送到了以后产生错误。假设A向B发送一个连接请求,但请求未及时发送到B,A认为请求失败重新向B发送了一次请求,B正常收到后建立连接传输完成后释放连接。此时A第一次发送的请求到达B,B认为A再次发起请求。若是两次握手,连接就会建立成功,B会一直等待A发送数据,造成B的资源浪费。但如果是三次握手,B向A发送确认报文后A未回应则会释放连接。
问2:为什么需要四次挥手
答:第一次挥手,A向B发起请求表示A没有数据需要发送了。第二次挥手,B向A发送信号确认A的断开请求。第三次挥手B向A发送请求断开连接,表示B没有数据需要传输了。第四次挥手A向B发送确认请求,同意断开。第二、三次挥手分开是因为在第二次挥手后B可能还有最后的数据需要传输给A。挥手次数比握手多一次是因为握手通信只需要连接,而挥手过程不仅要处理连接还要处理数据。
问3:为什么客户端需要等待2MSL再关闭
答:因为网络是不可靠的,最后一个ACK可能跌势,等待时间是用来重发可能丢失的ACK报文。客户端发出最后的ACK回复后假设ACK丢失,服务器端没有收到ACK就会不断重复发送FIN片段。客户端必须等待一段时间确认服务器端是否接收到ACK,如果客户端接收到服务器端发送的FIN,就会再次发送ACK并且等待2MSL(一个发送和一个回复所需的最大时间)。
问4:什么是半连接队列?什么是全连接队列?
答:TCP三次握手后,在第一次握手后服务器端将相关信息存在半连接队列中,然后第二次握手回复确认报文给客户端。客户端发送确认报文后全连接队列没满从半连接队列拿出相关信息放入到全连接队列中。
网络安全成长路线图
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:
# 网络安全学习方法
上面介绍了技术分类和学习路线,这里来谈一下学习方法:
无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
## 题外话
初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:
2023届全国高校毕业生预计达到1158万人,就业形势严峻;
国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。
一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。
6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。
2022届大学毕业生月收入较高的前10个专业
本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。
具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。
“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。
网络安全行业特点
1、就业薪资非常高,涨薪快 2022年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!
2、人才缺口大,就业机会多
2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。
行业发展空间大,岗位非常多
网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…
职业增值潜力大
网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。
随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。
从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
行业发展空间大,岗位非常多
网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…
职业增值潜力大
网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。
随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。
从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!