上一篇文章我写了url简介,这篇博客是对上篇博客的补充
什么是协议
在互联网中,协议就是定义计算机之间互相通信的约定,协议。有了协议,就可以实现不同设备之间的通信。
http是什么
http全称是hyper text transfer protocol 超级文本传输协议。是属于应用层的传输协议,它定义web浏览器与服务器之间的通信连接协议。
先从ip讲起
ip是什么?
ip是最底层的协议,它有两个作用
1、让计算机在互联网中有个定位,就类似一个门牌号,快递员(信息、报文等数据)可以通过门牌号(ip)来找到你。
2、定义数据报文的封装方式,进而实现和其他设备的交流
我们主要看第一条,在网络中,你起码拥有一个独特的ip地址,也就是说这个ip地址是你所独有的,通过这个ip地址可以找到你。
外网ip
ip地址分为内网和外网两种。
外网ip是通过宽带获取的。大家应该都办理过宽带,电信服务商给你家装宽带时,往往还会给一个猫(调制解压器),猫的功能是把电信的信号解析成你家路由器能识别的样子。当你家路由器接受到信号后,就获取到电信服务器分配给你的外网ip,这个ip就是你在互联网冲浪时的地址。
当你关闭路由器时再开启时,往往会重新获得新的ip地址。所以大多数人都没有固定的ip地址。
那假设你家有一个外网ip,但是你的手机跟电脑同时连接同一个ip,那么手机跟电脑的ip一样吗?
不一样,这就涉及到内网ip的概念。
内网ip
内网ip是路由器分配给家里所有设备的ip地址,所以,同属于一个内网的ip肯定也是不一样的。一般来说,这个内网ip的地址为:192.168.x.x
路由器也会给自己一个内网ip。
路由器是连接内网外网的桥梁
内网设备之间可以互相访问,外网设备之间也可以互相访问。但是外网不能直接访问你的内网,你的内网也不能直接访问外网。
这就用到路由器,又称网关。通过路由器,外网可以把内容推送到你的内网中,你的内网也可以访问外网的内容。
几个特殊的ip
127.0.0.1 表示自己
localhost 也表示自己,但是在hosts文件中,可以修改localhost。实际上localhost只是127.0.0.1的域名而已,你可以修改hosts文件中的localhost。
0.0.0.0 不表示任何设备
端口port
http的默认端口是8080,这个端口号代表的是服务号码。
举个栗子:
一家快餐店,里面有卖炒饭的,炒面的,你如果想获取到对应的服务,就要去对应的窗口。这里的窗口,就是端口,英文名为port。
https的默认端口事443,文件传输ftp是21端口。
域名和ping
域名实际上就是ip地址的对应,方便人们记忆。域名是由DNS服务器解析成ip地址,然后计算机会去找这个ip地址。
我们可以通过ping来获取到对应的ip地址,例如:
在终端ping出了百度服务器的ip地址。如果你记忆超群,你也可以直接输入39.156.69.79
一个域名可以对应好几个ip。
为什么要这样做呢?
我们知道很多互联网公司的流量都很大。假设我有一台web服务器,大家通过同一域名来访问我这台服务器,这就会因为高并发引起服务器超载。
那现在我有4台服务器,那么在外网中就有了4个ip,我用四台服务器同时对应一个域名(baidu.com),那么大家同时访问我的时候,我就可以用四台服务器分别做对应,来让负载均衡。
所以当你们看到我这篇博客时,ping出百度的地址不是我写的这个,不要惊讶,因为百度的服务器有很多,我们不一定连接的是同一个。
一个ip也可以有很多个域名
我们称之为 共享主机。
实际上,我们在浏览互联网上的各种网站,实际上就是浏览服务端的各种文件。
而对于大多数人的想法,输入域名实际上也是希望访问到对应的网站文件。
假设我现在一台服务器的ip为:192.168.1.1
我需要在这台服务器上开两个网站,分别是aiqiyi跟baidu,当我输入aiqiyi或baidu任一时,dns就知道我要访问的是192.168.1.1这台服务器,但是如何让服务器知道我想访问的就是对应的文件呢?
我可以在服务端中设置主机头,使用主机头绑定不同域名,这样服务器收到你的请求后就可以知道具体你要访问的是哪个网站了。
域名的分类
.com .io是一级域名
github.io 是二级域名
xxxxx.github.io是三级域名