HTTP

HTTP(超文本传输协议),是一种实现客户端浏览器和网站服务器之间通信的请求响应协议,它是作用于客户端和服务器之间的请求和响应。

URI:统一资源标识符

URL:统一资源定位符

注:URL是URI的一个子集,也可以理解为URI的抽象,URL是具体的。

?向资源文件进行传参
& 向资源文件传递多个参数

通信流程

1:输入访问 www.baidu.com

2:DNS域名解析服务器将域名解析成IP地址:www.baidu.com > 1.15.136.212对应的IP地址

3:浏览器请求web服务器获取web资源

4:web服务器将资源返回给客户端

5:客户端浏览器渲染

6:最后呈现在用户面前

DNS(域名解析服务器)的解析方向:

正向解析:域名到IP地址

反向解析:IP地址到域名

用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。因为IP是由数串组成,难记忆,所以DNS系统的出现,完美解决了这个问题。

DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。

DNS使用TCP和UDP协议的53端口

DNS服务器类型

根服务器:是DNS的核心,负责互联网顶级域名的解析,用于维护域的权威信息,并将DNS查询应道到对应的域名服务器。

# 顶级域名
.com   商业网站
.org   国际网站
.net   互联网中心
.edu   教育机构
.gov   政府网站
# 国家域名
.cn   中国
.jp    日本
.us   美国

域名知识:

一级域名:baidu.com   jd.com   xiaomi.com

二级域名: baike.baidu.com   image.baidu.com

三级域名:www.baike.baidu.com 

HTTP请求类型

1、get 请求(取),是查询数据
2、post 请求(请求),常用于提交数据更新数据


应用场景
GET请求:地址栏中访问网址
POST请求:网站内容搜索 用户注册 用户登录

GET和POST的区别:

1.URL可见性:GET请求通过URL网址访问  POST请求将查询的数据放到HTTP请求数据包中访问

2.传输数据大小:GET请求的网址是有长度限制,POST请求没有长度限制。

3.编码区别:GET请求只支持URL编码,POST请求支持多种编码方式。

HTTP请求响应过程

1.域名解析:首先浏览器会解析请求域名(主机名),得到域名对应的IP地址。

2.发起TCP三次握手:客户端拿到域名对应的IP地址之后,浏览器会随机开放一个端口(1024<端口<65535)向web服务器的80/443端口发起TCP的连接请求。

3.建立TCP连接后发送HTTP请求:经过TCP三次握手之后,浏览器向web服务器发起HTTP请求

4:服务器端响应http请求,浏览器得到html代码:服务器端WEB程序接收到http请求以后,就开始处理该请求,处理之后就返回给浏览器html等资源信息。

5:浏览器接收到响应后,解析html代码,并请求html代码中的资源:浏览器接收到响应后,解析其中的HTML代码,遇到JS/CSS/图片/视频等资源时,就向服务器端区请求获取对应的资源信息(建立一次HTTP连接,可以请求多个资源。)

6:浏览器对页面进行渲染呈现给用户:浏览器利用自己内部的工作机制,把请求到的静态资源和html代码进行渲染,渲染之后呈现给用户。

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 *
    • 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
    • 请求发送的日期和时间
    • Date: Tue, 15 Nov 2010 08:12:31 GMT

eg:

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
    • 原始服务器消息发出的时间
    • Date: Tue, 15 Nov 2010 08:12:31 GMT
  • Location
  • Refresh
  • 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 *
    • 配置有权限访问资源的域
    • Access-Control-Allow-Origin: <origin>|*

HTTP响应码

1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态码。

100 继续,客户端应继续其请求。

2xx(成功):表示成功处理了请求的状态码。

200 请求成功,一搬用于GET和POST请求。

201 已创建,成功请求并创建了新资源。

3xx(重定向):表示要完成请求,需要进一步操作。通常,这些状态码用来重定向。

302 临时移动,资源只是临时被移动。客户端应继续使用原有URL。

4xx(请求错误):表示请求可能出错,妨碍了服务器的处理。

404 服务器无法根据客户端的请求找到资源。

5xx(服务器错误):表示服务器在尝试处理请求时发送内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

504 充当网关或代理的服务器,未及时从远端服务器获取请求。

HTTPS

HTTPS (HyperText Transfer Protocol over Secure Socket Layer)可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL。CA
HTTP和HTTPS的区别
1.端口号:HTTP:80  / HTTP:443
2.数据:HTTP传输明文数据/ HTTPS传输的是密文数据

CA:CA (Certificate Authority) 是颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

CA 证书颁发机构:CSP云服务提供商生成颁发证书 用在网站程序/FTP站点/APP程序中!
.cdx .der .cert   --> 证书文件!
证书的功能:

  • 身份校验: 非对称加密算法-->RSA
  • 完整性校验:哈希算法--> MD5 / HMAC

Cookie和Session

Cookie:

HTTP Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器或用户,如保持用户的登录状态。

作用

  1. 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  2. 个性化设置(如用户自定义设置、主题等)
  3. 浏览器行为跟踪(如跟踪分析用户行为等)

Session:

Session 代表着服务器和客户端一次会话的过程。Session 对象存储着用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当客户端关闭会话,或者 Session 超时失效时会话结束。

Cookie与Session区别:

Cookie:用于保持用户的登录网站的状态!Cookie信息保存到客户端本地!
Session:用于保持用户的登录网站的状态!Session信息保存到WEB服务端

以上内容均为作者自身见解,如有异议可以发在评论区,作者会及时借鉴修改!!!

Logo

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

更多推荐