浏览器输入一个url的全过程,输入url后

  浏览器输入一个url的全过程,输入url后

  @[目录]

  Ip地址和mac地址就像出生地(身份证)和现居住地(门牌号)中的一个。因为mac地址是和电脑绑定的,不能更改,所以ip地址很容易更改。(一般来说:修改mac是指修改计算机中记录的现有注册表中的记录)

  1.输入地址URL

  当我们开始把网址输入浏览器时,浏览器其实已经通过智能匹配得到了网址。他会从历史、书签等地方找到输入字符串可能对应的网址,然后给出智能提示,让你补全网址。这些是直接从历史记录和缓存中获得的数据。

  2.浏览器查找域名的IP地址

  一旦启动,浏览器应该做的第一件事就是解析这个域名。一般来说,浏览器会先检查本地硬盘的hosts文件,看看有没有这个域名对应的规则。如果有,它将直接使用主机文件中的ip地址。如果在本地主机文件中找不到相应的ip地址,浏览器将向本地DNS服务器发送DNS请求。本地DNS服务器一般由您的网络接入服务器提供商提供,如中国电信和中国移动。您输入的URL的DNS请求到达本地DNS服务器后,本地DNS服务器将首先查询其缓存记录。如果缓存中有这条记录,可以直接返回结果。这个过程是递归的。如果没有,本地DNS服务器也会查询DNS根服务器。DNS服务器不记录具体域名和ip地址的对应关系,而是告诉本地DNS服务器,你可以去域服务器继续查询,给出域服务器的地址。这个过程是一个迭代的过程。本地DNS服务器继续向域服务器发出请求。在此示例中,请求的对象是。com域服务器。收到请求后。com域名服务器不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器你的域名的解析服务器的地址。之后,本地DNS服务器向域名解析服务器发送请求,然后它可以接收域名和IP地址之间的对应关系。本地DNS服务器不仅需要将IP地址返回给用户的电脑,还需要将这个对应关系存储在缓存中,以便下次其他用户查询时,可以直接返回结果,加快网络访问速度。

  下图更清楚的解释了这种状态:

  3.浏览器向web服务器发送一个HTTP请求(然后将其打包(如上图所示))

  浏览器在得到域名对应的IP地址后,会使用随机端口(1024端口65535)向服务器的WEB程序(常用的httpd、nginx等)的80端口发起TCP连接请求。).连接请求到达服务器后(局域网内除外),进入网卡,然后进入内核的TCP/IP协议栈(用于识别连接请求,解包,一层一层剥离)。也可能被Netfilter防火墙(属于内核的模块)过滤,最后到达WEB程序,最终建立TCP/IP连接。

  TCP连接如图所示:

  TCP连接建立后,会启动一个http请求。典型的http请求头一般需要包含请求方法,比如GET或POST等。并且不常用PUT和DELETE、head、OPTION和TRACE方法。通常,浏览器只能发起GET或POST请求。当客户端向服务器发起http请求时,会有一些请求信息,包含三部分:

  **1.请求方法URI协议/版本

  请求标题(请求标题)请求正文* *

  下面是一个HTTP请求的示例:

  GET/sample.jspHTTP/1.1

  接受:image/gif.image/jpeg,*/*

  接受-语言:中文-中文

  连接:保持活动状态

  主机:本地主机

  用户代理:Mozila/4.0(兼容;MSIE5.01Window NT5.0)

  接受编码:gzip,deflate

  用户名=金桥密码=1234

  注意:最后一个请求标题后面是一个空行。发送回车和换行符来通知服务器下面没有请求头了。

  请求的第一行是“方法URL协议/版本”:GET/sample.jsp HTTP/1.1 2。请求头请求头包含许多关于客户机环境和请求体的有用信息。例如,请求头可以声明浏览器使用的语言、请求体的长度等等。

  接受:image/gif.image/jpeg。*/*

  接受-语言:中文-中文

  连接:保持活动状态

  主机:本地主机

  用户代理:Mozila/4.0(兼容:MSIE5.01:Windows NT5.0)

  接受-编码:gzip,deflate。

  请求标题和请求正文之间有一个空行。这条线很重要。它表示请求头已经结束,然后是请求体。请求体可以包含客户提交的查询字符串信息:用户名=金桥密码=1234。

  这里需要扩展一下TCP(三次握手四波)的知识

  第一次握手:客户端A设置标志SYN为1,随机生成一个值为seq=J(J(J的取值范围为=1234567)的数据包给服务器。客户端A进入SYN_SENT状态,等待服务器B的确认;

  第二次握手:服务器B收到数据包后,通过标志位SYN=1知道客户端A请求建立连接。服务器B将标志位SYN和ACK都设置为1,ACK=J ^ 1,随机生成值seq=K,将数据包发送给客户端A确认连接请求。服务器B进入SYN_RCVD状态。

  三次握手:客户端A收到确认后,检查ack是否为J 1,ack是否为1。如果正确,它将标志位ACK设置为1,并将数据包发送到服务器B。服务器B检查ACK是否为K 1,ACK是否为1。如果正确,连接建立成功,客户端A和服务器B进入建立状态,完成三次握手。然后,客户端A和服务器B之间的数据传输可以开始。

  第一波:客户端发送FIN关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态。

  第二波:服务器收到FIN后,向客户端发送ACK,确认序列号为收到序列号1(同-SYN,一个FIN占用一个序列号),服务器进入CLOSE_WAIT状态。

  第三波:服务器发送FIN关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态。

  第四波:客户端收到FIN后,进入TIME_WAIT状态,然后向服务器发送ACK,确认序列号为收到序列号1,服务器进入关闭状态,完成四波。

  为什么建立连接是三次握手,关闭连接是四次握手?

  答:这是因为服务器在LISTEN状态下,收到连接请求的SYN消息后,把ACK和SYN放在一个消息中发送给客户端。关闭连接时,当接收到对方的FIN消息时,只表示对方已经不再发送数据但仍能接收数据,对方可能不会将所有数据都发送给对方,所以对方可以立即关闭,或者发送部分数据给对方后再发送FIN消息给对方,表示同意现在关闭连接。所以对方的ACK和FIN一般是分开发送的。

  4.服务器的永久重定向响应

  给服务器一个301永久重定向响应,这样浏览器将访问http://www.google.com/而不是http://google.com/.

  为什么服务器要重定向用户想看的网页内容而不是直接发送?原因之一和搜索引擎的排名有关。如果一个页面有两个地址,比如http://www.yy.com/和http://yy.com/,搜索引擎会认为它们是两个网站,导致每个搜索链接的减少,从而降低排名。而且搜索引擎知道301永久重定向是什么意思,所以会把有和没有www的地址放在同一个网站排名下。更有甚者,使用不同的地址会使缓存友好性变差。当一个页面有多个名称时,它可能会在缓存中出现多次。

  展开:

  1.301和302的区别?

  301和302状态码都表示重定向,这意味着浏览器在得到服务器返回的这个状态码后,会自动跳转到一个新的URL地址。这个地址可以从响应的Location头中获得(用户看到的效果是他输入的地址A瞬间变成了另一个地址B) 3354这是他们的共同点。

  它们之间的区别在于。31表示旧地址A的资源已经被永久移除(该资源不可访问),搜索引擎在抓取新内容的同时会将旧网址换成重定向的网址;

  02表示旧地址A的资源仍然可用(仍然可以访问)。这种重定向只是暂时从旧地址A跳转到地址B,搜索引擎会抓取新内容,保存旧网址。SEO302比301好

  2.重定向原因?

  调整网站(比如改变网页的目录结构);

  网页被移动到新地址;

  网页扩展更改(如果应用程序需要更改。php到。Html或者。shtml)。

  这种情况下,如果不做重定向,用户收藏夹或搜索引擎数据库中的旧地址只能让来访客户得到404页面错误信息,来访流量就白白流失了;再者,一些注册了多个域名的网站也需要将访问这些域名的用户自动重定向到主站点。

  3.什么时候跳301或者302?

  当一个网站或网页在24-48小时内临时迁移到一个新的位置,这时候就需要进行302跳转。使用301跳转的场景是之前的网站因为某种原因需要被移除,然后需要在新的地址访问,这个访问是永久的。

  明确一下:使用301跳转的大概场景如下:

  1.域名到期不想续费(或者找到了更适合网站的域名),想换个域名。

  2.没有www的域名出现在搜索引擎的搜索结果中,但是有www的域名不在其中。这时候你可以用301重定向告诉搜索引擎我们针对的是哪个域名。

  3.更改空间时,空间服务器不稳定。

  5.浏览器跟踪重定向地址。

  现在浏览器知道http://www.google.com/是要访问的正确地址,所以它将发送另一个http请求。

  6.服务器处理请求。

  经过前面的步骤,我们终于将http请求发送到了服务器。实际上,之前的重定向已经到达了服务器。那么,服务器如何处理我们的请求呢?

  后端在固定端口接收到TCP消息后,会对TCP连接进行处理,解析HTTP协议,并根据消息格式进一步封装成HTTP请求对象,供上层使用。

  一些比较大的网站会把你的请求发送到反向代理服务器,因为当网站访问量非常大,网站越来越慢的时候,一个服务器是不够的。于是同一个应用部署在多台服务器上,大量用户的请求被分发到多台机器上进行处理。

  此时,客户端并不是通过HTTP协议直接访问某个网站的应用服务器,而是先请求Nginx,然后Nginx请求应用服务器,再将结果返回给客户端,Nginx作为反向代理服务器。同时也带来了一个好处。如果其中一台服务器宕机,只要其他服务器运行正常,就不会影响用户的使用。(分布式)

  通过Nginx的反向代理,我们到达web服务器,服务器端脚本处理我们的请求,访问我们的数据库,获取需要的内容等。当然,这个过程涉及到后端脚本的许多复杂操作。由于我对这首曲子不太熟悉,所以我只能介绍这么多。

  7.服务器返回一个HTTP响应

  在前六个步骤之后,服务器接收到我们的请求并进行处理。在这一步,它将返回其处理结果,即HTPP响应。

  HTTP响应类似于HTTP请求。HTTP响应也由三部分组成,即:

  1.状态行

  2.响应标题(响应标题)

  3.回复文本

  HTTP/1.1 200没问题

  日期:2005年12月31日星期六格林威治时间23时59分59秒

  内容类型:文本/html;charset=ISO-8859-1

  内容长度:122

  

  

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: