做为一名前端er,http是咱们必需要掌握的,那么咱们到底须要掌握哪些东西呢前端
这里咱们介绍与http相关的TCP、IP、DNS、url、uriweb
IP地址是咱们很熟悉的东西,最多见的的就是127.0.0.1。咱们都知道链接网络后,每一个人都会有不一样的IP地址,而每台计算机也有本身的mac地址(这个地址是硬件写死的),那么咱们传输信息的时候只要知道对方的IP地址,而后再和mac地址配对就基本能够肯定接受信息方;而传输过程当中咱们确定是但愿信息高效传递过去,那么传输方式以及传输路径就要找到最好的方式。IP协议就是作这些事情的,IP是指IP协议而不是咱们经常说的IP地址,它位于网络层,所要作的事情主要是如下三点:
1)寻址和路由;
2)传递服务;
3)数据包的分片和重组;后端
首先按照分层,TCP位于传输层,提供字节流服务。那么什么是字节流呢?网络传输数据就像汽车运输货物同样,好比咱们运输的是信号塔,这么大不可能一会儿运到目的地,这时候就须要一部分一部分运过去,再组装起来。而TCP确保数据能到达目的地。运输货物咱们打个就能够通知是否送到了,TCP要用什么方式呢?看图说话
浏览器
咱们要访问一台服务器的东西,须要知道它的地址,IP地址能够做为一个标识,可是四个数字是很很差记的,所以诞生了域名这个东西,好比www.qq.com,咱们能够访问到腾讯主页,但这个是怎么找到对应到腾讯的服务器呢?DNS服务就是干这个的,它处于应用层,固然它也能够经过IP来查找对应的域名。缓存
URL: 统一资源定位符
URI: 统计资源标识符
URI用来标识某个互联网资源,而URL是资源的位置,因此URL是URI的子集。这里知道简单区别便可。安全
http报文分为请求报文和响应报文,HTTP请求报文:一个HTTP请求报文由请求行、请求头部、空行和请求数据4部分组成。HTTP响应报文:由三部分组成:状态行、消息报头、响应正文。综合两种报文,咱们把报文分为一下结构
性能优化
主要呈现请求的基本信息,包括请求的目标,协议版本,以及请求方法。目标就是一个url,好比咱们要请求的网址或者跟后端协定好的接口地址。协议版本指http1.0、http1.1等。请求方法最多见的GET、POST,在http1.1总共有八种,这里再也不一一阐述,最多见的GET、POST区别能够参考这篇文章服务器
状态行就主要表示请求结果了,这里主要涉及状态码后面第三部分会说到websocket
这里首部字段就有通用首部字段、请求首部字段以及响应首部字段三种。
经常使用的首部字段好比Date(日期),Pragma、cache-control(缓存相关),Upgrade(协议升级,好比使用websocket)等。
请求首部字段好比Accept-*系列(表示优先级的,Charset字符集,Encoding编码,Language语言等),缓存类的(Etag和modified相关),referer(请求方)等。
相应首部字段好比缓存相关(Etag和modified相关),服务器信息(Server),重定向(Location)等。cookie
http中未定义的一些字段,好比cookie
请求报文主要是请求信息,query、body参数等。响应报文主要是服务器返回的信息。
##### 1xx:
信息类型,表示在处理了。
成功类型。好比常见的200,服务器处理成功可是不返回实体信息的204等。
须要附加操做的,好比重定向(301永久重定向,302临时重定向)和使用缓存(304,这里结合几个首部字段使用,具体能够参考http缓存)
客户端错误,好比参数错误(400),认证失败(401),没有访问权限(403),资源不存在(404)等
服务器错误,好比服务端执行错误或者故障(500),服务器暂时没法处理(503),超时(504),协议有问题(505)等
身份认证主要有如下五种方式
1.承载用户身份信息的HTTP首部(好比referer)
2.客户端IP地址跟踪,经过用户的IP地址对其进行识别
3.用户登陆,用认证方式来识别用户(这里须要了解token机制)
4.胖URL,一种在URL中嵌入识别信息的技术
5.cookie,一种功能强大且高效的持久身份识别技术
CSP策略
能够采用请求头设置方式
Content-Security-Policy: policy
Content-Security-Policy: default-src 'self'(自定义)
固然也能够在meta标签中设置,好比
(来自mdn)。
X-Frame-Options
防止点击劫持
X-XSS-Protection
控制浏览器XSS防止的开关
好比cookie加密,设置HttpOnly和secure
https:四次握手,ssl/tls协议,加密等。
http2:优点,多路复用、头部压缩、流的优先级等。
这里只针对http咱们须要掌握的基本信息作一个大概的总结,具体的某方面知识建议查看数据去了解,虽然咱们在编写代码(写bug中)过程当中几乎不会用到http,可是咱们的项目运行倒是离不开它,所以掌握基本的http对性能优化,安全等都是颇有帮助的。有书写错误或者解释错误的欢迎指出!