URL浅析

Get Started

• IP
• 端口
• 域名
• DNS
• URL

IP(Internet Protocol)

主要约定了两件事:
1、如何定位一台设备
2、如何封装数据报文,以跟其他设备交流

IP分为内网和外网

路由器会在家里创建一个内网,内网中的设备使用内网IP,也会给自己分配一个好几的内网IP。一般IP的格式都是192.168.xxx.xxx。
例如,在电信租用宽带,只要路由器脸上电信的服务器,那么路由器就会有一个[外网IP],比如[14.17.32.211]就是一个外网IP。这是这个路由器在互联网中的地址。
路由器的功能:内网中的设备可以互相访问,外网设备也可以互相访问。但是内网访问外网,外网发送内容到内网就需要通过路由器。所以路由器有时候也被叫做[网关]

几个特殊的IP

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

除了IP,还需要端口。

一台机器可以提供很多服务,一个服务一个号码,这个号码就叫端口号port。
要提供HTTP服务最好使用80端口
要提供HTTPS服务最好使用443端口
要提供FTP服务最好使用21端口
(一共有65535个端口)

https://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8#0.E5.88.B01023.E5.8F.B7.E7.AB.AF.E5.8F.A3
wiki百科里列举了所有的端口
端口的使用规则:
0-1023(1024个)号端口时留给系统使用的
只有拥有管理员权限后,才能使用着1024个端口
其他端口可以给普通用户使用
比如http-server默认使用8080端口
一个端口如果被占用,就只能换一个端口了

总而言之,IP和端口缺一不可。
因为IP是用来定位一个设备的,端口是用来定位一个设备的服务的。

ping命令

(1)用来检测网络的连通情况和分析网络速度;
(2)根据域名得到服务器IP;
(3)根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。

λ ping baidu.com

正在 Ping baidu.com [39.156.69.79] 具有 32 字节的数据:
来自 39.156.69.79 的回复: 字节=32 时间=950ms TTL=53
请求超时。
来自 39.156.69.79 的回复: 字节=32 时间=26ms TTL=53
来自 39.156.69.79 的回复: 字节=32 时间=28ms TTL=53

39.156.69.79 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 3,丢失 = 1 (25% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 26ms,最长 = 950ms,平均 = 334ms

nslookup命令

nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。

λ nslookup baidu.com
服务器:  promote.cache-dns.local
Address:  112.4.0.55

非权威应答:
名称:    baidu.com
Addresses:  39.156.69.79
          220.181.38.148

域名就是对IP的别称

• baidu.com
ping baidu.com
[39.156.69.79]
• 知识点
一个域名可以对应不同的IP,这叫做均衡负载,防止一台机器扛不住
一个IP也可以对应不同的域名,这叫做共享主机

把域名和IP联系起来的系统叫做DNS(Domain Name System)

当你输入baidu.com
Chrome浏览器会向所用网的运营商提供的DNS服务器询问,这个网址对应什么IP。然后它会回答一个IP,然后浏览器根据IP的80/443端口发送请求,请求内容是百度的首页。
为什么时80/443端口?
看前面端口的举例

网址

com时顶级域名
baidu.com是二级域名(俗称一级域名),是父
www.baidu.com 是三级域名(俗称二级域名),是子
是父子关系,但是xxx.comwww.xxx.com可以不是同一家公司,亦可以是。

如何请求不同的页面

修改同一网站的路径(可以使用Network面板看区别)
同一个页面,不同内容
查询参数:
www.baidu.com/s?wd=hi
www.baidu.com/s?wd=hello
/s?wd=xxx是查询
同一个内容,不同位置
输入网址时加入锚点
https://developer.mozilla.org/zh-CN/docs/Web/CSS#参考书
https://developer.mozilla.org/zh-CN/docs/Web/CSS#教程
注意:锚点看起来是中文,实际不支持中文,会将其转化为编码。
锚点是无法在Network面板看到的,因为锚点不会传给服务器。#和后面的东西在发送时是不会请求的,请求的是整个网页。

URL(Uniform Resource Locator,统一资源定位器)

协议+域名或IP+端口号+路径+查询字符串+锚点
image.png

2021年1月14日
19:10

HTTP协议(HyperText Transfer Protocol)
——基于TCP和IP两个协议

curl命令
用curl可以发送HTTP请求
curl 网址
返回网页源码
curl -v 网址(--verbose)
-v 参数可以显示一次 http 通信的整个过程,包括端口连接和 http request 头信息。

λ 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: Fri, 15 Jan 2021 14:25:23 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: Sat, 16 Jan 2021 14:25:23 GMT
< Connection: Keep-Alive
< Content-Type: text/html
<
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
(这个meta的意思是这个域名被弃用了,重新访问www.baidu .com)
</html>
* Connection #0 to host baidu.com left intact

curl -s -v -- https://www.baidu.com则是将网页都发送过来
url会被curl工具重写,先请求DNS获得IP。进行TCP连接,成功后开始发送HTTP请求。
看一眼请求内容和相应内容,响应结束后,关闭TCP连接(看不出来),然后真正结束。

推荐阅读更多精彩内容

  • 内容提要: URL 包含哪几部分,每部分分别有什么作用 DNS 的作用是什么,nslookup 命令怎么用 IP ...
    饥人谷_JoelXu阅读 51评论 0 0
  • 1. url的组成 先举个具体的url的例子: url的组成包括以下几点: 协议 https:// 域名或IP加上...
    D_ing阅读 39评论 0 0
  • 1. url的组成 先举个具体的url的例子: url的组成包括以下几点: 协议 https:// 域名或IP加上...
    刘泽佳阅读 114评论 0 0
  • URL包含什么 协议+域名或IP+端口+路径+查询字符串+锚点 协议:HTTP或其他 IP IP:Internet...
    csy没有昵称阅读 174评论 3 2
  • URL是什么 定义 统一资源定位系统(uniform resource locator):因特网的万维网服务程序上...
    Amber886阅读 3评论 0 0