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,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...
随机推荐
- python3 enumerate()函数笔记
d={"A":"a","B":"b","C":"c","D" ...
- 10.Web组件复用
1.静态包含(一个指令) 在软件工程中构建可复用组件可极大的提高软件生产效率.增强系统的可维护性HTML标记对于一个web应用系统中的页面都是通用的,比如公司标志.版权声明.导航菜单JSP中引用的we ...
- Spring配置问题:The prefix "util" for element "util:map" is not bound.
在spring的头部文件中没有引入: xmlns:util=”http://www.springframework.org/schema/util” 原文:https://blog.csdn.net/ ...
- 分治法 - Divide and Conquer
在计算机科学中,分治法是一种很重要的算法.分治法即『分而治之』,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的 ...
- django-filter version 2.0 改动
今天使用django-filter时候遇到了下面这个问题: django-filter: TypeError at /goods/ init() got an unexpected keyword a ...
- RTT设备与驱动之串口
有一般收发.中断方式.DMA方式: rt_device_t rt_device_find(const char* name); rt_err_t rt_device_open(rt_device_t ...
- inventor安装失败怎样卸载安装inventor 2018?
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- Unity 游戏对象的组件列表
描述: 1 个游戏对象,上面有 4 个组件, 如图: 脚本 Test_01 的内容,如下: using System.Collections; using System.Collections.Gen ...
- Andrew Ng 的 Machine Learning 课程学习 (week5) Neural Network Learning
这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛.这门课程对想要了解 ...
- Active Directory 域服务对象
局域网计算机控制中心 可以在DC上控制所有局域网资源(计算机 .用户.设备) 大中型企业管理必备. 最后,它还可以让开发人员集成LDAP身份认证,使用域账号登录应用. 也就是说,此企业的所有系统,都可 ...