提到网址我们需要先了解一些概念:
计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统.
协议:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则被称为网络通信协议。
它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。
IP地址:要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号.也就是设备的标识.
IP地址主要分为IPv4和IPv6.
域名:即网域名称,是由一串用点分隔的字符组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
域名可以说是一个IP地址的代称,目的是为了便于记忆后者。例如,baidu.com是一个域名。人们可以直接访问baidu.com来代替IP地址,然后域名系统(DNS)就会将它转化成便于机器识别的IP地址。
这样,人们只需要记忆baidu.com这一串带有特殊含义的字符,而不需要记忆220.181.38.148这种没有含义的数字。
端口:网络的通信,本质上是两个应用程序的通信.每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序了.也就是应用程序的标识.
端口号的范围是:0~65535.
Internet 上的每一个网页都具有一个唯一的名称标识,通常称之为 URL(Uniform Resource Locator,统一资源定位器)。它是 www 的统一资源定位标志,简单地说 URL 就是 web 地址,俗称“网址”。
几个问题
- 我们敲的地址到底是啥?
网址
- 那网址是啥意思?
网址的解释
网址也叫 url,是用来表示一个网页的特定标示,有了个这个 url 就能获取到对应的资源。
url 的规则是比较简单的,就好比我们电脑上的文件目录,查看方式+哪台电脑(可能需要密码)+哪个目录+哪个文件+哪个片段,这种样子,但是有自己的定义方式,如下
protocol:[//[user:password@]host[:port]][/]path[?query][#fragment]
网址简化: 协议://主机域名:端口号/资源文件名?参数=值 (带方括号[]的为可选项)
完整的网址(url)中文版本: 协议://主机名(域名):端口号/路径/文件名?查询字符串#锚点
protocol(协议)
表示用何种方式获取资源,俗称协议,最常见的是 http、ftp 等,http 也是我们上网用的对多的协议类型。当然还有很多其他类型
- file 资源是本地计算机上的文件。格式 file:///,注意后边应是三个斜杠。
- ftp 通过 FTP 访问资源。格式 FTP://
- gopher 通过 Gopher 协议访问该资源。
- http 通过 HTTP 访问该资源。 格式 HTTP://
- https 通过安全的 HTTPS 访问该资源。 格式 HTTPS://
- mailto 资源为电子邮件地址,通过 SMTP 访问。 格式 mailto:
- MMS 通过支持 MMS(流媒体)协议的播放该资源。(代表软件:Windows Media Player)格式 MMS://
- ed2k 通过 支持 ed2k(专用下载链接)协议的 P2P 软件访问该资源。(代表软件:电驴)格式 ed2k://
- Flashget 通过支持 Flashget:(专用下载链接)协议的 P2P 软件访问该资源。(代表软件:快车) 格式 Flashget://
- thunder 通过支持 thunder(专用下载链接)协议的 P2P 软件访问该资源。(代表软件:迅雷) 格式 thunder://
- news 通过 NNTP 访问该资源。
host(主机名)
表示要访问哪个电脑(服务器),也表示哪个网站,有时候一些网站不是随便访问的就需要再前面加个用户名密码才能获取到资源
// 不需要密码
http://www.baidu.com
// 需要密码
http://mosnchina:123456@www.baidu.com
网站一级域名和二级域名
几级域名就是看域名后面有几个以"."分隔的后缀。
例如:”fuyeor.com“有一个以"."分隔的后缀,就是一个一级域名。其中 com 是顶级域名,或者叫做根域名、域名后缀。
二级域名就是寄存在主域名之下的域名,是裸域名往左一级的域名。一般来说,二级域名就是 类似 3个w(www)这样的格式。
例如:”www.fuyeor.com“有两个以"."分隔的后缀,就是一个二级域名。
因为 IP 地址是枯燥的长长一大串数字,为了让人容易记住,网站就有了域名,比如:“二级域名.fuyeor.根域名”或者直接是没有二级域的”fuyeor.根域名“。
其中,“二级域名.fuyeor.根域名”里 fuyeor 就是域名的主体;而根域名就是 com、net、cn 这些后缀。
port(端口号)
端口就是这个电脑的门在哪里,每个电脑有很多通往外面的门,不同的端口提供的内容是不一样的,我们需要通过正确的门进去才能看到我们想要的东西。
一般情况下协议和端口是匹配关系,但是也有不按常规来做的,一般 http 协议默认是 80 端口,https 协议默认是 443 端口,这时候端口号就可以省略不写,如果不是默认关系就需要明确表写上去。
端口都是正整数。
// 表示我要用http协议访问百度网站的80这个门
http://www.baidu.com
//表示我要用http协议访问百度网站的8080这个门
http://www.baidu.com:8080
端口这里就不详细讲解了,除了默认的端口意外,一般我们如果自己定义提供服务的端口范围是从 1024 到 65535,叫动态端口,低于这个数字一般是操作系统自己用的,不要瞎配,下面列举一些常见端口
- 21:FTP 服务所开放的端口,用于上传、下载文件。
- 22:SSH 端口,用于通过命令行模式远程连接 Linux 服务器或 vps。
- 25:SMTP 服务所开放的端口,用于发送邮件。
- 80:HTTP 用于 HTTP 服务提供访问功能,例如,IIS、Apache、Nginx 等服务。您可以参阅、检查、TCP 80 端口是否正常工作,排查 80 端口故障。
- 110:POP3 用于 POP3 协议,POP3 是电子邮件收发的协议。
- 143:IMAP 用于 IMAP(Internet Message Access Protocol)协议,IMAP 是用于电子邮件的接收的协议。
- 443:HTTPS 用于 HTTPS 服务提供访问功能。HTTPS 是一种能提供加密和通过安全端口传输的一种协议。
- 1433:SQL Server SQL Server 的 TCP 端口,用于供 SQL Server 对外提供服务。
- 1521:Oracle 通信端口,服务器上部署了 Oracle SQL 需要放行的端口。
- 3306:MySQL 数据库对外提供服务的端口。 3389:Windows Server Remote Desktop Services Windows Server Remote Desktop Services(远程
path(路径)
这就好比我们电脑上看某个目录文件一样,c:\work\docs(window 电脑,mac 不一样哦),可以通过这个路径查看到想要的资源,网址的路径格式是固定的,必须由零或多个“/”符号隔开的字符串
// 表示我要访问百度的search资源
http://www.baidu.com/search
// 表示我要用http协议访问百度网站的article目录下details中的123832579这个资源
http://www.baidu.com/article/details/123832579
一般我们电脑上文件都有个后缀,比如.doc、.jpg、.xls 等,其实网上的资源也有,所有的资源返回其实都是.html,有人说我看到有.php、.do 等,那其实是对应的提供服务的程序所需要的约定后缀,但是实际上返回的还是 html 性质的内容
query(查询、参数)
就好比我们有个超级大的文件集合,你想看,直接看根本打不开,或者说你没权限看全部内容,那怎么办呢?
我们就可以用 query 来查看我们可以的部分内容,比如我要看第 10 章节
http://www.baidu.com/article/details/123832579?section=10
一个网站可以使用的 query 条件是既定的,就是说提供服务的人设定,不可以随便写,所以 query 也可以叫查询条件。一般情况下一个纯静态(写死的文件)是无法提供这种能力的,这种能力是由动态网页(如使用 CGI、ISAPI、PHP/JSP/ASP/http://ASP.NET 等技术制作的网页)提供的。
query 也是由格式要求的,可有多个条件,用“&”符号隔开,每个条件的名和值用“=”符号隔开。
http://www.baidu.com/article/details/123832579?section=10
http://www.baidu.com/article/details/123832579?section=10&keyword=abc
http://www.baidu.com/article/details/123832579?section=10&keyword=%E6%B5%8B%E8%AF%95
大家对最后一个会感觉很奇怪,这最后怎么乱了,这又是另外一个约定叫 URL 编码,是因为 URL 中的某些字符会引起歧义,比如若 URL 查询条件中包含”&”或者”%”就会造成服务器解析错误,再比如,URL 的编码格式采用的是 ASCII 码而非 Unicode,这表明 URL 中不允许包含任何非 ASCII 字符(比如中文),否则就会造成 URL 解析错误。具体看文章就不讲了
- 网络传输中的那些编码之-URL 编码
- URL 编码是什么?
fragment(信息片断)
这个比较特殊,它不是请求资源用的,它其实是浏览器的功能,用来定位资源某个片段的,比如我要请求一篇文章,但是呢,我想直接看第 3 章节,怎么办呢?
http://www.baidu.com/article/details/123832579#3
当我们在资源内容里面第 3 章节的开头打个标记 ID 为 3 的时候,浏览器打开页面就直接定位到这个地方,比较快捷方便。
到现代开发来说又开发出更多的使用方式,比如路由啥的,但是有一点一定要记住,有这个内容的情况下,在页面中一定不能有对应的标记信息,否则页面就自己滚动对应的地方了。
特殊说明:
- 和 query 不同,query 是会带到服务器的,而 fragment 只有浏览器知道;
- fragment 的改变不会触发浏览器刷新页面,但是会生成浏览历史;
- fragment 会被浏览器根据文件媒体类型(MIME type)进行对应的处理;
- 部分搜索引擎会忽略#及其后面的字符串。
网址的案例分析
http://www.baidu.com:80/word?fr=num11&lm=0&od=0#top
- http(协议:protocol)
- http://www.baidu.com(主机名,也称域名)
- 80(端口:port)
- /word(路径:path)
- ?fr=num11&lm=0&od=0(参数:query)
- top(信息片断:fragment,在单页面时代又叫路由)