在浏览器输入一个网址,按回车之后发生了什么?

Posted 骨灵冷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在浏览器输入一个网址,按回车之后发生了什么?相关的知识,希望对你有一定的参考价值。

这个问题涉及到浏览器、网络、服务器三者之间的一系列行为,希望能为大家阐述下自己的理解:

首先,当我们输入一个网址的时候,这个网址例如www.baidu.com,我们需要知道这个网址其实是一个主机名,需要通过映射关系根据主机名获取IP地址。这个映射关系可以称为DNS。

有哪些方法途径可以获取IP地址呢?第一个是我们的浏览器。浏览器会将我们近一段时间访问的主机名及对应的IP地址进行缓存,缓存时间与浏览器有关,在该缓存时间内,我们输入同样的主机名就可以快速从浏览器缓存区获取IP地址并建立连接。第二是我们的Host文件。当浏览器的缓存不存在我们想要的IP地址时,系统会查找C盘下的一个system32内的Host文件,该文件会记录我们常用的主机名及IP地址对应关系。第三是路由上的DNS缓存,路由器会缓存主机名及IP地址对应关系。第四最后则是查找为我们提供网络服务的服务商的DNS服务器,如电信、联通网络服务商等。一系列的方法为完成的目的只有一个,根据主机名获取IP地址。


接下来,当完成了IP地址获取之后会干嘛呢?这里需要做的就是建立TCP连接,其实就是三次握手,具体三次握手是干嘛,无非就是SYN,ACK,ESTABLISHED。每次响应报文码都会加1,而报文码的产生和系统有关,小编记得好像是从0开始,每0.5s增加6400.具体过程可以参考我的其他文章。


完成了三次握手之后就是发送HTTP请求,请求的方式是GET和POST两种。GET请求是从服务器获取数据,然后讲其加到?之后作为参数返回给服务器来获取数据,而POST请求则是讲请求内容加到请求体中,并经过编码压缩交给服务器。通常GET请求可以用于获取轻量级的数据,而POST请求的内容数据量比较庞大些。关于请求和响应的状态码,如200、301、302、304、404等具体含义小编会写一篇文章来阐述。总之,浏览器和服务器之间通过GET和POST完成数据的请求和响应,最终一系列的数据会根据请求头的内容来返回,如指定的文件格式、压缩方式等。

这里需要提及一点的就是,由于服务器上的带宽限制,有时候在进行数据获取与返回的时候,需要使用缓存、预取、并行、压缩等方式来进行,有利于大大提高数据获取的效率。

当数据完成请求到返回的过程之后,根据Keep-alive属性可以选择是否断开连接,HTTP/1.1一般支持同一个TCP多个请求,而不是1.0版本下的完成一次请求就发生断开。TCP的断开与连接不一样,断开可以分为主动关闭和被动关闭,可以经过4次握手。

在网络访问中,还有一点就是需要明白session和cookies的区别。在网络访问过程中,服务端和客户端都保持各自的状态,session用来记录服务端的状态,而建立连接时每个服务端需要和客户端保持通信,并且获得客户端的状态,于是,服务端将自身记录的客户端状态通过一个标识符来返回给客户端,客户端上就使用cookies来记录这个标示。

以上是关于在浏览器输入一个网址,按回车之后发生了什么?的主要内容,如果未能解决你的问题,请参考以下文章

浏览器输入网址后,按回车会发生什么

输入网址按回车发生什么权威版

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

在浏览器中输入url回车之后会发生什么

在浏览器中输入url回车之后会发生什么

[原文 + 补充] 当你在浏览器中输入Google.com并且按下回车之后发生了什么?