http请求

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的简要过程?

  1. 浏览器会向运营商提供的DNS服务器询问www.baidu.com对应什么ip;
  2. 运营商会回答(响应)一个IP;
  3. 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可追加内容,即可以分成多次写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值