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

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

首先,当我们输入一个网址的时候,这个网址例如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来记录这个标示。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值