当你在浏览器输入网址后,回车后发生了什么

假设你用一个全新的浏览器(第一次启动的那种),访问百度(http://www.baidu.com/),在你敲入网址并按下回车之后,将会发生以下神奇的事情:

(1)浏览器先尝试从Host文件中获取http://www.baidu.com/对应的IP地址,如果能取到,自然好,如果不能,就使用DNS协议来获取IP。

在DNS协议中,PC会向你的本地DNS服务器求助(一般是路由器),希望从本地DNS服务器那里得到百度的IP,得到就好,得不到还得向更高层次的DNS服务器求助,最终总能得到百度的IP。

(2)得到百度的IP,下一步是使用TCP协议,建立TCP连接。

在TCP协议中,建立TCP需要与百度服务器握手三次,你先告诉服务器你要给服务器发东西(SYN),服务器应答你并告诉你它也要给你发东西(SYN、ACK),然后你应答服务器(ACK),总共来回了3次,称为3次握手。

不过,建立TCP连接有个前提(或者说给服务器发消息有个前提):你必须能成功地把消息发到服务器上。虽然已经知道IP,但并无啥用(比如说,你在广东,你知道北京的地理坐标经纬度就能到北京了?你得知道有哪些路通往北京吧你得准备盘缠吧你得花时间吧)。

(3)为了将消息从你的PC上传到服务器上,需要用到IP协议、ARP协议和OSPF协议。

我们都知道,你的PC和百度服务器之间一般会有许多路由器之类的东西,IP协议指定了出发地(你的PC)和目的地(服务器);你的数据会经过一个又一个路由器,OSPF决定了会经过那些路由器(用一种叫路由算法的玩意,找出最佳路径);从一个路由器怎么传给下一个路由器?这是ARP协议的JOB,ARP负责求下一个节点的地址(我们不止是要目的地,还要中间节点的地址)。
IP协议使用的是IP地址,整个发送过程中只涉及出发地和目的地2个IP地址,而ARP协议使用的是MAC地址,整个发送过程中涉及到每一个节点的MAP地址

(4)现在,我们能和服务器通信,还建立了TCP连接,下一步干嘛,当然是用HTTP协议请求网页内容。

你发个HTTP请求报文给服务器,如果服务器禁止你访问它就给你回个"Forbidden",如果它暂时挂掉了就给你回个“内部服务错误”,如果它正常才给你回个“OK“并将你要的数据传给你;如果你还需要其它的东西再去跟它要(它一般还会给你的-_-)。

(5)你收到了服务器的回复,是一坨HTML形式的文本。浏览器必须要能够理解文本的内容,并快速地渲染到屏幕上(浏览器一般用有限自动机来理解文本内容,渲染的话就各看本事了,之所以微软IE卡成狗而谷歌浏览器很6,就是它们的渲染速度不同...)

渲染出来后,你就看到百度的首页了

原文地址:https://www.cnblogs.com/mini-coconut/p/9275839.html

时间: 2024-08-29 13:34:11

当你在浏览器输入网址后,回车后发生了什么的相关文章

在浏览器输入网址,Enter之后发生了什么?

启动浏览器,在地址栏输入我们将要访问的网页,然后按一下回车,OK,成功进入! 在我们回车之后,发生了什么事情?为什么我们会访问到期待的网页,我们究竟访问了谁?如何访问到他的? 我简单的向大家介绍一下,并不深入讲解,只能算作小白科普,不过这个科普还是很有必要的,它不仅能让我们认识到计算机之间是如何沟通的,也能让我们知道很多网络危机.故障是大致怎样产生的,以后遇到问题也好有一个切入点. 你的名字叫什么? 启动浏览器是浏览网页的第一步,毕竟是世界之窗嘛,然后我们在地址栏中输入一个网址,比如百度(www

在浏览器输入网址,Enter之后发生的事情

在浏览器输入网址,Enter之后发生的事情: 1. 浏览器接收域名 2. 发送域名给DNS,中文名字是域名系统服务器,一般位于ISP(互联网服务提供商,比如我们熟知的联通.移动.电信等) 中.浏览器会首先发给离自己最近的DNS,DNS收到浏览器发来的域名,在自己的数据库和缓存中查找这个域名所对应的IP,如果没有他会询问其他的DNS,递归下去直到弄清楚IP.最后把结果返回给浏览器. 3. DNS返回域名所对应的IP地址 4. 浏览器向因特网中发出请求 5. 路由器依据IP地址,把包裹送达IP所对应

在浏览器输入网址到页面加载完毕中间到底发生了什么?(Browser-->Server)

最近在学习韩老师的php视频,中间有讲到发送请求到服务器返回内容,以前对这个理解并不深刻,虽然以前也知道一部分,这次听了之后收获良多:所以我就画了个流程图,从浏览器输入网址到服务器返回信息,浏览器渲染,呈现页面的具体过程. 今天是国庆节,明天才会出去玩,所以今天还是得学习,学习根本不能停啊,哈哈! 中间有错误的欢迎各位,不吝赐教,谢谢! 下面这个是韩老师画的图,内容也比较相似,所以我也放在上面,以便以后回顾: 其中有涉及到,http的状态码,我这个好多也确实记不住,所以为了以后需要的时候来看,我

Jupyter Notebook启动不会自动打开浏览器,每次都要自己打开浏览器输入网址

今天在使用jupyter 时,已启动服务,但每次都需要手动去浏览器 输入网址才可以, 最好找了好久才解决了. 去cmd 命令窗口执行jupyter notebook --generate-config  可以找到  Jupyter_notebook_config.py文件 在文件中 找到 #c.NotebookApp.notebook_dir = '' 注意这里的谷歌路径是自己安装的谷歌路径,路径必须时双” \\ “否则报错 这样就成功的解决了这个问题 原文地址:https://www.cnbl

tomcat修改默认主页, 前段项目放到tomcat下,浏览器输入ip加端口后,直接到项目主页

1,将 项目 放到 tomcat 的webapps 文件夹下 2, 修改conf 下的 server.xml , 找到 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 在 Host 标签 下加入 <Context docBase="project/myProject" path=&q

地址栏输入url按回车之后发生了什么

地址栏输入url按回车之后发生了什么? 1.我们在浏览器中输入网址 2.浏览器到DNS查找域名对应的IP地址 3. 浏览器打开TCP连接(默认端口为80),向该IP的服务器发送一条HTTP请求,如果浏览器存储了该域名下的cookie,那么cookie也会放入http请求中 4. 服务器给浏览器进行一个301永久重定向响应.5. 浏览器根据重定向地址再次进行HTTP请求. 6. 服务器分析HTTP请求,生成HTTP响应,将响应发给客户端. 7. 浏览器收到响应内容之后,生成主页框架,同时向服务端继

浏览器输入网址回车发生的事情?--

 输入网址回车 执行的过程. 1.DNS解析 域名解析2.找到相对应的服务器3.TCP三次握手4.找到相对应的资源库5.返回相对应的页面并进行页面解析6.解析完毕后,返回客户端 原文地址:https://www.cnblogs.com/yuanjili666/p/11376861.html

浏览器输入网址到浏览器渲染页面的过程

1) 在客户端浏览器中输入网址URL. 2) 发送到DNS(域名服务器)获得域名对应的WEB服务器的IP地址. 3) 客户端浏览器与WEB服务器建立TCP(传输控制协议)连接. 4) 客户端浏览器向对应IP地址的WEB服务器发送相应的HTTP或HTTPS请求. 5) WEB服务器响应请求,返回指定的URL数据或错误信息:如果设定重定向,则重定向到新的URL地址. 6) 客户端浏览器下载数据,解析HTML源文件,解析的过程中实现对页面的排版,解析完成后,在浏览器中显示基础的页面. 7) 分析页面中

HTTP-点开浏览器输入网址背后发生的那点事

前言 Internet最早来源于美国国防部ARPANet,1969年投入运行,到现在已有很长一段路了,各位想要了解发展史可以百度下,这里就不多说了. 现如今当我们想要获取一些资料,首先是打开某个浏览器,在地址栏输入地址,想要的信息出现在你的面前. 大家有没有想过输入地址就能返回给你想要的信息是怎么实现的呢? 下面就来简单说下它的实现流程,不过在这之前先来了解下HTTP基本概念如下 HTTP基本概念 在这引用http://www.zsythink.net/archives/76 这是一篇为初学者准

在浏览器输入网址到网页打开数据经过的过程

<1>客户端输入网址,请求与服务器的80端口建立连接. <2>服务器收到请求,并响应客户端: <3>客户端接收到服务器的响应,准备开始接收数据.服务器开始发送数据. (三次握手) 第1次握手:客户端通过将一个含有"同步序列号(SYN)"标志位的数据段发送给服务器 请求连接. 第2次握手:服务器用一个带有"确认应答(ACK)"和"同步序列号(SYN)"标志位的 数据段响应客户端. 第3次握手:客户端发送一个数据段