统一资源定位符(URL):
负责标识万维网上的各种文档,使每一文档在整个万维网的范围内有唯一的标识符URL。
URL的一般形式:<协议>://<主机>:<端口>/<路径>?<参数>
- 常见的<协议>有http、https、ftp等
- <主机>可以是主机域名或IP地址。(域名可通过域名解析得到主机IP)
- <端口>用于标识主机的应用进程
- <路径>应用进程通过<路径>找到需要访问的资源位置
- <参数>给该进程传递参数对资源进行相应的处理
域名解析:主机将所有请求的域名发送给本地域名服务器,由其解析出相应的IP返回给主机。由此主机可通过该IP将信息发送到网络上。
端口:端口号只具有本地意义,标志本计算机应用层中的各进程。
- 服务器端使用的端口号分为:熟知端口号(0~1023)和登记端口号(1024~49151)
熟知端口号:
应用程序 | FTP | TELNET | SMTP | DNS | HTTP | SNMP |
熟知端口号 | 21 | 23 | 25 | 53 | 80 | 161 |
- 客户端使用的端口号(临时端口号49152~65535):这类端口号仅在客户进程运行时系统自动分配,等通信结束则回收该端口号,可供其它客户进程使用。
套接字: IP地址+端口号,唯一的标识网络中一个主机和其上的一个进程
下面以京东的一个URL为例,解析<路径>和<参数>
这里我截取了部分参数。
这个链接用到的是https协议,域名为search.jd.com,端口默认为80端口号,定位到服务器的进程后,该进程找到Search文档,并对相应的参数做处理返回最终的页面。其中
- Keyword:表示搜索的关键字,这里的值是“笔”的转码。
- enc:表示编码格式
- psort:确定以综合、销量、价格…中的一种排列展示
- page:确定返回的页码。
读者可以试着修改相关参数的值看看效果
当然有些网站可以通过
<协议>://<域名>:<端口号>/<路径>/<参数值>/<参数值>/…/<参数值>/
这样的形式获得一些参数。
实现逻辑是,通过URL,服务器进程将能拿到端口号之后的内容构成一个字符串,然后对该字符串进行正则表达式的匹配。相关内容可以了解正则表达式的规则。
这里举个例子:
假设URL为:http://127.0.0.1:8000/article/2017/03/25/
那么服务器进程将可通过r’^articles/(?< year>[0-9]{4})/(?< month>[0-9]{2})/(?< day>[0-9]{2})/$’这样的正则表达式捕获年月日。