IP、端口、域名、URL

Tim Berners-Lee 发明了 WWW
WWW = URL + HTTP + HTML

IP

什么是 IP

Internet Protocol 主要约定了两件事:

  1. 如何定位一台设备
  2. 如何封装数据报文,以跟其他设备交流

IP 分为内网和外网

Difference between External and Local IP Addresses

几个特殊的 IP

  • 127.0.0.1 表示自己
  • localhost 通过 hosts 指定为自己
  • 0.0.0.0 不表示任何设备

    hosts 文件在哪?

    在 Windows 系统中,hosts 位于 C:\Windows\System32\drivers\etc\hosts 。

    在 macOS / Linux 系统中,hosts 位于 /etc/hosts

    可以给其他的 ip 起别名,方便访问。

端口

端口号

一台机器可以提供很多服务,每个服务一个号码,这个号码就叫端口号 port。

要提供 HTTP 服务最好使用 80 端口
要提供 HTTPS 服务最好使用 443 端口
要提供 FTP 服务最好使用 21 端口
一共有 65535 个端口(基本够用)

TCP/UDP 端口列表

端口使用的其他规则

  • 0 到 1023 号端口是留给系统使用的
  • 你只有拥有了管理员权限后,才能使用这 1024 个端口
  • 其他端口可以给普通用户使用
  • 比如 http-server 默认使用 8080 端口
  • 一个端口如果被占用,你就只能换一个端口

    hs -c -1 -p 53545利用 http-server 开启端口

域名

域名就是对 IP 的别称

baidu.com 对应什么 IP

ping baidu.com

知识点

  • 一个域名可以对应不同 IP

    这个叫做均衡负载,防止一台机器扛不住

  • 一个 IP 可以对应不同域名

    这个叫做共享主机,穷开发者会这么做

域名和 IP 是怎么对应起来的

通过 DNS。查看域名的 IP:

nslookup google.com

浏览器中输入 url 后发生了什么

Q: 为什么是 80 或 443 端口?
A: 服务器默认用 80 提供 http 服务,用 443 提供 https 服务。

题外话

www

Q: www.zhixiukang.comzhixiukang.com是同一个域名吗?

A: 不是 🙅‍♀️

他们是什么关系

  • com 是顶级域名
  • zhixiukang.com是二级域名
  • www.zhixiukang.com是三级域名
  • 他们是父子关系
  • github.io 把 xxx.github.io 免费给你使用
  • 所以你应该知道 www.zhixiukang.com 和 zhixiukang.com 可以不是同一家公司,也可以是
  • www 是多余的吗?是的,非常多余。

URL

就算没写,你也应该知道端口
HTTP 默认端口 443

URL = 协议 + 域名或 IP + 端口号 + 路径 + 查询字符串 + 锚点

curl 命令

用 curl 可以发 HTTP 请求

curl -v http://google.com
curl -s -v -- https://www.google.com
curl http://zhixiukang.com

理解以下概念

  • url 会被 curl 工具重写,先请求 DNS 获得 IP
  • 先进行 TCP 连接,TCP 连接成功后,开始发送 HTTP 请求
  • 请求内容看一眼
  • 相应内容看一眼
  • 响应结束后,关闭 TCP 连接(看不出来)
  • 真正结束

HTTP

  • 规定请求的格式是什么,响应的格式是什么
comments powered by Disqus