1、客户端浏览器通过DNS解析到www.baidu.com的IP地址202.108.22.5,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到202.108.22.5,然后通过TCP进行封装数据包,输入到网络层。 
2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。 (建立tcp连接)
3、客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。 (IP的重要功能是寻址和路由
4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定目的IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。(IP地址转为MAC)


事件顺序

(1) 浏览器获取输入的域名www.baidu.com 
(2) 浏览器向DNS请求解析www.baidu.com的IP地址 
(3) 域名系统DNS解析出百度服务器的IP地址

(4) 浏览器发出HTTP请求,请求百度首页 
(5) 浏览器与该服务器建立TCP连接(默认端口号80)

(6)IP的重要功能是寻址和路由

(7)定义了通过物理网络输出数据所需的协议与硬件要求

服务器通过HTTP响应把首页文件发送给浏览器 
(7) TCP连接释放 
(8) 浏览器将首页文件进行解析,并将Web页显示给用户。


涉及到的协议

(1) 应用层:HTTP(WWW访问协议),DNS(域名解析服务) 
DNS解析域名为目的IP,通过IP找到服务器路径,客户端向服务器发起HTTP会话,然后通过运输层TCP协议封装数据包,在TCP协议基础上进行传输

(2) 传输层:TCP(为HTTP提供可靠的数据传输),UDP(DNS使用UDP传输) 
HTTP会话会被分成报文段,添加源、目的端口;TCP协议进行主要工作

(3)网络层:IP(IP数据数据包传输和路由选择),ICMP(提供网络传输过程中的差错检测),ARP(将本机的默认网关IP地址映射成物理MAC地址) 
为数据包选择路由,IP协议进行主要工作,相邻结点的可靠传输,ARP协议将IP地址转成MAC地址。

>>>点击网址后,应用层的DNS协议会将网址解析为IP地址;

DNS查找过程:(缓存->hosts文件->DNS服务器)

1.        浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。

2.        如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存(hosts文件)中是否有这个域名对应的DNS解析结果。

3.        若还没有,此时会发送一个数据包给DNS服务器,DNS服务器找到后将解析所得IP地址返回给用户

>>>在应用层,浏览器会给web服务器发送一个HTTP请求;

请求头为:GET http://www.baidu.com/HTTP/1.1

>>>在传输层,(上层的传输数据流分段)HTTP数据包会嵌入在TCP报文段中;

TCP报文段需要设置端口,接收方(百度)的HTTP端口默认是80本机的端口是一个1024-65535之间的随机整数,这里假设为1025这样TCP报文段由TCP首部(包含发送方和接收方的端口信息)+ HTTP数据包组成。

>>>在网络层中,TCP报文段再嵌入IP数据包中;

IP数据包需要知道双方的IP地址,本机IP地址假定为192.168.1.5,接受方IP地址为220.181.111.147(百度),这样IP数据包由IP头部(IP地址信息)+TCP报文段组成。

>>> 在网络接口层,IP数据包嵌入到数据帧(以太网数据包)中在网络上传送;

数据帧中包含源MAC地址和目的MAC地址(通过ARP地址解析协议得到的)。这样数据帧由头部(MAC地址)+IP数据包组成。

>>>数据包经过多个网关的转发到达百度服务器,请求对应端口的服务;

服务接收到发送过来的以太网数据包开始解析请求信息,从以太网数据包中提取IP数据包—>TCP报文段—>HTTP数据包,并组装为有效数据交与对应线程池中分配的线程进行处理,在这个过程中,生成相应request、response对象。

>>>请求处理完成之后,服务器发回一个HTTP响应;

请求处理程序会阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并将数据存储在服务器上。处理完毕后,数据通过response对象给客户输出信息,输出信息也需要拼接HTTP协议头部分,关闭后断开连接。断开后,服务器端自动注销request、response对象,并将释放对应线程的使用标识(一般一个请求单独由一个线程处理,部分特殊情况有一个线程处理多个请求的情况)。

响应头为:HTTP/1.1  200 OK

>>>浏览器以同样的过程读取到HTTP响应的内容(HTTP响应数据包),然后浏览器对接收到的HTML页面进行解析,把网页显示出来呈现给用户。

客户端接收到返回数据,去掉对应头信息,形成也可以被浏览器认识的页面HTML字符串信息,交与浏览器翻译为对应页面规则信息展示为页面内容。


1. 由域名→IP 地址
寻找 IP 地址的过程依次经过了浏览器缓存、系统缓存、hosts文件、路由器缓存、 递归搜索根域名服务器。

2. 建立 TCP/IP 连接(三次握手具体过程)(找到IP之后,立即进行三路握手建立TCP连接)

3. 由浏览器发送一个 HTTP 请求

4. 经过路由器的转发,通过服务器的防火墙,该 HTTP 请求到达了服务器

5. 服务器处理该 HTTP 请求,返回一个 HTML 文件

6. 浏览器解析该 HTML 文件,并且显示在浏览器端


这里需要注意:

o  HTTP 协议是一种基于 TCP/IP 的应用层协议,进行 HTTP 数据请求必须先建立 TCP/IP 连接。

o  可以这样理解:HTTP 是轿车,提供了封装或者显示数据的具体形式;Socket 是发动机,提供了网络通信的能力。

o  两个计算机之间的交流无非是两个端口之间的数据通信 , 具体的数据会以什么样的形式展现是以不同的应用层协议来定义的。

3.浏览器输入www.baidu.com到显示主页的全过程相关推荐

  1. 浏览器输入www.baidu.com之后发生了什么

    经典面试题:浏览器输入www.baidu.com之后,按下回车键之后会发生什么? 从逻辑和网络传输两个方面来看 主要步骤有如下几步: 1.域名解析 2.浏览器与服务器建立连接 3.web浏览器发送HT ...

  2. 浏览器输入www.baidu.com

    一.浏览器输入www.baidu.com 1.DNS域名解析,为何解析?因为网络标准规定url只能是字母和数字和其他特殊符号需要转义,不转义会出现歧义.DNS解析过程:首先会向浏览器查询有无缓存,无的 ...

  3. 浏览器输入www.baidu.com之后,发生了什么?

    1.将域名www.baidu.com解析为IP地址: 解析IP地址的过程依次经过了:浏览器缓存.系统缓存.hosts文件.路由器缓存.递归搜索根域名服务器. 浏览器缓存: 每个浏览器都会有一个DNS缓 ...

  4. 详细介绍一下浏览器输入www.baidu.com后会发生什么

    (1)    客户端浏览器通过DNS解析到www.baidu.com的IP地址,通过这个IP地址找到客户端到服务器的路径.客户端浏览器发起一个HTTP会话到IP地址,然后通过tcp进行封装数据包,输入 ...

  5. 浏览器输入www.baidu.com发生了什么

    1.查找该域名的ip地址 查找浏览器本地缓存,如果浏览器由本地缓存且未过期则返回结果. 否则向上一级DNS服务器查询,直到DNS根服务器. 具体查询是一种递归式搜索,浏览器向DNS服务器发送域名,DN ...

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

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

  7. 浏览器输入baidu.com加载的过程是什么,听完我的回答和尚摇了摇头,就这?

    下半年第一天,今天是七一建党节哦 前言 回答这个问题的时候是去年三月份,我入职不到三个月还没转正. ​ 和尚是一个互联网大厂朋友的外号,初中那货剃了光头,后来便有了和尚这个亲切的外号. 去年那时候我两 ...

  8. 浏览器输入字无法显示选字框问题

    浏览器输入字无法显示选字框问题 问题 好几次电脑开机后想要在Edge浏览器搜索内容都会出现,能输入,然后是无法显示选字框,只能盲猜. 解决方法 以 Windows10 为例 首先点击开始按钮 接着点 ...

  9. 从浏览器输入http://www.baidu.com,到看到百度主页的过程中到底发生了什么?

    从浏览器输入http://www.baidu.com,到看到百度主页的过程中到底发生了什么? 网络模型 1. 根据网络七层模型,浏览器和服务器都可以认为是应用层的一个应用, 2. 所以本质上来说就是从 ...

最新文章

  1. Datawhale面经项目来了!
  2. 软件常见故障的现象、故障排除的方法
  3. 2层框架结构柱子间距_2分钟掌握五种不同类型的厂房结构,找厂房少绕弯!
  4. python解释器 pip安装_pip安装Python库时的问题及解决方法总结
  5. 关于perl中DBD for Oracle的安装
  6. Java中的SynchronousQueue示例–生产者使用者解决方案
  7. 曝光原理_泰国精戈咖啡效果反馈 作用原理曝光
  8. 使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法 ——转载...
  9. fiddler设置中文版本_突破安卓7.0以上版本WX小程序抓包篇
  10. Oracle数据库的【安装包选择、下载】、安装与卸载
  11. 内网穿透工具之NATAPP使用教程
  12. 考试用计算机反思800字,期中考试反思800字(5篇)
  13. Python语言程序设计基础_答案_前言_通识教育必修课程_上海师范大学
  14. YIT-CTF—Web
  15. 2020校招互联网公司Offer白菜价!看完TM我酸了
  16. TSMaster1.4.2补丁包发布
  17. win ollvm环境_打造舒适搬砖环境,这些是我最想推介的桌面好物
  18. PPT2016;插入视频,无法实现自动播放
  19. 二十三种设计模式(第十二种)-----代理模式(Proxy)
  20. JAVA异常记录(ORA-56900:pivot|unpivot 操作内不支持绑定变量)

热门文章

  1. Android之ProgressBar读取文件进度解析
  2. 加油!兄弟连的兄弟们!
  3. Matlab 坐标轴比例一致导致图形变形
  4. 泛洪攻击(Flood)与TCP代理(TCP proxy)
  5. C++如何监听http请求
  6. 调用Cython时报错: More than one filename match found for utility code Capsule
  7. 卡尔曼滤波matlab_卡尔曼滤波(kalaman Filter)
  8. ad策略下发_组策略--下发文件到计算机
  9. 云消防大数据_消防云大数据app下载-消防云大数据下载v1.1.5 安卓版-西西软件下载...
  10. python做运动控制_ROS探索总结-61.MoveIt!编程驾驭机械臂运动控制