网页搜索、加载过程详解

1. 在浏览器中输入一个网址,它的运行过程。

这个过程中发生了网络通信,即利用TCP/IP协议簇进行网络通信,发送端由应用层往下走,接收端由物理层往上走,步骤如下:

  1. 浏览器输入URL,其中是HTTP 协议。
  2. 应用层DNS解析,获取域名对应的IP。
  3. 得到目标服务器的IP地址以及端口号(HTTP 80断端口,HTTPS 443端口),会调用系统库函数Socket,请求一个TCP流套接字。客户端回向服务器发送HTTP请求报文。
  4. 网络层IP查询MAC地址。
  5. 传输层TCP传输报文。
  6. 数据到达数据链路层,此时客户端发送请求结束。
  7. 服务器端经过数据链路层→网络层→传输层→应用层,解析请求报文,发送响应报文。
  8. 关闭连接,TCP四次挥手。
  9. 客户端解析HTTP 响应报文,浏览器开始显示HTML。
2. DNS解析过程
  1. 浏览器自身缓存
  2. 操作系统缓存
  3. 本地域名服务器(LDNS)
  4. Root Server 域名服务器
  5. 根域名服务器返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)地址
  6. 此时LDNS再发送请求给上一步返回的gTLD
  7. 接受请求的gTLD查找并返回这个域名对应的Name Server的地址,这个Name Server就是网站注册的域名服务器
  8. Name Server根据映射关系表找到目标ip,返回给LDNS
  9. LDNS缓存这个域名和对应的ip
  10. LDNS把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存中,域名解析过程至此结束
3. 搜索敏感词汇时,页面被重置的原理
  1. 正常的TCP连接

根据TCP协议的规定,用户和服务器建立连接:
(1)第一次握手用户向服务器发送SYN数据包发出请求(SYN, x:0);
(2)第二次握手服务器向用户发送SYN/ACK数据包发出回应(SYN/ACK, y:x+1);
(3)第三次握手用户向服务器发送ACK数据包发出确认(ACK, x+1:y+1),至此一个TCP连接建立成功。
其中,x为用户向服务器发送的序列号,y为服务器向用户发送的序列号。

  1. 当搜索敏感词汇

(1)关键字检测,针对明文或者base64等弱加密通讯内容,与准备好的敏感词库进行匹配;
(2)当发现敏感词时,将服务器发回的SYN/ACK包改成SYN/ACK, Y:0,这代表TCP连接被重置,用户便主动放弃了连接,提示连接失败。
原理:让用户误认为服务器拒绝连接,而主动放弃继续与服务器连接,自动阻断记录含有敏感词的网页。

Session 和 Cookie 的区别
  • Cookie

指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。

  1. 把用户的数据写给用户浏览器(存放在客户端)
  2. 支持String类型文件,存放文本信息,且大小受限。
  3. 可以长时间保存在客户端。
  • Session

在web开发中,服务器可以为每个用户创建一个会话对象(session对象),默认情况下一个浏览器独占一个session对象,因此在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中。当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据,为用户服务。

实现原理:服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session服务。

  1. 把用户的数据写到用户独占的session中(存放在服务器中,通常要借助cookie来存放JSESSIONID号)。
  2. 可以存放任何类型数据信息。
  3. session对象由服务器创建,开发人员可以调用request对象的getsession()方法得到。
  4. session对象在浏览器关闭后就失效;session数据存放在服务器内存中。
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值