IP、端口、域名、URL
Tim Berners-Lee 发明了 WWW
WWW = URL + HTTP + HTML
IP
什么是 IP
Internet Protocol 主要约定了两件事:
- 如何定位一台设备
- 如何封装数据报文,以跟其他设备交流
IP 分为内网和外网
几个特殊的 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 个端口(基本够用)
端口使用的其他规则
- 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
Q: 为什么是 80 或 443 端口?
A: 服务器默认用 80 提供 http 服务,用 443 提供 https 服务。
题外话
www
Q: www.zhixiukang.com
和zhixiukang.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
- 规定请求的格式是什么,响应的格式是什么