URL = 协议+域名或IP+端口号+路径+查询字符串+锚点
注:本文不具体讨论计算机网络部分的细节,网络相关均为简化描述。
IP
IP是Internet Protocol(网际互连协议)的缩写。主要解决两件事:
- 如何定位一台设备
- 如何封装数据报文,以跟其他设备交流
IP的获取
IP分为内网IP与公网IP。
公网IP的获取
- 从电信租用宽带
- 使用路由器连接电信服务器,路由器便获得一个公网IP
- 重启路由器后,公网IP可能发生改变,因为可能并没有申请到固定的公网IP
- 可直接百度搜索IP获取自己的公网IP
内网IP的获取
- 路由器与接入路由器的网络的设备形成一个内网,内网中的设备使用内网IP,一般为192.168.xxx.xxx。
- 一般路由器会给自己分配一个比较特别的内网IP,如192.168.1.1
- 路由器会给每个内网设备分配一个内网IP。
路由器与内外网
此时路由器有两个IP,一个公网IP和一个内网IP。内网中的设备使用内网IP相互访问,访问外网时需要通过路由器中转,而外网中的设备通过公网IP相互访问,访问内网时需要通过路由器中转。路由器有时也被叫做网关。
几个特殊的IP
127.0.0.1为回送地址,指本地机
localhost通过hosts指定为自己
0.0.0.0不表示任何设备
端口port
一台机器可以通过端口提供不同服务,如:
- HTTP服务一般使用80端口
- HTTPS服务一般使用443端口
- FTP服务一般使用21端口
IP对应不同机器,而端口对应机器上的不同服务。
一共有65535个端口,其中0到1023号端口为系统使用的,需要管理员权限才能使用,普通用户可使用其他端口,如http-server使用8080端口。
域名
baidu.com、qq.com这些就是域名,其中com为顶级域名,org、cn等也是顶级域名,baidu.com为二级域名(俗称一级域名),www.baidu.com为三级域名(俗称二级域名),是否有www前缀对应的是不同的域名。
域名与IP的关系
可以在cmd中使用ping 域名的方式查看对应的IP。
两者存在映射关系,但不一定是一一对应,还存在以下情况:
- 一对多:负载均衡,大公司常用,减轻服务器压力
- 多对一:共享主机,即多个域名映射至同一个IP,合用服务器以减低资费。
域名与IP映射的实现
通过DNS(Domain Name System,域名系统)。 过程:
- 浏览器向运营商提供的DNS服务器询问baidu.com对应的IP
- DNS服务器应答
- 浏览器向该IP的80(HTTP)/443(HTTPS)端口发送请求 可使用nslookup命令来查看域名查询过程
路径
域名后接'/'表示根目录,’/1.html'表示根目录下的1.hmtl文件,其他以此类推。
查询参数
以使用get方式进行请求举例:
- www.baidu.com/s?wd=hi
- www.baidu.com/s?wd=hello
问号后的键值对即为查询参数,通过不同的查询参数实现在同一个页面展示不同内容。查询参数内部以
&连接。
锚点
developer.mozilla.org/zh-CN/docs/…
链接通过#指定锚点,锚点与HTML有关。以上链接打开后页面会自动调整至id='参考书'的元素处。
trap
- url本身不支持中文
- 浏览器并不会发送锚点信息给服务器