前端面试必备的网络知识

五层网络模型

  • 组成
    • 应用层
      • 组成
        • 应用层
        • 表示层
          • 做用:用来作数据格式化或者加密等操做
        • 会话层
      • 做用:为应用软件提供了不少服务,构建于协议之上。
      • 应用层协议(类比暗号)
        • 分类
          • HTTP协议
          • DNS协议(域名解析)
          • FTP协议(文件传输)
          • SMTP协议(邮件传输)
        • 做用:就像是能识别HTTP协议的程序才能解读HTTP协议里传输的数据内容
    • 传输层
      • 做用:对数据传输链接的创建和管理,在网络的世界闻名称之为传输层。
      • 传输层协议
        • UDP协议
          • UDP协议是尽最大努力保证数据送到,可是不保证数据必定可以送到。咱们常常用到的Ping命令,来测试主机之间是否联通,原理就是UDP协议。这种在送信过程途中把信弄丢了的状况,在网络世界咱们称之为:丢包。
        • TCP协议
          • TCP协议是会保证数据的正确性,也会保证数据的顺序性。
    • 网络层
      • 做用:为数据在节点之间传输建立逻辑链路
      • 网络层协议
        • IP协议
          • 这里的每一栋楼房都至关于链接到网络中的一台计算机,每一个屋子都至关于计算机上的一个端口,而交通网络就像是计算机世界的网络。
          • 在网络的世界中,咱们称之为网络层。在现实世界中咱们要找到一我的的住址咱们须要的地址和门牌号,地址和门牌号具备必定的格式,这种格式类比到网络世界中就是一种协议,咱们称之为网络层协议。
          • 咱们在网络世界中一般用IP加端口来定位一个程序的位置,这种方式就是一种网络层协议,咱们称之为IP协议。
    • 数据链路层
      • 做用:为通信在实体间建立逻辑链路
      • 数据链路层又分为两个部分或者称为两个子层,一个是地图上显示的路线咱们称之为:逻辑链路控制子层。
      • 另外一个是现实世界的路线,咱们称之为:媒体访问控制子层,这层的缩写你们确定熟悉--MAC,也就是人们常说的MAC地址。
    • 物理层
      • 做用:是定义物理设备如何传输数据(光缆丶网线)
  • 过程
    • 五层网络模型在数据运输的过程当中,先是从A处的应用层到运输层到网络层到数据链路层到物理层,将数据运送到B处,而后再从B处的物理层到数据链路层到网络层到运输层到运用层。
    • 每层协议本质上就是在外面套一层特殊格式的数据。因此在将数据送到的时候,须要将这一层层的协议拆开,如何才能获得里面的数据。

TCP协议

  • TCP三次握手
    • 做用:三次握手主要目的是为了确认两台主机都具有收和发的能力
    • 过程
      • 第一次握手
        • 主要传递两个信息,一个是请求创建链接(SYN=1),二是发出一个序列号(seq=n)。
        • 做用:第一次握手让B主机知道A能够发出信息
      • 第二次握手
        • 此次回复三个信息,以是赞成创建链接(SYN=1),二是确认收到了刚才的信息(ack=刚才的seq+1),三是发出本身的序列号(seq=x)。
        • 做用:第二次握手让A知道了B能收到也能发出。
      • 第三次握手
        • 此次回复三个信息,一是表示如今开始发送(SYN=0),二是成功收到了刚才的信息(ack=刚才的seq+1),三是发出本身的序号(最开始发出序号+1)。
        • 做用:第二次握手让A知道了B能收到也能发出。
  • TCP四次握手
    • 核心在于四个时间点,分别是:发完了,知道发完了,收完了,知道收完了。
    • 过程
      • 第一次挥手
        • A告诉B数据发送完了
      • 第二次挥手
        • B知道A发完了
      • 第三次挥手
        • B告诉A接收完了
      • 第四次挥手
        • A知道B接收完了
  • 为何握手只须要三次而挥手须要四次?
    • 就是由于A告诉B发完了的时候,B还有可能没有接收完信息,因此只能先回复一部分,告诉A已经知道发完了的消息了。当消息彻底接收完毕以后,才会告诉A已经接收完了。

