一次网络请求的流程

网络请求的流程

我们来表述一个浏览器发出HTTP请求的过程:
首先,我们在浏览器输入了URL(例 :www.baidu.com),按下回车,开始我们的HTTP请求

1.通过URL找IP

首先我们的浏览器是不认识baidu.com这个域名的,(注意:是baidu.com,不是www.baidu.com。 因为www是服务器的名字,而baidu.com是域名,相当于这个服务器的地址,com是公司的意义,baidu是公司名,www是公司的一个服务器名称),要将这个服务器的IP地址找到。

如何去找IP地址呢,首先先是本地的缓存,一般是以Hosts文件的形式存在,维持着一个带域名的服务器地址对IP的对应关系,路由器缓存(也算是DNS服务器缓存)

如果没有结果,则会向上层DNS服务器询问,上层DNS服务器的本地缓存中如果没有该记录,则再向上层询问,一直到DNS根服务器。

在根域名服务器中虽然没有每个域名的具体信息,但储存了负责每个域(如COM、NET、ORG等)的解析的域名服务器的地址信息。根域名服务器会将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器,这样你的域名查询请求会进入到相应的顶级域名服务器。顶级域名服务器收到请求后查看区域文件记录,若找到则将其管辖范围内主域名(不带任何前缀的域名,如 baidu.com)服务器的IP地址告诉本地DNS服务器。如果还是没有找到,则进入到下一级域名服务器进行查找。如此重复,直到找到正确的 结果为止,返回 IP地址结果给本地DNS服务器。

本地DNS服务器缓存结果,设置(Time-To-Live)即一条域名解析记录在DNS服务器上缓存时间,关于TTL如果IP经常改变,那么TTL设的短一点长一点都没有太大的 影响,而如果IP经常不变,可以把TTL时间拉长,这样有利于提高命中率。

2.对IP结果建立TCP连接

自己主机IP端口的对目标IP的端口(例:http://www.baidu.com http协议所占用的TCP端口为80端口)三次握手建立TCP连接。

3.向服务器发送数据

浏览器将网络请求封装成HTTP报文,把HTTP报文通过TCP的分包,分成一个个TCP数据包。IP层把上层传输层数据包打包成IP层数据包,并把该数据包发送到更低层数据链路层,相反,IP层也把从低层接收来的数据包传送到更高层TCP或UDP层。(补:IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址))

通过这套封装包过程,发送到服务器端,服务器端则是一个拆包的过程,IP层是不可靠的,所以没有确认的机制,而在上层的TCP层则会对数据包的可靠性进行验证,丢失则会重传数据。保证传输的可靠性。服务器最终解包会拼接成一个完整的HTTP报文,完成整个数据的发送。

4.服务器解析,并返回

对HTTP报文进行解析,根据HTTP报文决定它请求了什么。将处理的结果组装成响应报文(如www.baidu.com , 请求报文为GET,要获取的是缺省值默认的index.html这个主页,则返回网页的源码,将网页源码添加到响应报文正文中),其中比较关键的是状态码(200OK表示成功没毛病),然后将响应报文,通过之前的过程返还给咱们的主机IP。

5.浏览器解析HTML

浏览器加载显示html的顺序是:从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。如果遇到语义解释性的标签嵌入文件(JS脚本,CSS 下载过程会启用单独连接进行下载,并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载(断点)。最终加载完成显示在浏览器上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 1. 基础知识 1.1 3种常见的计算机体系结构划分 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话...
    Mr希灵阅读 19,834评论 6 120
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,034评论 6 174
  • 对浏览器原理有过了解的一定不会陌生这篇神文《How Browsers Work》中文翻译:浏览器原理:新式网络浏览...
    波段顶底阅读 40,160评论 4 101
  • 文 艾米 人生若为初见 是否还记得那日梅园 那漫天落英缤纷的浪漫 许一心愿 只愿得一人 白首不相离 却发现 爱恨...
    月影清韵阅读 1,010评论 44 84