其他分享
首页 > 其他分享> > 计算机基础之HTTP

计算机基础之HTTP

作者:互联网

一、what's the HTTP and HTTPS

  HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。

  HTTP 主要内容分为三部分,超文本(Hypertext)、传输(Transfer)、协议(Protocol)

 

TCP/IP 网络模型

        

||||||||||||||||          五层模型     ||||||||||||||||     四层模型                    ||||||||||||||||        七层模型             ||||||||||||||||  

HTTP 和 HTTPS 的区别

 

二、POST 和 GET 的区别

  HTTP 中包括许多方法,Get 和 Post 是 HTTP 中最常用的两个方法,基本上使用 HTTP 方法中有 99% 都是在使用 Get 方法和 Post 方法。

 

三、无状态协议及解决方法

  无状态协议(Stateless Protocol) 指浏览器对于事务的处理没有记忆能力。

  举个例子来说客户请求获得网页之后关闭浏览器,然后再次启动浏览器,登录该网站,但是服务器并不知道客户关闭了一次浏览器。

  HTTP 是一种无状态的协议,他对用户的操作没有记忆能力。可能大多数用户不相信,他可能觉得每次输入用户名和密码登陆一个网站后,下次登陆就不再重新输入用户名和密码了。这其实不是 HTTP 做的事情,起作用的是一个叫做 Cookie 的机制。它能够让浏览器具有记忆能力。 查看方式 chrome://settings/content/cookies

  当浏览器向服务端发送请求时,服务端会发送一个认证信息,服务器第一次接收到请求时,开辟了一块 Session 空间(创建了Session对象),同时生成一个 sessionId ,并通过响应头的 Set-Cookie:JSESSIONID=XXXXXXX 命令,向客户端发送要求设置 Cookie 的响应;客户端收到响应后,在本机客户端设置了一个 JSESSIONID=XXXXXXX 的 Cookie 信息,该 Cookie 的过期时间为浏览器会话结束;

 

 

  接下来客户端每次向同一个网站发送请求时,请求头都会带上该 Cookie信息(包含 sessionId ), 然后,服务器通过读取请求头中的 Cookie 信息,获取名称为 JSESSIONID 的值,得到此次请求的 sessionId。这样,浏览器才具有了记忆能力。 

 

JWT 机制

  JWT 能够让浏览器具有记忆能力的一种机制。与 Cookie 不同,JWT 是保存在客户端的信息,它广泛的应用于单点登录的情况。JWT 具有两个特点

 

四、UDP 和 TCP 

  TCP 和 UDP 都位于计算机网络模型中的运输层,它们负责传输应用层产生的数据。

UDP

  UDP 的全称是 User Datagram Protocol,用户数据报协议。它不需要所谓的握手操作,从而加快了通信速度,允许网络上的其他主机在接收方同意通信之前进行数据传输。

UDP 的特点主要有

 

TCP

  TCP 的全称是Transmission Control Protocol ,传输控制协议。它能够帮助你确定计算机连接到 Internet 以及它们之间的数据传输。通过三次握手来建立 TCP 连接,三次握手就是用来启动和确认 TCP 连接的过程。一旦连接建立后,就可以发送数据了,当数据传输完成后,会通过关闭虚拟电路来断开连接。

TCP 的主要特点有

 

TCP 和 UDP 的不同

 

 

 

五、TCP 三次握手和四次挥手

TCP 三次握手

  在连接建立时需要经历3次握手

 

 

 

 

如果用现实生活来举例的话就是

小明 - 客户端 小红 - 服务端

 

TCP 四次挥手

  在连接终止阶段使用4次挥手,连接的每一端都会独立的终止。下面我们来描述一下这个过程。

 

 

 

还是可以用上面那个通话的例子来进行描述

 

六、HTTP 1.0/1.1/1.2 的区别

HTTP 1.0

  HTTP 1.0 是在 1996 年引入的,从那时开始,它的普及率就达到了惊人的效果。

 

HTTP 1.1

  HTTP 1.1 是 HTTP 1.0 开发三年后出现的,也就是 1999 年,它做出了以下方面的变化

 

HTTP 2.0

  HTTP 2.0 是 2015 年开发出来的标准,它主要做的改变如下

 

 

 七、HTTP 常见请求头

  HTTP 标头会分为四种,分别是 通用标头实体标头请求标头响应标头

通用标头

  通用标头主要有三个,分别是 DateCache-ControlConnection

其他通用标头

 

 

实体标头

  实体标头是描述消息正文内容的 HTTP 标头。实体标头用于 HTTP 请求和响应中。头部 Content-Length、 Content-Language、 Content-Encoding 是实体头。

其他实体标头

 

 

请求标头

其他请求标头

 

 

