网络原理&HTTP协议(下)

  • A+
所属分类:安全闲碎


网络原理&HTTP协议(下)

       点击上方蓝字关注我们       

0x1 前言

网络通信就是交换数据包,A向B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。

发送一个数据包,需要知道两个地址

1.对方的MAC地址

2.对方的IP地址

有了这两个地址,数据包才能准确送到 接收者手中。MAC地址有局限性,如果两台电脑不在同一个子网络,就无法知道对方的MAC地址,必须通过 网关(gateway)转发。

静态IP地址:你买了一台新电脑,插上网线,有的电脑设置了自动获取IP就可以上网了,有时候我们必须做一些设置,有时候装宽带的人会告诉你下面四个参数,把他们填入操作系统,计算机就可以连上网了。

1.本机的IP地址

2.子网掩码

3.网关的IP地址

4.DNS的IP地址

这四个参数缺一不可。

因为他们是给定的,计算机每次开机都会分到同样的IP得知,所以这种情况被称作 静态IP地址上网 。这样的设置很 专业,普通用户望而生畏,而且如果一台电脑的IP地址保持不变,其他电脑就不能使用这个地址,不够灵活。出于这两个原因,大多数用户使用 动态IP地址上网。

动态IP地址:

所谓 动态IP地址,指计算机开机后,会自动分配 到一个IP地址,不用人为设定。它使用的协议叫做DHCP协议。

DHCP协议

首先,它是一种 应用层 协议,建立在UDP协议之上

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

一个例子:访问网页

本机参数

本机的IP地址:192.1681.100

子网掩码:255.255.255.0

网关的IP地址:192.168.1.1

DNS的IP地址:8.8.8.8

我们在浏览器访问google.com意味着浏览器要向网页请求数据包。

DNS协议

我们知道,发送数据包,必须要知道对方的IP地址。但是,现在,我们只知道网址www.google.com,不知道它的IP地址。DNS 协议可以帮助我们,将这个网址转换成IP地址。已知DNS服务器为8.8.8.8,于是我们向这个地址发送一个DNS数据包(53端口)。然后,DNS 服务器做出响应,告诉我们Google的IP地址是172.194.72.105。于是,我们知道了对方的IP地址。

子网掩码

接下来,我们要判断,这个IP地址是不是在 同一个子网络,这就要用到 子网掩码。

已知 子网掩码 是255.255.255.0,本机用它对自己的IP地址192.168.1.100,做一个二进制的AND运算(两个数位都为1,结果为1,否则为0),计算结果为192.168.1.0;然后对Google的IP地址172.194.72.105也做一个AND运算,计算结果为172.194.72.0。这两个结果不相等,所以结论是,Google与本机不在同一个子网络。

因此,我们要向Google发送数据包,必须通过网关192.168.1.1转发,也就是说,接收方的MAC地址将是网关的MAC地址。

0x2 应用层协议

浏览网页用的是HTTP协议,它的整个数据包构造是这样的:

GET / HTTP/1.1
Host: google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

TCP协议

TCP 数据包需要设置端口,接收方(Google) 的HTTP端口默认是 80,发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。

IP协议

TCP数据包再嵌入IP数据包。IP数据包需要设置双方的IP地址,这是已知的,发送方是192.168.1.100(本机),接收方是172.194.72.105(Google)。

以太网协议

IP数据包嵌入 以太网数据包。以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关192.168.1.1的MAC地址(通过我们前面讲的ARP协议得到)。

服务器端响应

经过多个网关的转发,Google的服务器172.194.72.105,收到了这 四个 以太网数据包。

根据 IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的HTTP请求,接着做出HTTP响应,再用TCP协议发回来。本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。

WEB 页面解析的总体流程

客户端(浏览器)发起页面请求,主机对 地址中的DNS 域名进行解析,找到对应的 IP 地址,请求发送到 服务端,服务器根据请求内容发送响应给客户端,客户端收到响应,将内容渲染成网页。

