统一资源定位符(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})/$’这样的正则表达式捕获年月日。