前言:本文中不会牵扯太深的原理内容,只会让你了解一下大概流程,待你以后真正开始学习相关知识的时候,不至于一头雾水。如果你是一个初学者,那么本文会对你有启蒙作用,如果你是一个希望深入了解原理的阅读者,那么可能本文不适合你。
一.我输入了一个网址www.baidu.com
当你输入网址的时候浏览器并不认识这一段信息。那么把你输入的地址,解析成浏览器识别的地址的这一过程就叫做DNS解析。D:domain 领域 ,N:name ,S:system 域名系统 如果你开始了解到这一步的话,我相信你对于 对象这个概念应该很熟悉了。这个系统对于初学者来说,你也可以把它当作一个对象来看待。也是key域名
和value实际ip地址
的映射关系。
DNS {"www.baidlu"="1xx.x.x.x","localhost"="126.0.0.1"...}
这个对象存放着互联网所有的 域名和实际IP地址的映射关系。为什么要有域名就好比你手机为什么要有通讯录一样,你可以直接把所有电话号码都记下,但是没必要也不方便,比如你给10086起名为女朋友,因为只有10086才会在节假日给你祝福。你也可以直接通过女朋友这个联系人来给10086打电话。DNS系统存在的意义也是这样的。
二.TCP的三次握手
传输控制协议(英语:Transmission Control Protocol 你需要首先明白的一点是DNS解析以后仅靠拿到手的真实ip地址是干不了任何事的。
第一次握手:首先浏览器会发送一个SYN包给服务器,SYN的解释节选自百度百科,你暂时不需要深入了解这个名词到底什么意思。它是用来确定服务器是否在吗
(脑子第一时间想出来这个词,并且觉得还行!)这是否像极了你追你女朋友时第一次聊天,第一句话“在吗?”。
第二次握手 :然后如果服务器在!
那么服务器会发送 SYN和ACK包给浏览器。也就是你女朋友回复你了,然后你们才可以有下一步的话题。 ACK代表的意思更像聊天里的:我在!请你继续说
第三次握手 :这次握手是浏览器给服务端说的话,浏览器端:ok我也在。
到这里你仅仅只是用到了 baidu.com
你输入到地址栏里的这几个代码。
到这里你要知道,浏览器是所求数据的那一方,浏览器是给予你数据的一方,你现在仅仅是知道了,你所求服务器的真实地址(DNS)和建立连接并且确定建立链接成功(三次握手)。接下来才是我们的重量级前面代码http
的showtime。
http:hyper text transfer protocol超文本传输协议。
它的主要作用就是用来约定客户端和服务器端沟通的方式,来传输数据。你可以抽象的这样认为。A和B在进行一项交易,A说咱们都用中文交流,B说:咱都用英语交流。结果谁都不肯屈服谁,这生意没法做。这时候出来一个神秘组织规定,这项交易我们统一规定用法语交流,谁不遵守谁退出。所以你也没必要纠结为什么,http只是规定而已,它并没有具体的功能。
即然你是所求(request)的一方,那么你就会有你想要东西的具体内容。这个过程和你去超市买东西一样,你确定了超市的真实地址,并且确定了超市在营业期间。ok,接下来就是你确定自己具体要买哪些东西的时候了。http协议有四部分组成,请求行,请求头,空行,请求数据。(具体作用本文不讨论,请自行深入了解)当服务器收到你的请求后,会给你一个回应response。也有四部分组成,状态行,响应头部,空行,相应数据
接下来浏览器就会开始解析相应数据,html和css和js的文件。
至此,大概流程就是这些,这期间还有很多知识需要你深入了解。文本只是给你一个概念。