当你输入URL之后,发生了什么?

当你输入URL之后,发生了什么?

首先先说几个概念

  • http: 超文本传输协议。
  • TCP/IP协议: 网络通讯协议。

当我们在浏览器输入一个URL的时候,比如:「 www.weizongqi.com/a 」,按下回车,等待一小会就会呈现我的网站中的a页面出来。这是怎么来的呢?为什么这个地址可以找到我的网站呢?

URL

上述我说的URL它是一个地址,相当于每一个人的手机号,通过输入这个地址,那么我就可以找到我的网站「 www.weizongqi.com/a 」。这个URL分为三部分

  • http:也就是schema,这个是告知浏览器你将要用什么协议去访问URL。当然可以有其它schema,比如ftp、tel,还有就是之前做移动webapp的时候跳转到app的时候就是需要这个schema。
  • www.weizongqi.com 这就是我的网站地址
  • /a:资源路径。也就是说我的网站地址后面,只要跟着「 / 」的都是资源地址。

ok。那么我输入完这个地址后,我就要告诉浏览器,我要以http的协议去访问「 www.weizongqi.com 」下的「 /a 」资源。浏览器这时就屁颠屁颠的去找服务器地址了。

TCP/IP

这时候,我找到服务器了,但是服务器肯定不会随便给你外来人口进出啊,不然你把服务器的子民都给杀了,财富都抢了怎么办?那好吧,我要证明我是好人,你看我有http令牌。服务器的把关人士TCP/IP就说,那你等等,我先去验证下你的http是不是国际通用的http。那服务器要怎么验证这个http?这就要讲到TCP。

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。怎么说呢,就是TCP是一个全球都信赖的一个协议。而http是基于这一层协议来的。

好了,服务器说你的http协议正确了,回去告诉你们老大浏览器,可以把你想传给我的信息传过来了。这时候服务器TCP发了一条信息回去给浏览器,浏览器接受后,确定访问的没错,那我就可以把我想发的数据给他了(TCP第一次握手结束)但是要发什么数据呢?以什么杨的形式去发呢?以后我再发能不能快一点?

Request头

浏览器这会想了想,我有自己一份通用样式表,嘿嘿,剩下好多功夫:

  • Accept: 浏览器可接受的MIME类型,意思是你要传什么样的格式给服务器,比如:text/html、application/json等等
  • Accept-Charset: 浏览器可接受的字符集,如UTF-8、GBK等等
  • Accept-Language: 浏览器所希望的语言种类,咱们中国就是zh-CN
  • Connection: 默认为「 keep-Alive 」,支持长连接。
  • Cache-Control: 缓存
  • Cookie: Cookie
    等等

服务器处理

服务器接收到浏览器传过来的信息,就马上去找「 /a 」下资源,找到之后服务器就吧浏览器给它的信息都给 「 /a 」。然后处理完后就返回一个状态,还有一些数据给浏览器。

Response头

那「 /a 」给浏览器返回什么担心呢

  • content-type: 表示正文的类型
  • Connection: 默认为「 keep-Alive 」,支持长连接
  • Expires: 到期时间
  • Server: 服务名称
  • Cache-Control: 缓存

传输完之后TCP关闭链接。接下来浏览器接到数据后就要执行各种操作了

状态码

以上是我说的正常情况,这一情况状态码为200.但是还有其它状态码,我们一一了解他们。
状态码
300
400
500

以下是301和302区别 www.mamicode.com/info-detail-667266.html

缓存

https://www.cnblogs.com/chenqf/p/6386163.html

https://www.cnblogs.com/andy-zhou/p/5360107.html

TCP三次握手

blog.csdn.net/xulu_258/article/details/51146489

文章作者: 韦宗圻
文章链接: https://www.weizongqi.com/2017/05/10/%E5%BD%93%E4%BD%A0%E8%BE%93%E5%85%A5URL%E4%B9%8B%E5%90%8E%EF%BC%8C%E5%8F%91%E7%94%9F%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wiki
支付宝打赏
微信打赏