响应标头

其他响应标头

 

 

 

八、地址栏输入 URL 发生了什么

  1. 首先,在浏览器中的 URL 地址上,输入想访问的地址
  2. 然后,浏览器会根据输入的 URL 地址,去查找域名是否被本地 DNS 缓存,不同浏览器对 DNS 的设置不同,如果浏览器缓存了想访问的 URL 地址,那就直接返回 ip。如果没有缓存 URL 地址,浏览器就会发起系统调用来查询本机 hosts 文件是否有配置 ip 地址,如果找到,直接返回。如果找不到,就向网络中发起一个 DNS 查询。
  3. 第三步,浏览器需要和目标服务器建立 TCP 连接,需要经过三次握手的过程。
  4. 在建立连接后,浏览器会向目标服务器发起 HTTP-GET 请求,包括其中的 URL,HTTP 1.1 后默认使用长连接,只需要一次握手即可多次传输数据。
  5. 如果目标服务器只是一个简单的页面,就会直接返回。但是对于某些大型网站的站点,往往不会直接返回主机名所在的页面,而会直接重定向。返回的状态码就不是 200 ,而是 301,302 以 3 开头的重定向码,浏览器在获取了重定向响应后,在响应报文中 Location 项找到重定向地址,浏览器重新第一步访问即可
  6. 然后浏览器重新发送请求,携带新的 URL,返回状态码 200 OK,表示服务器可以响应请求,返回报文。

DNS

  互联网中识别主机的方式有两种,通过主机名和 IP 地址。我们人喜欢用名字的方式进行记忆,但是通信链路中的路由却喜欢定长、有层次结构的 IP 地址。所以就需要一种能够把主机名到 IP 地址的转换服务,这种服务就是由 DNS 提供的。DNS 的全称是 Domain Name System 域名系统。DNS 是一种由分层的 DNS 服务器实现的分布式数据库。DNS 运行在 UDP 上,使用 53 端口。

  DNS 是一种分层数据库,它的主要层次结构如下

 

  一般域名服务器的层次结构主要是以上三种,除此之外,还有另一类重要的 DNS 服务器,它是本地 DNS 服务器(local DNS server)。严格来说,本地 DNS 服务器并不属于上述层次结构,但是本地 DNS 服务器又是至关重要的。每个 ISP(Internet Service Provider) 比如居民区的 ISP 或者一个机构的 ISP 都有一台本地 DNS 服务器。当主机和 ISP 进行连接时,该 ISP 会提供一台主机的 IP 地址,该主机会具有一台或多台其本地 DNS 服务器的 IP地址。通过访问网络连接,用户能够容易的确定 DNS 服务器的 IP地址。当主机发出 DNS 请求后,该请求被发往本地 DNS 服务器,它起着代理的作用,并将该请求转发到 DNS 服务器层次系统中。 首先,查询请求会先找到本地 DNS 服务器来查询是否包含 IP 地址,如果本地 DNS 无法查询到目标 IP 地址,就会向根域名服务器发起一个 DNS 查询。在由根域名服务器 -> 顶级域名服务器 -> 权威 DNS 服务器后,由权威服务器告诉本地服务器目标 IP 地址,再有本地 DNS 服务器告诉用户需要访问的 IP 地址。

 

 

注意:DNS 涉及两种查询方式:一种是递归查询(Recursive query) ,一种是迭代查询(Iteration query)。如果根域名服务器无法告知本地 DNS 服务器下一步需要访问哪个顶级域名服务器,就会使用递归查询; 如果根域名服务器能够告知 DNS 服务器下一步需要访问的顶级域名服务器,就会使用迭代查询。

 

九、HTTPS 工作原理

  HTTPS 的握手过程,其实就是 SSL/TLS 的握手过程。

  TLS 旨在为 Internet 提供通信安全的加密协议。TLS 握手是启动和使用 TLS 加密的通信会话的过程。在 TLS 握手期间,Internet 中的通信双方会彼此交换信息,验证密码套件,交换会话密钥。 每当用户通过 HTTPS 导航到具体的网站并发送请求时,就会进行 TLS 握手。

  除此之外,每当其他任何通信使用HTTPS(包括 API 调用和在 HTTPS 上查询 DNS)时,也会发生 TLS 握手。

  TLS 具体的握手过程会根据所使用的密钥交换算法的类型和双方支持的密码套件而不同。我们以RSA 非对称加密来讨论这个过程。

整个 TLS 通信流程图如下

 

 

 

 

 

参考:99% 的面试官都爱问的 8个 HTTP 知识点!

 

标签:标头,HTTP,请求,计算机,基础,DNS,服务器,客户端
来源: https://www.cnblogs.com/zhuminghui/p/12844137.html