zoukankan      html  css  js  c++  java
  • 你需要掌握的http知识

    作为一名前端er,http是我们必须要掌握的,那么我们到底需要掌握哪些东西呢

    一、基础知识

    这里我们介绍与http相关的TCP、IP、DNS、url、uri

    1.IP

    IP地址是我们很熟悉的东西,最常见的的就是127.0.0.1。我们都知道连接网络后,每个人都会有不同的IP地址,而每台计算机也有自己的mac地址(这个地址是硬件写死的),那么我们传输信息的时候只要知道对方的IP地址,然后再和mac地址配对就基本可以确定接受信息方;而传输过程中我们肯定是希望信息高效传递过去,那么传输方式以及传输路径就要找到最好的方式。IP协议就是做这些事情的,IP是指IP协议而不是我们常常说的IP地址,它位于网络层,所要做的事情主要是以下三点:
    1)寻址和路由;
    2)传递服务;
    3)数据包的分片和重组;

    2.TCP

    首先按照分层,TCP位于传输层,提供字节流服务。那么什么是字节流呢?网络传输数据就像汽车运输货物一样,比如我们运输的是信号塔,这么大不可能一下子运到目的地,这时候就需要一部分一部分运过去,再组装起来。而TCP确保数据能到达目的地。运输货物我们打个就可以通知是否送到了,TCP要用什么方式呢?看图说话
    tcp三次握手.png

    3.DNS

    我们要访问一台服务器的东西,需要知道它的地址,IP地址可以作为一个标识,但是四个数字是很不好记的,因此诞生了域名这个东西,比如www.qq.com,我们可以访问到腾讯主页,但这个是怎么找到对应到腾讯的服务器呢?DNS服务就是干这个的,它处于应用层,当然它也可以通过IP来查找对应的域名。

    4.URL和URI

    URL: 统一资源定位符
    URI: 统计资源标识符
    URI用来标识某个互联网资源,而URL是资源的位置,所以URL是URI的子集。这里知道简单区别即可。

    二、http报文

    http报文分为请求报文和响应报文,HTTP请求报文:一个HTTP请求报文由请求行、请求头部、空行和请求数据4部分组成。HTTP响应报文:由三部分组成:状态行、消息报头、响应正文。综合两种报文,我们把报文分为一下结构
    image.png

    1.请求行

    主要呈现请求的基本信息,包括请求的目标,协议版本,以及请求方法。目标就是一个url,比如我们要请求的网址或者跟后端协定好的接口地址。协议版本指http1.0、http1.1等。请求方法最常见的GET、POST,在http1.1总共有八种,这里不再一一阐述,最常见的GET、POST区别可以参考这篇文章

    2.状态行

    状态行就主要表示请求结果了,这里主要涉及状态码后面第三部分会说到

    3.首部字段

    这里首部字段就有通用首部字段、请求首部字段以及响应首部字段三种。
    常用的首部字段比如Date(日期),Pragma、cache-control(缓存相关),Upgrade(协议升级,比如使用websocket)等。
    请求首部字段比如Accept-*系列(表示优先级的,Charset字符集,Encoding编码,Language语言等),缓存类的(Etag和modified相关),referer(请求方)等。
    相应首部字段比如缓存相关(Etag和modified相关),服务器信息(Server),重定向(Location)等。

    4.其他

    http中未定义的一些字段,比如cookie

    5.报文主体

    请求报文主要是请求信息,query、body参数等。响应报文主要是服务器返回的信息。

    三、状态码

    1xx:

    信息类型,表示在处理了。

    2xx:

    成功类型。比如常见的200,服务器处理成功但是不返回实体信息的204等。

    3xx:

    需要附加操作的,比如重定向(301永久重定向,302临时重定向)和使用缓存(304,这里结合几个首部字段使用,具体可以参考http缓存

    4xx:

    客户端错误,比如参数错误(400),认证失败(401),没有访问权限(403),资源不存在(404)等

    5xx:

    服务器错误,比如服务端执行错误或者故障(500),服务器暂时无法处理(503),超时(504),协议有问题(505)等

    三、身份认证

    身份认证主要有以下五种方式
    1.承载用户身份信息的HTTP首部(比如referer)
    2.客户端IP地址跟踪,通过用户的IP地址对其进行识别
    3.用户登录,用认证方式来识别用户(这里需要了解token机制)
    4.胖URL,一种在URL中嵌入识别信息的技术
    5.cookie,一种功能强大且高效的持久身份识别技术

    四、安全

    1.请求头中的安全机制

    CSP策略
    可以采用请求头设置方式
    Content-Security-Policy: policy
    Content-Security-Policy: default-src 'self'(自定义)
    当然也可以在meta标签中设置,比如(来自mdn)。
    X-Frame-Options
    防止点击劫持
    X-XSS-Protection
    控制浏览器XSS防止的开关

    2.cookie安全

    比如cookie加密,设置HttpOnly和secure

    五、其他

    https:四次握手,ssl/tls协议,加密等。
    http2:优势,多路复用、头部压缩、流的优先级等。

    六、总结

    这里只针对http我们需要掌握的基本信息做一个大概的总结,具体的某方面知识建议查看数据去了解,虽然我们在编写代码(写bug中)过程中几乎不会用到http,但是我们的项目运行却是离不开它,因此掌握基本的http对性能优化,安全等都是很有帮助的。有书写错误或者解释错误的欢迎指出!

  • 相关阅读:
    P5318 【深基18.例3】查找文献 —— 图的两种遍历
    电子合同有效性需要解决的问题
    软件测试流程
    浅析HTTP与HTTPS的区别
    输入URL到网页显示的全过程
    TCP协议详细讲解
    Git操作
    robot framework环境搭建及注意事项
    测试面试问题总汇
    python之random模块详解
  • 原文地址:https://www.cnblogs.com/Upton/p/9868065.html
Copyright © 2011-2022 走看看