网络原理&HTTP协议(下)


0x3 web中间件

Nginx

Nginx 性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

1、相比 Apache,用 Nginx 作为 Web 服务器:使用资源更少,支持更多并发连接,效率更高。

2、作为负载均衡服务器:Nginx 既可在内部直接支持 Rails 和 PHP,也可支持作为 HTTP 代理服务器对外进行服务。Nginx 用 C 编写而成, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

3、作为邮件代理服务器:Nginx 同时也是一款非常优秀的邮件代理服务器(最早开发这个产品的目的之一,是作为邮件代理服务器)。

4、反向代理可以根据url将请求转向于不同用途的集群,比如图片请求,转向图片服务器集群;视频请求,转身视频服务器集群。

nginx是一款轻量级的web服务器/反向代理服务器/电子邮件代理服务器,安装非常简单,配置文件也很简洁(还支持 perl 语法)。Nginx 支持平滑加载新配置,还能够在不间断服务的情况下进行软件版本升级。

Apache

1、Apache 是 LAMP 架构最核心的 Web Server,开源、稳定、模块丰富是 Apache 的优势。但 Apache 的缺点是有些臃肿,内存和 CPU 开销大,性能上有损耗,不如一些轻量级的 Web 服务器(譬如:Nginx、Tengine等)高效,轻量级的 Web 服务器对于静态文件的响应能力来说远高于 Apache 服务器。

2、Apache 做为 Web Server 是负载 PHP 的最佳选择,如果流量很大的话,可以采用 Nginx 来负载非 PHP 的 Web 请求。Nginx 是一个高性能的 HTTP 和反向代理服务器,Nginx 以其稳定、丰富功能集、示例配置文件和低系统资源的消耗而闻名。Nginx 现能支持 PHP 和 FastCGI,也支持负载均衡和容错,可和 Apache 配合使用,是轻量级的 HTTP 服务器的首选。

3、Web 服务器缓存也有多种方案,Apache 提供了自己的缓存模块,也可以使用外加的 Squid 模块进行缓存,这两种方式均可有效提高 Apache 的访问响应能力。Squid Cache 是一个 Web 缓存服务器,支持高效缓存,可作为网页服务器的前置 cache 服务器缓存相关请求以提高 Web 服务器速度。把 Squid 放在 Apache 的前端来缓存 Web 服务器生成动态内容,而 Web 应用程序只需要适当地设置页面实效时间即可。如访问量巨大,则可考虑使用 memcache 作为分布式缓存。

4、PHP 的加速可使用 eAccelerator 加速器,eAccelerator 是一个自由开放源码的 PHP 加速器。它会优化动态内容缓存,提高 PHP 脚本缓存性能,使 PHP 脚本在编译状态下,对服务器的开销几乎完全消除。它还可对脚本起优化作用,以加快其执行效率。使 PHP 程序代码执效率可提高 1-10 倍。

IIS

IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于 运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和 Windows Server 2003一起发行,但在Windows XP Home版本上并没有IIS。IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器, 分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网) 上发布信息成了一件很容易的事。IIS最经典的版本是IIS6.0,最常见于Windows Server 2003系统中;IIS7.0则常见于 Windows Server 2008中。

Tomcat

Tomcat(Apache Tomcat)是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他公司及个人共同开发而成。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。

实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能。

0x4 总结

网络原理&HTTP协议(上)在历史文章可以找到,理解这些协议和原理对我们学习网络安全这条路是很有必要的,熟悉这些中间件也是很有必要的,因为这些中间件也有大批的漏洞。


网络原理&HTTP协议(下)

相关推荐: 批量挖洞从收集信息到数据存储

针对单个网站的信息收集,可能没什么难度,有大量一键信息收集的工具,比如 oneforall,但是如果你面对的目标是一千一万个,该如何信息收集?数据该如何使用? 很多同学现在挖洞靠一些网络空间搜索引擎,比如 zoomeye、fofa 等,这些平台已经收集了网络空…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: