浏览器发起的请求过程

https://github.com/skyline75489/what-happens-when-zh_CN/blob/master/README.rst

域名解析——TCP三次握手——IP层发起http请求——服务器响应http请求,返回结果——浏览器解析html,请求具体的资源文件——浏览器对页面进行渲染

DNS解析

1、先找浏览器自身的dns缓存(chrome://chrome-urls),1000条,是否过期
2、查找操作系统的dns缓存,通过命令行ipconfig /allcompartments /displaydns
3、本地host目录 ,优先于dns服务器,通过手动配置来进行某些ip地址的映射,是dns解析之前的地址解析方式,现在的dns是对hosts的统一管理C:\windows\System32\drivers\etc
4、向本地DNS服务器发起域名解析请求,从右往左解析,首先一般是运营商提供的dns服务器(通过UDP协议向DNS的53端口发起递归请求),迭代查询的步骤是

  • 本地向区域服务器发送查询,区域服务器返回给本地,下一次向根服务器进行查找
  • 本地向根服务器进行查找,根服务器返回给本地,下一次向顶级服务器进行查找
  • 本地向顶级服务器进行查找,顶级服务器返回给本地,下一次向 目标区域服务器进行查找
  • 本地向目标区域服务器进行查找,区域服务器将解析出来的ip地址告诉本地服务器,本地服务器进行缓存和返回

两种DNS查询方式:

  • 分布式查询:在用户客户机维护静态映射表,随着网络的发展越来越难以维护
  • 集中式查询:去DNS服务端查询,一般是运营商的服务端,这时该DNS服务端作为DNS客户机去DNS层级表中进行递归查询,而在服务器之间进行迭代查询
    1.递归查询是最常见的查询方式,地区DNS服务器将代替提出请求的用户进行域名查询,若DNS服务器不能直接回答,则该DNS服务器将作为客户机在域各树中的各分支的上下进行递归查询,最终将返回查询结果给DNS客户机,在域名服务器查询期间,DNS客户机将完全处于等待状态,其他域名服务器进行查询,是节约本地服务器性能的查询方式;
    2.迭代查询又称重指引,当DNS客户机使用迭代查询时其他服务器,其他域名服务器查询不到,则返回一个最佳的查询点提示或主机地址给DNS客户机进行下一次查询,若此最佳的查询点中包含需要查询的主机地址,则返回主机地址信息,若此时其他服务器不能够直接查询到主机地址,则DNS客户机按照返回提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止,一般每次指引都会更靠近根服务器,查寻到根域名服务器后,则会再次根据提示向下查找,也就是说每次查询都需要DNS客户机完成

5、url的补全机制,比如说淘宝会将所有可能的相关的域名都买下来,然后当发出dns解析的时候,会将这些域名都会被重定向到www.taobao.com这个正确的域名,当然除了这种情况,在浏览器中会有一些补全的优化机制,所以会发现在浏览器上能访问一些不全或部分错误的请求,是浏览器做了补全和纠正的工作

6、浏览器一直都是默认的http协议和80端口,对于只接受https请求的服务器,之前的操作是先发送http请求,又服务端返回定向到https请求,这样可能会让服务器受到攻击,所以现在的方案是浏览器会维护一个列表,记录了需要https请求的服务器,直接进行https请求(443),如果不匹配则发送HTTP请求(80)
更多:https://blog.csdn.net/hydro88/article/details/87934150
7.nds服务器的负载均衡,一般来说会有多个域名到ip地址的映射
优点: dns服务器会根据复杂均衡算法选择一个ip地址返回,通过物理分析可以分配近距离ip地址,免去了服务器处理的压力,作为一个价格低,性能还可以的方式被广泛使用;
缺点:多级缓存,导致同步慢,短轮询同步导致流量损失,无法知晓服务器的负载情况,所以现在一般dns指向的服务器会进行负载均衡服务器的嵌套,再进行一次分配到达真正的服务器。
https://blog.csdn.net/p312011150/article/details/82979568

TCP三次握手

传输层的TCP协议是端到端的可靠的面向连接的协议,首先服务端会启动服务Listened状态,准备接受请求
1.客户端起始状态Closed,发出SYN=1 seq=x,发出后状态变为SYN-SENT
2.服务端收到后 返回确认信息SYN=1 ACK=1 seq=y ack=x+1, 发出后状态变为SYN-RCVD
3.客户端收到确认后发起真正的http请求 ACK=1 seq=x+1 ack=y+1,客户端状态变为ESTABLISHED
4.服务端收到确认后,状态变为ESTABLISHED,建立TCP连接成功

  • 连接成功后可以调用accept获取该连接,连接失败的话,有可能遭遇SYN泛洪攻击,攻击者向服务器发送很多SYN的请求连接,而不进行确认,这会导致半连接的产生,服务器这时就不能连接真正的请求,所以当这种情况发生,不进行重传而是直接返回RST响应,回到CLOSED状态
    5.服务端给浏览器返回需要的html文件
    6.浏览器进行解析,并下载所需的css js 图片资源包,进行渲染
    7.四次挥手断开tcp连接

TCP四次挥手

1、Client发起断开请求FIN=1 seq=w 状态变为FIN-WAIT1
2、Server收到后立即返回ACK=1 seq=v ack=w+1 发出后状态变为CLOSED-WAIT
3、Client收到确认信息 状态变为FIN-WAIT2
4、Server发送完毕后发起断开 FIN=1 ACK=1 seq=u ack=w+1 发出后状态变为LAST-ACK
5、Client收到后发出确认关闭 ACK=1 seq=w+1 ack=u+1 后进入TIME-WAIT状态,2msl后进入CLOSED状态
6、Server收到确认后 进入CLOSED状态
注:等待2ms是为了防止server收不到client最后发的确认消息,而导致半连接的请求未关闭,会导致资源的溢出,甚至残留的数据错误。
参考:https://blog.51cto.com/linux5588/1351007

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

推荐阅读更多精彩内容

  • 非常好的文章,怕博主删除,再也找不到这么好的文章了,所以复制了一份,博主是2016年写,但是是到现在为止看到的,思...
    吭声_cfdc阅读 1,558评论 0 4
  • 文章首发于个人blog欢迎指正补充,可联系lionsom_lin@qq.com原文地址:《网络是怎样连接的》阅读整...
    lionsom_lin阅读 14,103评论 6 31
  • 1. 基础知识 1.1 3种常见的计算机体系结构划分 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话...
    Mr希灵阅读 19,832评论 6 120
  • 在浏览器输入想要访问的域名之后,浏览器会进行域名解析获得IP地址,在经过TCP的连接,实现数据的传输就会有两种报文...
    古巷挂青灯阅读 1,189评论 0 1
  • 当浏览器输入网址输入www.baidu.com之后。 浏览器会将域名解析成ip地址。how? 用户主机上运行着DN...
    _VITA阅读 1,222评论 0 1