为什么http协议需要服务器,你必需要知道的HTTP协议原理

1 基本概念面试

HTTP协议:基于TCP协议之上实现的无状态、全文本的标准通讯协议。算法

客户端:例如pc浏览器,移动应用端,第三方服务器等能发起http访问的设备。json

服务器:可以接受HTTP协议请求,而且一般可以正常返回响应结果给客户端的设备。api

cb805ba83b47aa48f188de47460cfe83.png

HTTP协议其实提及来很简单,它有两个重要特性:纯文本,无状态。理解了这两个特性,基本就掌握了HTTP的核心思想了。其它知识,无非是应该各类场景下制定的协议细节。浏览器

纯文本:安全

TCP协议保证两个计算机直接的稳定通讯,TCP报文传输的数据部分在HTTP协议里面就存放的是HTTP纯文本。服务器

解决这个,最简单的就是安装一个抓包工具查看一下传输报文的格式,这里咱们以Fiddler为例子,抓取访问知乎首页的请求。你能够很明显的看出来,请求和响应所有都是以纯文本方式交互。cookie

0a3f99b9056131e87f74e2ff9c5f5fc1.png

35ce14235ceaf99f8503677b1a463365.png

无状态:网络

这个特性说的是:只依赖协议自己的定义,服务器没法区分连续的两次请求是否属于同一个客户端。有点抽象,这个等到最后说session与cookie时候一块儿说。session

2 Get与Post请求的区别

这个问题老生常谈了,我面试时候也常常会问。

从协议的角度来的,区别以下:

d0131ace5000cf987a92643c17fee382.png

区别就是请求开头第一行的标识符号,你是传GET仍是POST,此外从传输角度来看没有任何区别!!!

网上千篇一概的什么URL传参,BODY传参,大小限制,安全限制之类的,基本都是各类框架、工具在具体工程实现上面的细节区分。

3 Json与Form表单,Content-Type请求头

如今RESTFUL API大行其道,可是早几年仍是表单提交的天下,不过在作项目的过程当中有时候仍是会碰到要求表单提交的api,例入某讯家的接口。

因此仍是有必要体会一下二者的不一样,以下图:

6421b9f76a37a9b16084f132986f2560.png

同时对应的Content-Type请求头会有不一样:

application/x-www-form-urlencoded

application/json

4 Cookie与Session

cookie:客户端保存的关于特定域名的服务器相关联数据。

session: 同一个客户端,必定时间段内的请求过程。

前文咱们说过,无状态特性决定了,只依赖协议自己的定义,服务器没法区分连续的两次请求是否属于同一个客户端。咱们先看图:

d989af17510c000702e59daa34d6a14e.png

服务器没法区分两个请求分别属于谁的,虽然你看图列子,两个线是直接连接到不一样的两个客户端的。可是,请注意关测HTTP请求的文本:

ca83e0831c2fe5fd01a31448afd9e1cf.png

服务器收到像这样的纯文本,它如何从中推断出,是哪一个客户端发出的请求呢?

答案是判断不了,条件不足。

聪明的你,可能已经想到了:在传输的文本中添加客户端相关的信息,不就能够识别特定客户端了吗?是的,工程界就是这么实现的,一般会借助于一个在客户端存储cookie来,近几年localstorage存储也大行其道,目的都是标识客户端归属。

0505d9241c5d9ebc9c54ccdfd296d902.png

5 Https请求

上文中有说到,http是纯文本,既然是纯文本,那我若是在通讯过程当中,例如在某一个路由中拦截请求,直接就能够看到全部明文,极为不安全。因此才有了SSL、TLS协议,给传输加个密。

这里有一个误区,SSL、TLS协议是直接在TCP传输层面作的加密,而不是在HTTP协议之上作封装。另外,创建传输开始过程当中才会作不对称加密算法如RSA作证书验证,而在传输过程当中,仍是使用的对称加密算法如DES等。

6 1台服务器能同时处理多少客户端请求?

这个问题颇有意思,先说答案:取决于网络带宽与服务器内存。

首先要明确一点是,物理规律没法打破。服务器与外界通讯只靠一根网线。

因此网络带宽会限制连接客户端数量。

其次,每次创建一个链接,服务都会在内存中保持链接句柄,因此跟内存也会相关。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值