【HTTP全解】HTTP入门

98 阅读4分钟

网络和IP

  • IP:Internet Protocal。只要在互联网中,至少有一个IP。
  • IP的功能
    1. 如何定位一台设备。
    2. 如何封装数据报文,以跟其他设备交流。
  • 外网IP:只要路由器连上宽带供应商的服务器,路由器就会有一个外网IP,这就是用户在互联网中的地址。
  • 内网IP:路由器会给内网中的每一个设备分配一个不同的内网IP,IP格式一般为192.168.xxx.xxx。
  • 命令行ipconfig可以查看自己的网络配置。

路由器的功能

  • 路由器有两个IP,一个外网IP一个内网IP。
  • 内网中的设备可以相互访问,但是不能直接访问外网。
  • 内网设备想要访问外网,就必须经过路由器。
  • 外网中的设备可以相互访问,但是无法直接访问内网。
  • 外网设备想把内容送到内网,就必须经过路由器。
  • 外网和内网就像两个隔绝的空间,唯一的联通点就是路由器。
  • 因此,路由器有时也被称作“网关”。

特殊的IP

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

端口

  • 端口:port。一台服务器可以提供不同的服务,每个服务需要一个端口。
  • 要提供HTTP服务最好使用80端口。
  • 要提供HTTPS服务最好使用443端口。
  • 要提供FTP服务最好使用21端口
  • 一共有65535个端口(基本够用)。
  • TCP/UDP端口列表 维基百科
  • IP和端口缺一不可。

端口规则

  • 0~1023号端口是留给系统使用的,拥有管理员权限,才能使用这1024个端口(不推荐)。
  • 其他端口可以给普通用户使用。
  • http-server默认使用8080端口。
  • 一个端口如果被占,只能换一个端口。

域名

  • 域名:域名就是对IP的别称,是.com、.net、.org为结尾的字符串。
  • 百度的IP是什么?
    • ping baidu.com
  • 注意
    • 一个域名可以对应不同的IP。这种机制为负载均衡,方式一台机器的压力过大。
    • 一个IP可以对应不同的域名。这种机制为共享主机,为了节省成本。

DNS

  • 域名和IP通过DNS来对应起来。
  • 访问xiedaimala.com过程
    1. 浏览器会向宽带供应商提供的DNS服务器询问xiedaimala.com对应什么IP。
    2. 供应商会返回一个IP。
    3. 浏览器会根据对应IP的80/443端口发送请求。
    4. 请求内容是查看xiedaimala.com的首页。
  • 为什么是80或443端口?
    • 服务器默认用80提供http服务。
    • 服务器默认用443提供https服务。
    • 可以在开发者工具里看到具体端口。

如何请求不同的页面?

  • 通过域名+路径。
    • https://developer.mozilla.org/zh-CN/docs/Web/HTML
    • https://developer.mozilla.org/zh-CN/docs/Web/CSS
  • 注意
    • 路径是没有必要有后缀的。
    • 使用Chrome开发者工具Network可以查看区别。

如何请求同一个页面的不同内容?

  • 通过修改查询参数可以做到
    • www.baidu.com/s?wd=hi
    • www.baidu.com/s?wd=hello

如何请求同一个页面、同一个内容的不同位置?

  • 通过修改锚点可以做到。
    • https://developer.mozilla.org/zh-CN/docs/Web/HTML#初学者教程
    • https://developer.mozilla.org/zh-CN/docs/Web/HTML#相关主题
  • 注意
    • 锚点看起来有中文,实际上不支持中文,但会把中文转换成编码。
    • 锚点是无法在Network面板里看到的,因为它不会传给服务器。

URL

  • URL:uniform resource locator,统一资源定位服务。
  • 格式:协议+域名或IP+端口号+路径+查询字符串+锚点
  • Pasted image 20220622103831.png
    • HTTPS默认端口443。

curl命令

  • curl可以视为一个命令行浏览器,可以浏览网页,下载元素等。
  • 用curl命令可以发送HTTP请求。
    • curl -v http://www.baidu.com
    • curl -s -v http://www.baidu.com
  • 执行命令行curl -v http://www.baidu.com的过程
    1. Rebuilt URL to http://baidu.com/:重写URL,从访问域名变为访问域名下的根目录。
    2. Trying 220.181.38.148...:从DNS获得IP地址。
    3. TCP_NODELAY set:开始启动TCP连接。
    4. Connected to baidu.com (220.181.38.251) port 80 (#0):连接到百度IP的80端口。
    5. 请求内容
      GET / HTTP/1.1
      Host: www.baidu.com
      User-Agent: curl/7.79.1
      Accept: */*
      
    6. 响应内容。
    7. 响应结束后,关闭TCP连接(看不出来)。
    8. 真正结束。
  • HTTP
    • Hyper Text Transfer Protocoll,超文本传输协议。
    • 规定请求内容的格式是什么,响应内容的格式什么。

拓展

host文件

  • host文件在哪?
    • 在Windows系统中,hosts位于C:\Windows\System32\drivers\etc\hosts 。
    • 在macOS/Linux系统中,hosts位于/etc/hosts。
  • hosts文件中以#开头表示注释。
  • hosts中够可以添加一行127.0.0.1 frank让frank成为127.0.0.1的别称。
  • hosts一般需要管理员权限才能编辑。

WWW

  • www.xiedaima.com和xiedaima.com不是同一个域名。
  • com是顶级域名。
  • xiedaima.com是二级域名。
  • www.xiedaima.com是三级域名。
  • 三级域名之间为父子关系。
  • 有可能二级域名和三级域名不是同一个公司。

利用nslooup

  • nslookup:name server lookup。是一个网络管理命令行工具,可以利用nslookup查询域名的IP地址以及IP地址所对应的域名。
  • Pasted image 20220622113344.png

ping命令

  • 会发送一个回送信号请求给网络主机。一般用来测试网络连通。
    • Pasted image 20220622113540.png
  • 常用参数
    • -t:一直ping直到中断。例:ping -t baidu.com
    • -n count:指定回复次数,默认4。例:ping -n 2 baidu.com