一、IP
IP 即 Internet Protocol(互联网协议),没有 IP 就不能上网
1. 作用
主要约定了两件事
- 如何定位一台设备
- 如何封装数据报文,以跟其他设备交流
2. 分类
- 外网 IP(公网 IP)
- 路由器连接上电信的服务器后,就会拥有一个外网 IP(公网 IP) ,如 “14.17.32.211”,即我们在互联网中的地址,也就是说,无论是网口连接还是 wifi 连接,只要使用的是同一个路由器广播的网络,任何设备的外网 IP 都是一样的
- 每次重启路由器,很有可能被重新分配一个外网 IP,说明路由器本身并没有固定的 外网IP(可以通过花钱拥有固定的外网 IP)
- 内网 IP(局域网 IP)
- 路由器会在家中创建一个内网,内网中的设备使用内网 IP,一般来说内网 IP 的格式都是 192.168.xxx.xxx
- 一般路由器会给自己分配一个好记的内网 IP,如 192.168.31.1
- 路由器同时也会给每一个内网中设备分配一个不同的内网 IP,如电脑是 192.168.1.2,手机是 192.168.1.3,以此类推
- 路由器所分配的内网 IP 默认是动态可变的,因而有静态 IP 和 动态 IP 两种
- 动态 IP。通过DHCP服务(负责为内网中没有 IP 地址的计算机分配一个 IP 地址)拿到的 IP 地址通常就是动态的。路由器重启之类的就有可能会重新分配 内网 IP 地址。另外,比如获得 192.168.0.102 这个内网 IP 的电脑是动态获取此 IP 的,然后关机了,并且 DHCP 服务器已经释放这个 IP 到地址池中,那么这个 IP 就有可能分配给别的电脑
- 静态 IP。即通过设置固定 IP,无论路由器重启或其他可能导致 IP 地址重新分配的情况,该设备所使用的内网 IP 不受影响
3. 几个特殊的IP
- 127.0.0.1 表示自己
- localhost 通过 hosts 文件指定为自己
- 0.0.0.0 不表示任何设备
二、Port 端口
一台机器(服务器)可以提供很多服务,每个服务一个号码,这个号码就叫做端口号 port
1. 作用
- 类比
- 食堂提供若干窗口:1号快餐、2号拉面馆、3号奶茶店...
- 不同的窗口提供不同的专门菜品/服务
- 一台机器可以提供不同的服务
- 要提供 HTTP服务最好使用 80 端口(默认是80)
- 要提供 HTTPS (超文本传输安全协议)服务最好使用 443 端口(默认是443)
- 要提供 FTP 服务最好使用 21 端口
- 一共有 65535 个端口(基本够用)
2. 使用规则
- 0-1023(2的10次方-1)号端口是留给系统用的
- 只有拥有了管理员权限后,才能拥有这 1024 个端口
- 其他端口可以给普通用户使用,比如 http-server 默认使用 8080 端口
- 如果一个端口被占用,只能换一个端口
- 可以在开发者工具里 Network 中查看请求时的具体端口
三、Domain 域名
域名就是 IP地址 的别称
1. Ping 命令的使用
向特定的目的主机(如百度官网所在主机)获取 IP 地址
λ ping baidu.com
正在 Ping baidu.com [39.156.69.79] 具有 32 字节的数据:
来自 39.156.69.79 的回复: 字节=32 时间=61ms TTL=50
来自 39.156.69.79 的回复: 字节=32 时间=59ms TTL=50
来自 39.156.69.79 的回复: 字节=32 时间=53ms TTL=50
来自 39.156.69.79 的回复: 字节=32 时间=56ms TTL=50
39.156.69.79 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 53ms,最长 = 61ms,平均 = 57ms
2. 域名和 IP 的对应关系
- 一个域名可以对应不同的 IP
- 主要目的为负载均衡,防止一台机器扛不住,比如 不同地区的设备 ping baidu.com 会到不同的 IP 地址,主要为了分流,减轻服务器压力
- 一个 IP可以对应不同域名
- 这叫做共享主机,主要才财力不济的情况下才有可能使用
四、DNS 服务 (域名系统)
DNS(Domain Name Server/System) 是域名和 IP 对应的中间桥 是将域名和IP地址相互映射的一个分布式数据库
1. 具体过程
- Chrome 浏览器会向电信/联通提供的 DNS 服务器询问 xiedaimala.com 对应的 IP
- 电信/联通会回答一个 IP
- 然后 Chrome 才会向对应的 IP 的 43/443 端口发送请求
- 请求内容是查看该网址的首页
2. nslookup 命令的使用
查看某域名对应的所有主机 IP 地址
λ nslookup baidu.com
服务器: UnKnown
Address: 192.168.43.1
非权威应答:
名称: baidu.com
Addresses: 39.156.69.79
220.181.38.148
URL (统一资源定位符)
URL(Uniform Resource Locator) 即统一资源定位符
1. 公式
URL = 协议 + 域名IP + 端口号 + 路径 + 查询字符串 + 锚点
2. 案例
- 获取同一个页面,不同的内容
- 获取同一个内容,不同的位置
- 注意点
- 锚点看起来有中文,实际不支持中文, #参考书 会变成 #一串码文
- 锚点是在无法在 Network 面板中看到的,因为锚点不会传给服务器
3. crul 命令
- 用 curl 命令可以发送 HTTP 请求
curl -v http://baidu.com
curl -s -v --https://www.baidu.com
λ curl -v http://baidu.com
* Trying 39.156.69.79:80...
* TCP_NODELAY set
* Connected to baidu.com (39.156.69.79) port 80 (#0)
> GET / HTTP/1.1
> Host: baidu.com
> User-Agent: curl/7.65.3
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Sat, 20 Feb 2021 09:32:31 GMT
< Server: Apache
< Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
< ETag: "51-47cf7e6ee8400"
< Accept-Ranges: bytes
< Content-Length: 81
< Cache-Control: max-age=86400
< Expires: Sun, 21 Feb 2021 09:32:31 GMT
< Connection: Keep-Alive
< Content-Type: text/html
<
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
* Connection #0 to host baidu.com left intact