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.com和www.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+端口号+路径+查询字符串+锚点
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连接(看不出来),然后真正结束。