HTTP

  • 定义web

    • HTTP全称是HyperText Transfer Protocal,即超文本传输协议,是因特网上应用最为普遍的一种网络传输协议,全部的WWW文件都必须遵照这个标准。
    • HTTP是一个基于TCP/IP通讯协议来传输数据
  • HTTP工做原理浏览器

    • HTTP协议工做于客户端-服务端架构上。浏览器做为HTTP客户端经过URL向WEB服务器发送全部的请求。
  • 特色缓存

    • HTTP是无链接。
      • 无链接的含义是限制每次链接只处理一个请求。
      • 服务器处理完客户的请求,并收到客户的应答后,即断开链接。
      • 采用这种方式能够节省传输时间。
    • HTTP是媒体独立的
      • 这意味着,只要客户端和服务器知道如何处理的数据内容,如何类型的数据均可以经过HTTP发送。
      • 客户端以及服务器指定使用合适的MIME-type内容类型。
    • HTTP是无状态的
      • HTTP协议是无状态协议。无状态协议是指对于事务处理没有记忆能力。缺乏状态意味着若是后续处理前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大。
      • 另外一方面,在服务器不须要先前信息时它的应答就较快。
  • 组成安全

    • 请求行
    • 首部
    • 实体
  • HTTP状态码服务器

    • 定义:
      • 用来描述返回的结果,记住状态码,咱们能够知道的处理了请求仍是处理了错误,状态码响应类别一共有五种。好比200,数字中的第一位指响应类别,后两位为分类。
    • 五种类型分别是
      1XX(信息性状态码) 接受的请求正在处理,不常见
      2XX(成功状态码) 请求正常处理完毕
      3XX(重定向状态码) 须要进行附加操做已完成请求
      4XX(客户端错误码) 服务器没法请求类别
      5XX(服务端错误状态码) 服务器处理请求出错
    • 经常使用状态码
      • 2XX 成功
        200 客户端请求在服务端正常处理
        204 请求成功可是没有资源返回
        206 表示了客户端进行了范围请求,而服务器成功执行了这部分的GET请求,首部字段中有content-rage意思是客户端进行了范围请求
      • 3XX 重定向
        301 永久性重定向
        302 临时性重定向
        303 请求的资源存在另外一个URI,应使用GET方法定向获取请求资源
        304 当浏览器屡次访问同一个资源的时候,若是第一次请求的结果还在缓存,尚未过时,那么在此访问这个资源的时候,为了减小网络传输的消耗,若是这个资源尚未被修改过,则可让浏览器继续使用以前缓存的内容,这样就不用将资源再发送一遍了,因此减小了不少网络开销。
        307 临时重定向
      • 4XX 客户端错误码
        400 请求报文存在语法错误
        401 发送的请求须要经过HTTP认证的认证信息,若是以前请求过一次,则表示用户认证失败。
        403 不容许访问该资源
        404 服务器上没有该资源
      • 5XX 服务器错误
        500 服务器端在执行请求时发生错误
        503 服务器暂时处于超负荷或正在停机维护,没法处理请求。
  • HTTP请求方式网络

    get 从服务器取出资源
    post 在服务器新建一个资源
    put 在服务器更新资源
    delete 从服务器删除资源
    • GET和POST真正区别
      • 在本质上,GET请求和POST请求都能拉取数据。
      • 咱们常说的HTTP协议其实是基于RFC规范的,实际上GET和POST请求的语法是彻底相同的,可是在RFC规范中,给GET请求和POST请求规定了语法,规定GET用来获取信息,POST用来发送信息。
      • 若是什么前提都没有,也就是不用任何规范的话,咱们只考虑语法来讲,这两个方式是没有任何区别的,只是名字不同。
      • 若是是基于RFC规范的,那么问题就又来了。是基于RFC理论 的,仍是基于具体的实现的。
        • 若是是基于RFC理论的,咱们称这个为Specification。那么GET和POST是具备相同的语法,可是不具有相同的语义,GET方式用做获取信息,POST方式用做发送信息。
        • 若是是基于RFC的具体实现的,咱们称之为implementation。其实要区分是具体的哪种实现,咱们一般默认指的是浏览器少先队额RFC。固然不止浏览器,咱们任何人均可以设计一种HTTP协议的接口,使用RFC规范,固然这些是咱们不用考虑的,由于并不通用。
          • GET的数据在URL中对全部人都是可见的。POST的数据不会显示在URL中。
          • GET对数据长度有限制,当发送数据时,GET方法向URL添加数据;URL的长度是受限制的(URL是最大长度是2048个字符)。POST无限制。
          • GET可收藏为书签,POST不可收藏为书签。
          • GET后退按钮/刷新无影响,POST数据会被从新提交(浏览器应该告知用户数据会被从新提交)
          • GET编码类型aplication/x-www-form-url,POST编码类型encodeapplication/x-www-form-urlencoded或multipart/form-data。为二进制数据使用多重编码。
          • GET历史参数会保留在浏览器历史中。POST参数不会保存在浏览器历史中。
          • GET只容许SCII字符。POST没有限制。也容许二进制数据。
          • 与POST相比,GET的安全性比较差,由于所发送的数据是URL的一部分。在发送密码或其余敏感信息的时候毫不要要善于GET!POST比GET更安全,由于参数不会。被保存在浏览器历史或web服务器日志中。
          • GET请求只会有一次TCP链接,而POST请求会有两次 TCP链接。
  • HTTP缓存机制架构

    • cache-control
      • max-age
        • 做用:缓存的资源,超过必定时间就不要了,就要从新请求。
        • max-age后面一般跟着一串数字,表示缓存的秒数。
      • max-stale
        • 做用:过时一点的时间无所谓。
        • max-stale后面也跟着秒数,表示过时多长时间的东西也能够继续使用。
        • max-stale多数的时候会跟着max-age一块儿使用
      • no-cache
        • 做用:不会直接使用缓存,而是每次使用资源以前,都要先向服务器询问一下这个资源还能不能用,若是能用就继续用,若是不能用就从新请求。
      • no-store
        • 做用:每次都要向服务器请求资源。
      • public
        • 做用:表示任何地方均可以缓存资源。
      • private
        • 做用:只容许客户端进行缓存,代理服务器不能缓存这个资源。
      • must-revalidation
        • max-age和must-revalidation都是本地过时以后去服务端从新请求资源。
        • 可是区别在于,若是使用max-age,那么若是资源没过时,新开的窗口也会使用这个资源。若是是must-revalidation,每次新打开窗口,都会向服务器去请求资源。
      • no-transform
        • 做用:一般当传输图片或资源时,有时代理服务器为了有更好的性能,会对图片或者资源进行压缩,或者格式的转换。可是若是在响应头中带有这个字段,就表示不容许在传输的中途对资源作任何修改。
  • HTTP报文信息app

  • HTTP首部字段dom

