平常我们只要打开电脑电源,进入操作系统,启动浏览器,输入网址,便能访问互联网。那么在这个过程中到底发生了什么事情呢。
打开浏览器输入网址后,网址通过DNS被解析成IP地址,浏览器发出一个HTTP请求(HTTP Request)(或者是HTTPS,这里先以最普通的HTTP请求为例),HTTP请求被转换成网络数据包,写上发源地IP和目的地IP并发送给网卡,由网卡转换成高低电平,通过网线发送数据到达外面路由器或者交换机,然后错综复杂的互联网上的交换机和路由根据网络数据包的目的地IP转发数据包到目的地,一般称作服务器,然后服务器的系统把数据包从网卡里拿出来发给正在Web容器内运行的网站应用(Web Application,简写 Web App ),网站应用从网络数据包中取出HTTP请求进行分析,并返回适当的网页内容包装成HTTP回应(HTTP Response),然后由系统包装成网络数据包,这时候发源地IP和目的地IP互换,网卡把网络数据包发送给外界互联网,网络数据包被互联网转发到原来发出请求的电脑上,由系统递交给浏览器并由浏览器分析出里面的内容,把内容呈现给用户。
这个过程能够用邮寄来类比。假设有A和B两个人,A希望得到B的一个杯子,于是A通过手写信,然后A把信封在信封里,写上发件人地址和收件人地址拿去邮局寄出,相当于浏览器创建一个HTTP请求,HTTP请求被转换成网络数据包,写上发源地IP和目的地IP并由网卡发送到互联网;信通过邮局的运输网络到达B的信箱,B打开信封并用眼看信纸,然后在自己的仓库里选择A需要的杯子并打包好,在包裹的收件人地址填上A的地址,发件人地址填上B的地址,然后到邮局寄出,相当于服务器得到了HTTP请求之后,分析并生成合适的内容包装成HTTP请求并通过互联网发送给用户。A收到包裹拆开并看见杯子,相当于浏览器分析数据包,从中提取出HTTP回应的内容并呈现给用户。
网站开发,就是通过开发Web App来利用Web容器对HTTP请求作符合需求的处理以及选取适当的内容写入到HTTP回应返回给发出HTTP请求的用户。
网友评论