type
status
date
slug
summary
tags
category
icon
password
HTTP 入门
protocol
协议,礼节,约定
网络和 IP
什么是 IP?
IP 全称 Internet Protocol (网络协议),没有 IP 我们就不能上网。
IP 主要约定了两件事情:
- 如何定位一台设备
只要你处在互联网中,你就至少拥有一个独特的 IP。
IP 分为内网和外网:
- 如何封装数据报文,以跟其他设备交流
如何获取外网 IP
- 从电信租用宽带
- 买一个路由器,然后用电脑和手机分别连接路由器广播出来的无线 WIFI
- 只要路由器连上电信的服务器,那么路由器就会有一个[外网 IP] ,比如[14.17.32.211]就是一个外网 IP。这就是你在互联网中的地址
- 如果你重启路由器,那么你很有可能被重新分配一个[外网 IP],也就是说路由器没有[固定的外网 IP]
- 但是有个问题,你的路由器的外网 IP 如果是 14.17.32.211, 那么你的手机和电脑 IP 又是什么呢? 答案是[内网 IP]
内网 IP
- 路由器会在你家里创建一个内网,内网中的设备使用内网 IP,一般来说这个内网 IP 的格式都是 http://192.168.xxx.xxx。
- 一般路由器会给自己分配一个好记的内网 IP,如 192.168.1.1
- 然后路由器会给每一个内网中的设备分配一个不同的内网 IP,如果电脑是 192.168.1.2,手机是 192.168.1.3,以此类推
路由器的功能
- 现在路由器有两个 IP, 一个外网 IP 和一个内网 IP
- 内网中的设备可以互相访问,但是不能直接访问外网
- 内网设备想要访问外网,就必须经过路由器中转
- 外网中的设备可以相互访问,但是无法访问你的内网
- 外网设备想要把内容送到内网,也必须通过路由器
- 也就是说内网和外网就像两个隔绝的空间,无法互通,唯一的联通点就是路由器
- 所有路由器有时候也被叫做[网关]
端口
一台机器可以提供很多服务, 每个服务一个号码,这个号码就叫端口号 port
几个特殊的 IP
- 127.0.0.1 表示自己
- localhost 通过 hosts 指定自己 ,可以通过 hosts 文件修改命名
- 0.0.0.0 不表示任何设备
端口 port
一个比喻
- 麦当劳提供两个窗口,一号快餐,二号咖啡
- 你去快餐窗口点咖啡会被拒绝,让你去另一个窗口
- 你去咖啡窗口点快餐结果一样
一台机器可以提供不同服务
- 要提供 HTTP 服务最好使用 80 端口
- 要提供 HTTPS 服务最好使用 443 端口
- 要提供 FTP 服务最好使用 21 端口
- 一共有 65535 个端口(基本够用)
如何知道应该用什么端口
端口的使用规则
- 0 到 1023(2 的 10 次方减 1)号端口是留给系统使用的
- 你只有拥有了管理员权限后,才能使用这 1024 个端口
- 其他端口可以给普通用户使用
- 比如 http-sever 默认使用 8080 端口
- 一个端口如果被占用,你就只能换一个端口
IP 和端口缺一不可
域名
域名实际上就是对 IP 的别称
知识点
- 一个域名可以对应不同 IP
- 这个叫做均衡负载,防止一台机器扛不住
- 一个 IP 可以对应不同域名
- 这个叫做共享主机,没钱的开发者会这么做
http://baidu.com 对应什么 IP
- ping http://baidu.com
http://qq.com 对应什么 IP
- ping http://qq.com
域名和 IP 是怎么对应起来的
通过 DNS(Domain Name System) ,电信在你免费购买 IP 时会为你免费提供 DNS
当你输入 http://baidu.com
过程:
- 你的浏览器会向电信/联通提供你的 DNS 服务器询问 http://baidu.com 对应什么 IP
- 电信/联通会回答一个 IP
- 然后浏览器才会向对应 IP 的 80/443 端口发送请求
- 请求内容是查看 http://baidu.com
为什么是 80 或 443 端口
- 服务器默认用 80 提供 http 服务
- 服务器默认用 443 提供 https 服务
- 你可以在开发者工具里面看到具体的端口
nslookup 命令
nslookup 命令用于查询 DNS 的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。
- nslookup www.xxx.com --查询 www.baidu.com的ip地址
- nslookup www.xxx.com 8.8.8.8 --指定 8.8.8.8 的域名服务器来查询 www.baidu.com的ip地址
- nslookup -qt=类型 www.xxx.com --指定类型查询
- nslookup –qt=类型 目标域名(注意qt必须小写)
注意
WWW
- www.xiedaimala.com 和 xiedaimala.com
- 是同一个域名吗? 不是
他们是什么关系
- com 是顶级域名
- http://xiedaimala.com 是二级域名(俗称一级域名)
- www.xiedaimala.com 是三级域名(俗称二级域名)
- 他们是父子关系
- http://github.io 把子域名 http://xxx.github.io 免费给你使用
- 所以你应该知道 www.xiedaimala.com 和 xiedaimala.com 可以不是同一家公司,也可以是同一家
- www 是多余的吗? 是的,非常多余
如何请求不同的页面
- 路径可以做到 , 使用不同的路径就可以得到不同的页面
- 工具 , 使用 Chrome 开发者工具 Network 面板看看区别
如何请求同一个页面,不同内容
- 查询参数可以做到
同一个内容, 不同位置
- 描点可以做到
注意:
- 锚点看起来有中文, 实际上不支持中文
- #参考书会变成 %E5%8F%82%E8%80%83%E4%B9%A6
- 锚点是无法在 Network 面板看到的
- 因为描点不会传给服务器
URL
Uniform Resource Locator 统一资源定位符
协议 + 域名号 + 端口号 + 路径 + 查询字符串 + 锚点
URL 举例
HTTP 协议
Hypertext Transfer Protocol
基于 TCP 和 IP 两个协议
curl 命令
用 curl 可以发 HTTP 请求
- curl -v http://baidu.com
- curl -s -v -- https://www.baidu.com
理解以下概念
- url 会被 curl 工具重写 , 先请求 DNS 获得 IP
- 先进行 TCP 连接,TCP 连接成功后, 开始发送 HTTP 请求
- 请求内容看一眼
- 响应内容看一眼
- 响应结束后, 关闭 TCP 连接(看不出来)
- 真正结束