浅析URL

URL(Uniform Resource Locator)即统一资源定位符,它是 WWW 的统一资源定位标志,就是指网络地址。这里需要和另外一个概念 URI(Uniform Resource Identifier)即统一资源标识符区分开,URI 是一个用于标识某一互联网资源名称的字符串,URL 是 URI 的子集。

url 的组成包括以下内容:

  • 协议(必须):常见的有 HTTP(Hyper Text Transfer Protocol)、HTTPS、FTP 等,

  • 域名/IP(必须):域名通过 DNS 被解析成 IP

    • 域名(Domain Name)
    • IP 即 IP 地址(Internet Protocol Address),
      • mac 查询内网 IP ifconfig en0,查询外网 IPcurl ifconfig.me
      • ping 用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断 TCP/IP 参数是否设置正确,以及运行是否正常、网络是否通畅等。用法ping xxx
      • 几个特殊的 IP
        • 127.0.0.1 表示自己
        • localhost 通过 hosts 指定为自己(mac 的 hosts 位于/etc/hosts,可通过修改该文件自定义 localhost 名称)
    • DNS (Domain Name System 域名系统),实现域名到 IP 的解析服务
      • 使用nslookup 域名可以手动进行 DNS 查询
    • 一个域名可以对应不同 IP(实现负载均衡);一个 IP 也可以对应不同域名(共享主机)
  • 端口(必须,如省略会使用默认端口)

    • 一共有 65535 个端口,0 到 1023(2 的十次方减 1)号端口是留给系统使用的,只有在有管理员权限的情况下才可以使用,其他端口普通用户能使用,比如 http-server 就默认使用 8080 端口,详见:TCP/UDP 端口列表 - 维基百科
    • HTTP 最好使用 80 端口
    • HTTPS 最好使用 443 端口
    • FTP 最好使用 21 端口
  • 路径(非必需)

    实现请求不同的页面

  • 查询参数(非必需)

    • 从“?”开始到“#”(或至结束)为止之间的部分为参数部分,又称搜索部分、查询部分。参数间用“&”作为分隔符。
  • 锚点(非必需)

    实现打开页面时滚动到该锚点位置。

    • 锚点看起来有中文,但是实际上不支持中文,
    • 锚点无法在 network 面板看到,因为锚点不会传给服务器也就是说 HTTP 请求中不包含锚部分

使用 curl 命令进行 HTTP 请求

  • curl -v http://baidu.com
  • curl -s -v https://www.baidu.com
  • curl 会重写 url,先请求 DNS 获取 IP
  • 过程:进行 TCP 连接,TCP 连接成功后,开始发 HTTP 请求,相应结束后,关闭 TCP 连接

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!