一、HTTP知识

HTTP(超文本传输协议),是一种实现客户端浏览器和网站服务器之间通信的请求响应协议,它是用作客户端和服务器之间的请求和响应。
客户端(浏览器)会向服务器提交HTTP请求;然后服务器向客户端返回响应;其中响应包含有关请求的状态信息以及内容信息(图片、音频、视频、超链接、文本等)
URI(Uniform Resource Identifier): 统一资源标识符
URL(uniform resource locator):统一资源定位符

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu
http://www.atmcn.com/index.php?a=shows&catid=285&id=123
URL地址格式:
协议://域名(主机名 / IP地址):端口/访问得路径文件?参数名=参数值&参数2=参数值
?向资源文件进行传参
& 向资源文件传递多个参数

二、DNS域名解析

2.1 简介

DNS(Domain Name System)服务提供域名到IP地址之间的解析服务。计算机既可以被赋予IP地址,也可以被赋予主机名和域名。

DNS的解析方向
正向解析:域名到IP地址
反向解析:IP地址到域名

2.域名系统的工作原理

接下来我们以访问百度(baidu.com)为例,对应下图进行解析:

步骤 交互双方 操作说明
1 客户端 → 本地DNS服务器 客户端发起递归查询请求(“帮我查到www.baidu.com的IP”),本地DNS是用户网络配置的首选DNS(如运营商DNS、8.8.8.8)。
2 本地DNS → 根DNS服务器 本地DNS发起迭代查询:“我不知道www.baidu.com的IP,根服务器你告诉我该问谁”。
3 根DNS → 本地DNS 根DNS返回“com顶级域DNS服务器的IP”(根服务器仅管理顶级域,如com、cn、org)。
4 本地DNS → com顶级域DNS 迭代查询:“请告诉我baidu.com的DNS服务器IP”。
5 com顶级域DNS → 本地DNS 返回“baidu.com权威DNS服务器的IP”。
6 本地DNS → baidu.com权威DNS 迭代查询:“请告诉我www.baidu.com的IP”。
7 baidu.com权威DNS → 本地DNS 返回www.baidu.com的真实IP地址(权威DNS是域名所属企业维护的服务器,存储域名与IP的映射)。
8 本地DNS → 客户端 将IP地址返回给客户端,同时缓存该解析结果(缓存时间由TTL值决定)。

三、HTTP请求类型

3.1 简介

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式
常见的请求方法有:GET,POST, PUT,HEAD, DELETE, OPTIONS, CONNECT, TRACE、MOVE, COPY
1.GET请求

get:可以理解为 取 的意思,用来获取数据的,只是用来查询数据;发送一个GET请求获取到某服务器上的资源
PS:get请求会把请求的参数附加在URL后面,这样是不安全的,在处理敏感数据时不用,或者参数做加密处理。

2.POST请求

post可以理解为提交数据的意思, 发送一个POST请求向指定的提交数据或附加新的数据。
PS:post请求的请求参数都是请求body中

3.2 GET与POST区别

1.URL可见性:GET请求通过URL网址访问 POST请求将查询的数据放到HTTP请求数据包中访问 *
2.传输数据大小:GET请求的网址是有长度限制,POST请求没有长度限制 *
3.编码区别:Get请求只支持URL编码,Post支持多种编码方式! *

四、HTTP请求/响应包介绍

4.1 HTTP请求报文

1:组成
一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据
2:HTTP请求报文格式
在这里插入图片描述
3:请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1
方法字段就是HTTP使用的请求方法,比如常见的GET/POST
4:空行
它的作用是通过一个空行,告诉服务器请求头部到此为止。
5:请求数据/请求体
若方法字段是GET,则此项为空,没有数据;
若方法字段是POST,则通常来说此处放置的就是要提交的数据;
比如要使用POST方法提交一个表单,其中有user字段中数据为“admin”, password字段为123456,那么这里的请求数据就是 user=admin&password=123456,使用&来连接各个字段。
6:常见的请求头部

字段名 核心说明 示例
Host 指定请求的服务器的域名和端口号 -
Referer 先前网页的地址,当前请求网页紧随其后(即来路地址) -
User-Agent* 发出请求的用户信息(如浏览器/操作系统版本等) -
Content-Length 请求的内容长度(字节数) -
Content-Type* 请求的与实体对应的MIME信息(多用于POST请求) -
X-forward-for(XFF)* 记录客户端的真实IP地址(可穿透代理) -
Cookie* HTTP请求发送时,将该请求域名下的所有Cookie值发送给Web服务器 Cookie: role=admin;ssid=1
Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html
Accept-Charset 浏览器可以接受的字符编码集 Accept-Charset: iso-8859-5
Accept-Encoding 指定浏览器支持的Web服务器返回内容的压缩编码类型 Accept-Encoding: compress, gzip
Accept-Language 浏览器可接受的语言(优先级从高到低) Accept-Language: en,zh
Date 请求发送的日期和时间(遵循GMT格式) Date: Tue, 15 Nov 2010 08:12:31 GMT

4.2 HTTP响应报文

1:响应行
响应行一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK;
其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。
2:响应头
响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理它回送的数据。
3:响应体
响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。
4:常见的响应头

字段名 核心说明 示例
Allow 标识某网络资源支持的有效请求方法;若请求方法不被允许,服务器返回405错误 Allow: GET, HEAD
Allow: get,head,put,delete
Content-Encoding Web服务器支持的返回内容压缩编码类型 Content-Encoding: gzip
Content-Language 响应体内容的语言类型 Content-Language: en,zh
Content-Length 响应体的字节长度 Content-Length: 348
Content-Type* 返回内容的MIME类型(核心字段) Content-Type: text/html; charset=utf-8
Date 原始服务器发送该响应消息的时间(遵循GMT格式) Date: Tue, 15 Nov 2010 08:12:31 GMT
Location 用于重定向客户端到非请求URL的位置,完成请求或指向新资源 Location: http://www.zcmhi.com/archives/94.html
Refresh 用于重定向或标识新资源创建,指定延迟(秒)后跳转至目标URL Refresh: 5; url=http://www.zcmhi.com/archives/94.html
Server* 标识Web服务器软件的名称/版本等信息 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie* 服务器向客户端设置HTTP Cookie(核心字段) Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Accept-Ranges 表明服务器是否支持范围请求,及支持的分段请求类型 Accept-Ranges: bytes
Access-Control-Allow-Origin* 配置允许跨域访问该资源的域名(CORS核心字段) Access-Control-Allow-Origin: |*
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