网页搜索、加载过程详解-程序员宅基地

技术标签: 计算机网络基础  网页搜索  DNS解析过程  网页加载  session和cookie  计算机网络  

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数据存放在服务器内存中。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43676842/article/details/100185464

智能推荐

hdu 1229 还是A+B(水)-程序员宅基地

文章浏览阅读122次。还是A+BTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24568Accepted Submission(s): 11729Problem Description读入两个小于10000的正整数A和B,计算A+B。...

http客户端Feign——日志配置_feign 日志设置-程序员宅基地

文章浏览阅读419次。HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息。FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。BASIC:仅记录请求的方法,URL以及响应状态码和执行时间。NONE:不记录任何日志信息,这是默认值。配置Feign日志有两种方式;方式二:java代码实现。注解中声明则代表某服务。方式一:配置文件方式。_feign 日志设置

[转载]将容器管理的持久性 Bean 用于面向服务的体系结构-程序员宅基地

文章浏览阅读155次。将容器管理的持久性 Bean 用于面向服务的体系结构本文将介绍如何使用 IBM WebSphere Process Server 对容器管理的持久性 (CMP) Bean的连接和持久性逻辑加以控制,使其可以存储在非关系数据库..._javax.ejb.objectnotfoundexception: no such entity!

基础java练习题(递归)_java 递归例题-程序员宅基地

文章浏览阅读1.5k次。基础java练习题一、递归实现跳台阶从第一级跳到第n级,有多少种跳法一次可跳一级,也可跳两级。还能跳三级import java.math.BigDecimal;import java.util.Scanner;public class Main{ public static void main(String[]args){ Scanner reader=new Scanner(System.in); while(reader.hasNext()){ _java 递归例题

面向对象程序设计(荣誉)实验一 String_对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏6次。目录1.串应用- 计算一个串的最长的真前后缀题目描述输入输出样例输入样例输出题解2.字符串替换(string)题目描述输入输出样例输入样例输出题解3.可重叠子串 (Ver. I)题目描述输入输出样例输入样例输出题解4.字符串操作(string)题目描述输入输出样例输入样例输出题解1.串应用- 计算一个串的最长的真前后缀题目描述给定一个串,如ABCDAB,则ABCDAB的真前缀有:{ A, AB,ABC, ABCD, ABCDA }ABCDAB的真后缀有:{ B, AB,DAB, CDAB, BCDAB_对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。

算法设计与问题求解/西安交通大学本科课程MOOC/C_算法设计与问题求解西安交通大学-程序员宅基地

文章浏览阅读68次。西安交通大学/算法设计与问题求解/树与二叉树/MOOC_算法设计与问题求解西安交通大学

随便推点

[Vue warn]: Computed property “totalPrice“ was assigned to but it has no setter._computed property "totalprice" was assigned to but-程序员宅基地

文章浏览阅读1.6k次。问题:在Vue项目中出现如下错误提示:[Vue warn]: Computed property "totalPrice" was assigned to but it has no setter. (found in <Anonymous>)代码:<input v-model="totalPrice"/>原因:v-model命令,因Vue 的双向数据绑定原理 , 会自动操作 totalPrice, 对其进行set 操作而 totalPrice 作为计..._computed property "totalprice" was assigned to but it has no setter.

basic1003-我要通过!13行搞定:也许是全网最奇葩解法_basic 1003 case 1-程序员宅基地

文章浏览阅读60次。十分暴力而简洁的解决方式:读取P和T的位置并自动生成唯一正确答案,将题给测点与之对比,不一样就给我爬!_basic 1003 case 1

服务器浏览war文件,详解将Web项目War包部署到Tomcat服务器基本步骤-程序员宅基地

文章浏览阅读422次。原标题:详解将Web项目War包部署到Tomcat服务器基本步骤详解将Web项目War包部署到Tomcat服务器基本步骤1 War包War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码。当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成Wa..._/opt/bosssoft/war/medical-web.war/web-inf/web.xml of module medical-web.war.

python组成三位无重复数字_python组合无重复三位数的实例-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏13次。# -*- coding: utf-8 -*-# 简述:这里有四个数字,分别是:1、2、3、4#提问:能组成多少个互不相同且无重复数字的三位数?各是多少?def f(n):list=[]count=0for i in range(1,n+1):for j in range(1, n+1):for k in range(1, n+1):if i!=j and j!=k and i!=k:list.a..._python求从0到9任意组合成三位数数字不能重复并输出

ElementUl中的el-table怎样吧0和1改变为男和女_elementui table 性别-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏2次。<el-table-column prop="studentSex" label="性别" :formatter="sex"></el-table-column>然后就在vue的methods中写方法就OK了methods: { sex(row,index){ if(row.studentSex == 1){ return '男'; }else{ return '女'; }..._elementui table 性别

java文件操作之移动文件到指定的目录_java中怎么将pro.txt移动到design_mode_code根目录下-程序员宅基地

文章浏览阅读1.1k次。java文件操作之移动文件到指定的目录_java中怎么将pro.txt移动到design_mode_code根目录下

推荐文章

热门文章

相关标签