我们在浏览器地址栏, 输入了 www.sina.com.cn , 网页就显示出来了.
那具体它为什么会显示出来的?
<b>我们先来一个简单版的解答</b>
- 输入网址, 回车后, 你的浏览器知道你要请求 www.sina.com.cn 这个网页, 于是便把你的这个请求, 按照约定的格式封装成一个数据包, 通过网络去告诉了远端的服务器.
- 服务器接收到了这个请求, 七转八折告诉了PHP, PHP根据请求的不同, 输出了不同内容, 再同样按照约定的格式封装成一个数据包, 通过网络给到了浏览器.
- 浏览器接收到这些内容, 解析出来, 网页就显示出来啦.
<b>嗯, 还有几个问题?</b>
问: 我输入了一个网址, 知道发到哪个服务器去?
答: 每一个域名, 都可以解析出来一个IP, 这个过程叫DNS解析. 在浏览器输入网址后, 其实浏览器先去DNS服务器问了这个域名的IP, 然后再发包. (IP就像门牌号, 可以定位到服务器)问: 我们经常说 Web服务要80端口, 是个什么东东?
答:
端口可以理解成家里的门. 两台机器通信, 需要互相打开一扇门, 然后通过门来传递信息.
服务器上有防火墙, 可以关掉所有门. 如果你的服务器提供 Web服务, 就打开80这扇门. 打开后, 浏览器发送数据到你服务器IP+这扇门(80端口), 才能完成正常通信.
当然, 80不是必须的, 你也可以在服务器开启81, 82, 8080等端口来提供Web服务.
这个时候你输入的网址就必须是 xxx.com:81 yyy:com:82 zzz.com:8080 才能正常访问.
如果是80就不必加后面的[:端口]的部分啦, 当然加上也没问题. 对于浏览器而言 xxx.com:80 等于 xxx.com
> 聪明的菜菜有木有发现, 服务器开了一扇门: 80端口, 为了通信, 浏览器所在的机器是不是也应该开一扇门才能互相传递信息呀.
其实浏览器已经偷偷开了, 他开了一个1024-65534的随机端口来通信.
关于这部分的网络通信, 说来话长, 总之先有这样一个概念在就好啦.