浏览器、web服务器(http服务器)、web代理服务器等的联系与区别--总结

 

                

正向代理和反向代理

正向:

(可以安装在本地计算机上(Local端))

反向:

参考:http://www.javashuo.com/article/p-ykfldzkz-ko.html

区别:

  • 位置不同 
    正向代理,架设在客户机和目标主机之间; 
    反向代理,架设在服务器端;
  • 代理对象不同 
    正向代理,代理客户端,服务端不知道实际发起请求的客户端; 
    反向代理,代理服务端,客户端不知道实际提供服务的服务端;

  可参考http://www.javashuo.com/article/p-hqauynio-ku.html

浏览器和web服务器交互

C/S模式

浏览器访问服务器请求页面的交互过程:

1)依据输入的URL访问DNS解析ip地址

 1.1浏览器先搜索自身的DNS缓存

 1.2 操作系统搜索自身的DNS缓存(浏览器没有找到缓存或者缓存已经失效)

 1.3读取本地的HOST文件

 1.4浏览器发起一个DNS的一个系统调用

两种描述:

(1)

  

参考:计算机网络 

(2)

 宽带运营商服务器查看本身缓存

查看本身缓存,没有?--->运营商服务器发起一个迭代DNS解析的请求

运营商服务器向根域服务器发起请求xxx.com的ip地址是多少?根域回复:我不知道,但我知道com域顶级域名的ip地址,你问它;
运营商服务器向com域顶级域名服务器请求xxx.com的ip地址是多少?com域服务器回复:我不知道,但我知道xxx.com这个域的ip地址;
运营商服务器xxx.com这个域服务器(域名的注册商提供的)发起请求xxx.com的ip地址是多少?xxx.com这个域服务器:结果发送给运营商DNS服务器,
运营商DNS服务器拿到了ip地址,返回给操作系统内核,再返回给浏览器
(运营商服务器把结果返回操作系统内核同时缓存起来)

操作系统内核把结果返回浏览器,浏览器就拿到了www.imooc.com的IP地址
参考:客户端浏览器向服务器发起http请求的全过程 写的不错 https://blog.csdn.net/hefeng6500/article/details/75743110

2)浏览器获得域名对应的IP地址后,发起HTTP“三次握手”

 建立连接:HTTP协议的建立是通过申请Socket套接字实现,用户通过Socket在服务器上申请一个端口号,然后在网络中通过该端口号传输数据。HTTP协议在建立连接的过程中,会通过著名的“三次握手”来建立稳定的连接,即客户机和服务器之间传递三次有效的数据,来保证通信的可靠性

三次握手:

1)发送端先发送一个带有SYN(synchronize)标志的数据包给接收端,在一定的延迟时间内等待接收的回复。

2)接收端收到数据包后,传回一个带有SYN/ACK标志的数据包以示传达确认信息。

3)接收方收到后再发送一个带有ACK标志的数据包给接收端以示握手成功。

在这个过程中,如果发送端在规定延迟时间内没有收到回复则默认接收方没有收到请求,而再次发送,直到收到回复为止。 
这里写图片描述

参考:https://blog.csdn.net/xisuo002/article/details/79161609

3)发送请求。用户和服务器之间建立连接后,可以向指定的目的主机发送请求。

4)返回响应。服务器对用户提交的请求进行处理,并返回请求码(如404)或数据HTML(JS,CSS,图片静态资源等)

5)关闭连接。通信结束后,通信双方均可通过关闭套接字来关闭连接,断开访问。

6)浏览器处理资源。浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给了用户

   浏览器 核心的部分是“解释引擎”“浏览器内核”): 负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。 
   网页的工作过程需要使用到两个引擎渲染引擎(排版)和JavaScript引擎(提供JavaScript代码的运行环境) 

    参考:四大主流浏览器内核(Trident、Gecko、Presto、Webkit)http://www.javashuo.com/article/p-bqgrwblp-mo.html

web代理软件:

功能:缓存页面、DNS 和其他查询,加速 web 服务器响应、降低带宽消耗、网页过滤

 Squid、Privoxy、Varnish、Polipo、Tinyproxy

Privoxy:非缓存类 Web 代理软件、自带的高级过滤功能、使用 action 规则来处理浏览器和远程站点间的数据流

polipo:监听来自浏览器的 web 页面请求,转发到 web 服务器,然后将服务器的响应转发到浏览器。在此过程中,它能优化和整形网络流量

参考:https://linux.cn/article-7119-1.html

web服务器(http服务器):

基本功能就是提供Web信息浏览服务,响应客户端的浏览器请求。因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的

http服务器:协议指定为HTTP/HTTPS

IIS、Apache、Tomcat、Nginx

IIS

  • iis是微软开发的web服务器,适用于windows,付费
  • 运行asp.net asp php

Nginx

  • 轻量级Nginx比apache 占用更少的内存及资源
  • 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
  • 高度模块化的设计,编写模块相对简单
  • C编写
  • Nginx提供web服务,反向代理,以及IMAP/POP3代理
  • 异步非阻塞的,多个连接(万级别)可以对应一个进程(一个进程死掉时,会影响到多个用户的使用,稳定性差)
  • Nginx处理静态文件好,静态处理性能比apache高三倍以上
  • 支持高并发连接,每秒最多的并发连接请求理论可以达到50000个

参考:apache和nginx web服务器优缺点对比 https://blog.csdn.net/li_101357/article/details/78390665

Apache

参考:http://httpd.apache.org/ 

  • rewrite ,Apache比nginx 的rewrite 强大
  • 模块超多,基本想到的都可以找到
  • 少bug ,nginx 的bug 相对较多
  • 稳定性较高、运行在多平台
  • 经常与Tomcat配对使用
  • 同步多进程模型,一个连接对应一个进程(一个进程出现问题时,不会影响其他的用户)

Tomcat

  •  开放源代码的Web 应用服务器
  • Apache旗下项目组开发
  •  JAVA开发者倾向
  • Apache结合开发
  • 实现了对Servlet和JavaServer Page(JSP)的支持(动态网页

和apache的区别:

Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器

来自:https://baike.baidu.com/item/tomcat/255751?fr=aladdin

关于apache和Ngnix的选用建议:

参考资料:

【1】apache和nginx web服务器优缺点对比 https://blog.csdn.net/li_101357/article/details/78390665

【2】一文总结应用、Web、HTTP服务器,Apache、Nginx,Tomcat、IIS、JBoss、Glassfish等区别https://blog.csdn.net/lonelymanontheway/article/details/80711369

【3】Nginx和Apache的特点与区别 https://blog.csdn.net/sosemseo/article/details/91564589

【4】客户端浏览器向服务器发起http请求的全过程https://blog.csdn.net/hefeng6500/article/details/75743110

【5】http请求从浏览器到服务器过程 https://blog.csdn.net/xisuo002/article/details/79161609

【6】https://baike.baidu.com/item/tomcat/255751?fr=aladdin