(DNS协议)域名解析过程

  • 定义:从咱们输入域名开始直到咱们得到要访问的ip地址的过程
  • 过程
    • 当咱们输入一个URL的时候,浏览器会先从本地的缓存中看,有没有这个域名对应。
    • 当要访问的URL没有命中本地的浏览器缓存时,就要查看计算机本地的HOST指向,有没有相关的记录。计算机本地的HOST是一个文件,记录着域名和IP的映射关系。
    • 当浏览器缓存和计算机HOST都没有命中的时候,就要求助于本地的DNS解析服务器了。本地的DNS解析服务器咱们称之为LDNS。这些这些服务器距离咱们比较近,可能在每一个城市都会有。
      • 每一个城市的DNS也不可能记住全世界全部的网址,全部的LDNS也有可能找不到相应的域名对应的IP。
      • 当本地的DNS解析找不到的时候,就会求助更权威的机构。也就是gTLD Server。gTLD Server全称是Generic top-level domain Server,通用顶级域Server。
      • 咱们常见的域名后缀有.com的,有.net的,有.org的等等不少。每一个顶级域名都有一个记录者全部注册过相应域名的记录。好比.com域名的服务器就会记录着所有注册过的.com的域名。
        • 每一个域名后缀的顶级域名也不可能只有一台,毕竟一台机器 没法承受这么大的访问量,可能有好多台。
        • 可是LDNS只会访问其中的一台,当被访问的状态gTLD Server收到了这个域名以后,会告诉LDNS你应该去询问哪台机器,而后LDNS再去相应的机器去询问这个域名对应的IP。
      • 当LDNS从gTLD获取到了域名对应的IP以后就会把这个信息返回到发出请求的计算机,而后LDNS会在本地进行缓存,相应的浏览器也会对这个域名和IP进行缓存,以保证下次再有访问这个域名的时能够很快的响应。

你的点赞是我持续输出的动力 但愿能帮助到你们 互相学习 有任何问题下面留言 必定回复

相关文章
相关标签/搜索