http知识补充
在我的职业生涯中,没怎么重视过这http四个字,想当然的觉得不就是个网页请求嘛就没怎么当回事,而且很多http相关的长篇大论一听就困,
真心是弄不下去,但是就是这种观念导致我后期的工作中不断的挖坑,不断的回头去补课,没少吃亏,所以这一节单独拎出来,下一节再来说
这个模块
首先来看一下,什么是http以及和他相关的一些知识
那么什么是http呢,在大学学的课程上和书籍上都讲都很明白,http他就是一种协议,计算机之间要共同遵守这种规则才能彼此之间相互通信
当然现在已经不局限与计算机了,手机,冰箱,电视机啊,这些都可以

那这个协议在使用场景中的流程是怎么样的呢,通常会http客户端发起一个请求,比如用手机的浏览器打开慕课网,那么就创建了到服务器的
端口,一般来说是80的默认端口,这么一个tcp的连接,那http的服务器呢就在端口监听客户端的请求,一但收到请求,服务器就会向客户端
返回一个状态,比如200的一个状态码,同时返回内容,比如文件啊,错误信息啊,json数据等等,那么这就是大概的一个流程,貌似又听懂了
但是还是不够直观

在输入网址到渲染页面,很快就出现了内容,那么在这个过程,计算机和浏览器中间都做了什么事情
比如我们用的是chrome浏览器,那么chrome会先搜索自身的dns缓存,看缓存里面有没有这个域名或者ip地址,那么这个缓存的时间大概
只有一分钟,如果有缓存,就看有没有过期,如果过期,这个解析就结束了,那怎么看chrome自身的缓存呢,我们打开chrome浏览器,通过
输入
chrome://net-internals/#dns
这里就可以查看曾经浏览过的dns缓存纪录,第二步,如果浏览器没有找到缓存,或者缓存已经失效,那么chrome会搜索操作系统自身的dns
缓存,如果找到,而且没有过期,也会停止搜索,然后解析到此结束,第三部,如果操作系统的dns缓存也没有找到,就会尝试读取本地的host
文件,host文件大家应该很熟悉,第四部,如果host文件里面也没有找到对应的配置项,浏览器就会发起一个dns的系统调用,就会向本地主库
dns服务器,一般是由宽带运营商提供的,发起的一个域名解析请求,

那么运营商的dns服务器,首先会查找自身的缓存,找到对应的条目,如果说没有过期,就直接解析成功了,如果说也没有找到这个条目,那么运营
商服务器会代替我们的浏览器发起一个迭代dns解析的请求,运营商通过根域找到com,再找到xx.com,再找到对应的ip地址,然后把结果返回给
运营商服务器,运营商服务器再把结果返回给操作系统内核,同时缓存起来,这个缓存可能会失效,根据时间的长短,然后操作系统内核通过dns
返回的结果,返回给浏览器,最终浏览器拿到了www.xx.com的ip地址
然后到了最后一步,浏览器拿到了ip地址,也就是域名解析完成以后,就拿到了域名对应到ip地址,就会发起经典到tcp三次握手,浏览器就会
向服务器到随机端口发起tcp连接请求,
http://www.cnblogs.com/wzndkj/p/7710730.html
http知识补充的更多相关文章
- Redis基础知识补充及持久化、备份介绍(二)--技术流ken
Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...
- CRM中QueryDict和模型表知识补充
CRM中QueryDict和模型表知识补充 1.QueryDict的用法 request.GET的用法:1.在页面上输入:http://127.0.0.1:8000/index/print(reque ...
- Android知识补充(Android学习笔记)
Android知识补充 ●国际化 所谓的国际化,就是指软件在开发时就应该具备支持多种语言和地区的功能,也就是说开发的软件能同时应对不同国家和地区的用户访问,并针对不同国家和地区的用户,提供相应的.符合 ...
- (C/C++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
- SQL语句之 知识补充
SQL语句之 知识补充 一.存储过程 运用SQL语句,写出一个像函数的模块,这就是存储过程. 需求: 编写存储过程,查询所有员工 -- 创建存储过程(必须要指定结束符号) -- 定义结束符号 DELI ...
- Python学习---django知识补充之CBV
Django知识补充之CBV Django: url --> def函数 FBV[function based view] 用函数和URL进行匹配 url --> ...
- 4-5 Scrapy知识补充
FormRequest FormRequest类是专门用来处理HTML表单的,同时对隐藏的表单处理也很方便.适合用来完成登录操作. 类原型:class scrapy.http.FormRequest( ...
- Redis基础知识补充及持久化、备份介绍
Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)–技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis持 ...
- 大数据学习day23-----spark06--------1. Spark执行流程(知识补充:RDD的依赖关系)2. Repartition和coalesce算子的区别 3.触发多次actions时,速度不一样 4. RDD的深入理解(错误例子,RDD数据是如何获取的)5 购物的相关计算
1. Spark执行流程 知识补充:RDD的依赖关系 RDD的依赖关系分为两类:窄依赖(Narrow Dependency)和宽依赖(Shuffle Dependency) (1)窄依赖 窄依赖指的是 ...
- 曹工说Redis源码(2)-- redis server 启动过程解析及简单c语言基础知识补充
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...
随机推荐
- springMvc使用restful风格
转载:https://blog.csdn.net/weide_java/article/details/53793769 1,REST架构师一个抽象的概念,目前主要是基于HTTP协议实现,其目的是为了 ...
- idea(2)快捷键
Ctrl+E:最近编辑文件 Ctrl+J:自动代码快捷 Ctrl+N:查找类 Ctrl+U:大小写转换 Ctrl+F12:outline Alt+1:全屏 Alt+F1:类定位到左侧目录 Alt+In ...
- vue混入(mixins)
混入(mixins)是一种分发vue组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项. 当组件使用混入对象时,所以混入对象的选项将被混入该组件本身选项,当组件和混入对象含有同名选项时,这 ...
- docker 部署公司阿里云服务器 (一)
持续更新... 背景环境: 阿里云ecs服务器 centos7.4 公网地址:xx.xx.xx.xx 内网地址:172.16.77.4 阿里云RDS 阿里云 Redis 第 ...
- (转) HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手、TCP/IP协议基础、加密学)
HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手.TCP/IP协议基础.加密学) 原文:http://blog.csdn.net/itermeng/article/detai ...
- Ubuntu环境下安装Bochs
首先说一下我的Ubuntu版本,敲命令 sudo lsb_release -a 就可以看到 No LSB modules are available. Distributor ID: Ubuntu D ...
- php关于网页乱码问题
指定浏览器打开网页的编码格式: <meta http-equiv="Content-Type" content="text/html; charset=gb2312 ...
- Linux 启动盘命令
linux下有很多工具可以制作启动盘, 例如 unetbootin 和 wubi, 不过我们可以使用linux下的一条命令来完成-----dd 操作方法: 1 卸载你的U盘 假设你的u盘对应的设备是s ...
- JS获取前一个页面
document.referrer 可以得到上一个点击超连接进来的页面URL注意:只能访问服务器上页面使用,打开本地文件无效(为空字符串)
- JQuery中的prop和attr
prop和attr都可以用来获取并改变对象的属性, 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 栗子: ...