host文件的作用?在哪里?
host文件就是没有拓展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。需要注意的是,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。
在windows系统中,host文件位于C:\Windows\System32\drivers\etc\hosts ;在macOS或者Linux中,host文件位于 /etc/hosts。
关于ip
IP,全称是Internet Protocal。主要约定了两件事情,第一,如何定位一台设备,第二,如何封装数据报文,以便跟其他设备进行交流.
IP分为内网IP和外网IP,查询外网IP的办法是,登录ip138.com。外网IP不是固定的,如果重启路由器就会重新分配一个新的外网IP。
内网IP:路由器会在你家里创建一个内网,内网中的设备使用内网IP,格式一般是192.168.xxx.xxx。
路由器的功能:路由器有两个IP,内网IP和外网IP。
内网中的设备可以相互访问,但不能直接访问外网,如果想访问,必须经过路由器中转;
外网中的设备可以相互访问,但无法访问你的内网,如果外网设备想把内容传输到内网,必须讲过路由器中转;
路由器是内网与外网中间的桥梁,因此也叫网关;
特殊的IP:
- 127.0.0.1表示自己
- localhost通过hosts指定为自己
- 0.0.0不表示任何设备
端口
端口,一台服务器可以提供很多服务,每个服务对应一个号码,这个号码就是端口。
端口的规则:
0~1023号端口是留给系统使用的,只有拥有了管理员权限,才能使用这个1024个端口
其他端口是给普通用户使用的,例如http-server默认使用8080端口
一个端口如果被占用了,就只能换一个端口。
ping命令
一般用于检测网络通与不通,也叫时延,其值越大,速度越慢。因特网包探索器,用于测试网络连接量的程序。 ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。 它是用来检查网络是否通畅或者网络连接速度的命令。
域名
域名,被我理解成网站的“家庭地址”,又被称为url。
负载均衡?
域名是通过DNS和IP联系起来,一个域名对应不同的IP,这个叫做负载均衡,防止一台机器扛不住。
输入www.baidu.com的简要过程?
- 浏览器会向运营商提供的DNS服务器询问www.baidu.com对应什么ip;
- 运营商会回答(响应)一个IP;
- Chrome会向对应IP的80/443端口发送请求,然后返回响应;
问题来了,为什么浏览器会选择80端口或者443端口?
- 浏览器默认用80端口提供http服务;
- 浏览器默认用443端口提供https服务;
url的组成
url=协议 + 域名或者IP + 端口号 + 路径 + 查询字符串 + 锚点
举例:
- 锚点不支持中文,锚点不会被传给服务器
- 所有http的路径都是以“/”开头的
- 域名中的“?”后面表示查询参数
curl
curl是常用的命令行工具,用来请求Web 服务器。 它的名字就是客户端(client)的URL 工具的意思。
比如,用curl命令发送http请求:
// -v的意思是显示更多
curl -v http://baidu.com
curl命令还可以下载图片,比如说,图片的地址是:https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0202%2F326d28e4j00qnvbqw0023c000hs00m7c.jpg&thumbnail=650x2147483647&quality=80&type=jpg
// 将该图片追加成名为1.jpg
curl https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0202%2F326d28e4j00qnvbqw0023c000hs00m7c.jpg&thumbnail=650x2147483647&quality=80&type=jpg > 1.jpg
curl可以完成Chrome浏览器的所有功能,除了显示可视化的界面。
http请求和响应
http请求
请求包括三部分,请求行、请求头、请求体。第一行被叫做请求行,请求体在GET请求中,一般是空的。
简单结构:
- 请求行
- 请求动词(get/post等) 路径+查询参数 协议名/版本
- 请求头
- HOST:域名或者IP
- Accept:text/html
- Content-Type:请求体的格式 回车
- 请求体
- 即上传的内容
http响应
响应包括三部分,状态行、响应头、响应体。
简单结构:
- 状态行
- 协议名/版本 状态码 状态字符串
- 响应头
- Content-type:响应体的格式
- 回车
- 响应体
- 响应体,就是下载的内容
curl与node.js收发请求
用curl发起请求:
curl -v http://localhost:8888
通过curl构造请求
- 设置请求动词
curl -v -X POST
// 注意大小写
- 设置路径和查询参数
// 直接在url后面加
curl -v -X POST http://localhost:8888/xxx
- 设置请求头
curl -H 'Name:Value'
// 或者
curl --header 'Name:Value'
- 设置请求体
curl -d '内容'
// 或者
curl --data '内容'
通过Node.js提取请求
- 读取请求动词
request.method
- 读取路径
// 路径带查询参数
request.url
// 纯路径,不带查询参数
path
// 只要查询参数
query
- 读取请求头
request.headers['Accept']
通过Node.js设置响应
- 设置响应状态码
response.statusCode=200
- 设置响应头
response.setHeader('Content-Type','text/html');
- 设置响应体
response.write('内容')
// write可追加内容,即可以分成多次写