浏览器收到URL时(例如: http://www.joes-hardware.com:80/power-tools.html), 会执行如下所示的步骤:

1. 浏览器解析出主机名 即:www.joes-hardware.com

2. 浏览器查询这个主机名的IP地址 (DNS: 202.43.78.3)

3. 浏览器获得端口号 (80)

4. 浏览器发起到202.43.78.3端口80的连接

5. 浏览器向服务器发送一条HTTP GET报文

6. 浏览器从服务器读取HTTP响应报文

7. 浏览器关闭连接

(以上内容摘自HTTP权威指南)

用户输入网址后到收到网页,客户端需要发送三次数据。

1. DNS解析 www.163.com对应的IP,
2. 发起tcp三次握手连接,建立TCP/IP连接完成后,进入3步。
3. 发出http请求主页包。
4. browser显示html结果。

首先对URL有一个初步认识,把URL分割成几个部分:协议、网络地址、资源路径。其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括端口号;协议是从 该计算机获取资源的方式,常见的是HTTP、FTP,不同协议有不同的通讯内容格式;资源路径指示从服务器上获取哪一项资源。
例如:http://www.guokr.com/question/554991/
协议部分:http
网络地址:www.guokr.com
资源路径:/question/554991/

1. 在浏览器的地址栏输入网址以后, 首先要获得网址所对应的IP地址, 即进行DNS域名解析。 具体过程如下:

首先,客户端的应用层会封装数据到达传输层,在传输层标识源端口号与目的端口号(源端口号为大于1023随机,目的端口号为UDP53端口)及应用层服务(这里因该是请求DNS查询服务吧)。传输层封装数据产生数据段传给网络层,在网络层标识源IP地址及目的IP地址(源IP 地址为客户端IP,目的IP地址为DNS服务器IP地址),网络层将数据段封装为数据包传给数据链路层,在数据链路层将会在数据包里加入源MAC地址及目 的MAC地址(源MAC地址为客户端网卡MAC地址,目的MAC地址为DNS服务器MAC地址),这里应该查询MAC缓存。数据链路层根据客户端与DNS 服务器之间的链路,将数据包封装成帧,传给物理层。物理层会将数据帧转化为电信号放到物理介质上。
电信号到达DNS服务器后会从物理层到达应用层(这里和客户端发送数据差不多,只不过这个过程变成了解封装),DNS服务器做完域名解析会得到 www.163.com所对应的IP地址218.92.221.212,(可以通过ping方式获取网址的IP地址,例如:ping www.163.com) 然后按照同样的方式再将数据返回给客户端。

2. 客户端得到IP地址以后, 会根据所获得的IP地址以及要访问的端口号发起网络连接, 即tcp三次握手连接, 建立起TCP/IP网络连接, 具体过程如下:

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED状态,完成三次握手。
通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。

3. 建立起连接以后, 客户端会根据HTTP协议组织一个请求的数据包发送给Web服务器, 具体过程如下:

应用层标识HTTP服务将数据发送到传输层,传输层将数据+源端口号(大于1023)、目的端口号(80)+上层服务WWW封装为数据段传给网路层。网络层将数据段+源ip与目的ip(WWW服务器的ip地址)封装为数据包发送到数据链路层。数据链路层参照ARP缓存表确定源MAC地址(本机MAC地址) 及目的MAC地址(客户端与路由B相连端口的MAC地址)将数据包封装成数据帧。这里还需要CRC校验。。。。。。数据帧到达物理层后变成电信号发送到介质上(这里还需要访问控制方法CSMA/CD)。

4. 服务器响应请求,将数据返回给浏览器。数据可能是根据HTML协议组织的网页,里面包含页面的布局、文字。数据也可能是图片、脚本程序等。然后浏览器再将接收到的内容显示出来,即我们看到的网页信息。

转载于:https://www.cnblogs.com/beyond-Acm/p/4309983.html

从键入网址到页面显示经历了那些过程相关推荐

  1. 录音机 在launcher中显示_「 腾讯 微信事业部 社招二面」——一个APP从启动到主页面显示经历了哪些过程?...

    8月份的时候离职,至今已经2个月了.突击复习下来结果算是有个交代了吧,有赞(深圳) .招商已经过了三面,等待HR面,腾讯过了二面,面试时状态还行,不知会不会有三面,许愿一个三面和HR面吧!(本人比较想 ...

  2. 一个APP从启动到主页面显示经历了哪些过程?(App启动流程,从点击桌面开始)

    本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理.不介绍具体源码,仅仅构建一个大体框架. 原地址链接:http://www.jianshu.com/p/a72c5 ...

  3. dns域名解析过程——从浏览器输入网址到页面显示的中间过程

    BEGIN: 一.域名 1.域名(domain name)也叫做网域,是英特网上的一个服务器或者一个网络系统的名字,域名具有唯一性,在传输数据时作为定位标识,全球没有重复的域名.域名的形式是由若干个字 ...

  4. 一道经典面试题:从输入url到页面显示经历了什么?

    这道题太经典了,因为它涉及到太多的知识点.回流重绘.浏览器渲染原理.event loop 和 TCP连接断开的方式等. 主要过程如下. 一.DNS解析:url解析成ip地址和对应的端口号 网络进程会先 ...

  5. 请讲一下浏览器从接收到一个URL,到最后展示出页面,经历了哪些过程

    1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回HTTP报文 5.浏览器解析渲染页面

  6. 公司董事长——50w年薪程序员从顶端到谷底,一个APP从启动到主页面显示经历了哪些过程

    前言 在2020年1月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,再找工作那几个月真 ...

  7. 安卓开发面试题,一个APP从启动到主页面显示经历了哪些过程?威力加强版

    前言 移动研发火热不停,越来越多人开始学习 android 开发.但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容.市面上也多是谈论知识图谱,缺少体 ...

  8. 从输入一个网址到浏览器显示页面经历的全过程(网络开篇)

    作为网络专栏的开篇导文,本文概况介绍下经典案例:从输入一个网址到浏览器显示页面的全过程. 步骤概要介绍如下: 1.输入网址 2.DNS解析获取域名对应的IP地址 3.建立TCP连接 4.web浏览器向 ...

  9. 从输入URL到浏览器显示页面到底经历了什么?

    文章目录 从输入URL到浏览器显示页面到底经历了什么? DNS解析 1.DNS解析过程 2.DNS优化 建立TCP连接 1.什么是TCP? 2.TCP的连接建立--三次握手 3.为什么是三次握手? 发 ...

最新文章

  1. linux存储--inode与block详解(八)
  2. node 原生实现服务端 websocket
  3. INNODB的锁的类型
  4. sand.A java_java中volatile关键字的含义(转)
  5. Ubuntu 下 Python自由切换
  6. 使用UIBinder的GWT自定义按钮
  7. react学习(17)----ant design格式化日期
  8. 南邮哈夫曼编码c语言代码_漫画:“哈夫曼编码” 是什么鬼?
  9. (转)解读NTFS(一)
  10. 互联网日报 | 5月10日 星期一 | 小米成立私募股权基金管理公司;58金融升级为58数科;京东健康推出“家医保”健康险服务...
  11. 最长单词(信息学奥赛一本通-T1149)
  12. C# List的克隆
  13. markdown 链接跳转到标题_如何使用markdown语法来写文章
  14. python 内存溢出_python之记录一次内存溢出
  15. php滑到底部自动加载更多,ListView滑动到底部自动加载更多
  16. 【分享】北漂五年,创业、字节、和阿里,现在回家
  17. Spark 的 python 编程环境
  18. zabbix监控oracle rac,CentOS6.9下zabbix3.4.9通过orabbix1.2.3来监控oracle11gRAC
  19. MySql ALTER用法
  20. 如何同步企业微信的标签?

热门文章

  1. bread是可数还是不可数_bread可数还是不可数
  2. AI量化策略会:可以直接上实盘的策略构建方法
  3. Chaikin细分曲线
  4. Git分布式版本控制系统
  5. 《惢客创业日记》2020.07.04(周六)小学生来搅局?
  6. 分析B站《送你一朵小红花》弹幕评论
  7. Consider defining a bean of type ‘com.XXX‘ in your configuration.
  8. Fiber 内部:React 中新的协调算法的深入概述
  9. 2020高二计算机会考试题,2019-2020年高二下学期会考模拟信息技术试题 含答案
  10. 五笔新手,打开搜狗五笔输入法自动联想功能