对线面试官 | 计算机网络常用知识点

网络分层

TCP/IP五层协议

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 应用层
层次传递对象关键设备核心知识点
物理层Physical比特流集线器(Hub)CSMA/CD(载波监听多路访问)Mac地址
数据链路层Data Link交换机以太网协议
网络层NetworkIP数据报路由器IP协议、子网划分/掩码、默认网关、ARP(地址解析:IP->Mac)、NAT(本地IP地址->全球IP)
传输层Transport网关TCP协议(三次握手,四次挥手、流量控制、拥塞控制)、UDP协议、端口(面向程序)
应用层Application报文HTTP、HTTPS、SMTP

知识点拆解

应用层协议
http 协议
  1. URI URL URN

    URI = 统一资源标识符

    URL = 统一资源定位符 https://google.com

    URN = 统一资源名称 urn:isbn:190129

  2. HTTP 协议中的方法有哪些?

    • GET

      【幂等】 获取资源

    • HEAD

      【幂等】 获取报文部首,与 GET 方法类似,但是不返回报文主体部分

    • POST

      非幂等】发送请求,传输数据

    • PUT

      【幂等】更新整条记录,若数据已存在就替换,不存在就新增,

    • PATCH

      修改某些字段,即局部更新

    • DELETE

      删除某些资源

    • OPTIONS

      返回该 url 所有支持的方法

    • CONNECT

      要求在与代理服务器通信时建立隧道

    • TRACE

      回显服务器收到的请求,主要用于测试或诊断

    备注:

    1. 关于PUT和DELETE是否安全?

      Nginx之前存在安全漏洞,这两个方法可能是不安全的

      但对于后端代码来说,是否安全只取决于代码逻辑是否合理

      FROM:CSDN

  3. HTTP code 有哪些?

    • 1XX:正常,可继续发送请求或忽略

    • 2XX:成功

    • 3XX

      重定向 301 永久重定向 302 暂时重定向

    • 4XX:客户端错误

      400 Bad Request;401 Unauthorized;403 Forbidden;404 Not Found;

    • 5XX:服务器错误

      500 服务器内部错误;501服务不可用

  4. HTTP sessioncookie 有何区别?

    • Session服务器端保持状态的方案,Cookie客户端保持状态的方案。
    • session 可以采用 cookie 作为实现方案,但是不是唯一的,可以通过重写url或者隐藏表单字段实现
    • session会在一定时间内保存在服务器上,当访问增多时,会占用服务器的性能。
    • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
https 协议
  1. HTTPHTTPS 的区别?

    • 端口不同:http 为 80, https 为 443
    • http 为超文本协议,明文传输;https 运行在 SSL 上,添加了加密和认证机制,更安全
    • https 的加密解密会带来更大的内存开销
  2. https 的连接过程

    1. 客户端向服务器发送请求,同时发送客户端支持的一套加密规则(包括对称加密、非对称加密、摘要算法);
    2. 服务器从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥(用于非对称加密),以及证书的颁发机构等信息(证书中的私钥只能用于服务器端进行解密);
    3. 客户端验证服务器的合法性,包括:证书是否过期,CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配;
    4. 如果证书受信任,或者用户接收了不受信任的证书,浏览器会生成一个随机密钥(用于对称算法),并用服务器提供的公钥加密(采用非对称算法对密钥加密);使用Hash算法对握手消息进行摘要计算,并对摘要使用之前产生的密钥加密(对称算法);将加密后的随机密钥和摘要一起发送给服务器;
    5. 服务器使用自己的私钥解密,得到对称加密的密钥,用这个密钥解密出Hash摘要值,并验证握手消息是否一致;如果一致,服务器使用对称加密的密钥加密握手消息发给浏览器;
    6. 浏览器解密并验证摘要,若一致,则握手结束。之后的数据传送都使用对称加密的密钥进行加密

    总结:非对称加密算法用于在握手过程中加密生成的密码;对称加密算法用于对真正传输的数据进行加密;HASH算法用于验证数据的完整性。

  3. 输入 baidu.com,为什么变成了 https://www.baidu.com,这个过程是怎样的?

    因为有HSTS,即 HTTP Strict Transport Security。

    即访问 http 站点的时候,服务端向客户端回复的响应头上加上

    Strict-Transport-Security "max-age=63072000; include Subdomains;"
    

    这样浏览器就会自动在 max-age 指定的时间字段内,包括子域名都强制用HTTPS访问

  4. 打开bilibili.com的全过程

    1. DNS解析
    2. 浏览器请求向服务端发送建立TCP连接的请求,三次握手
    3. 如果用了 https 请求,会事先建立 SSL 安全连接
    4. 建立起 TCP 连接后,向服务端发 HTTP 请求
    5. 服务端接到请求,根据 url 给指定的处理器处理,将处理结果返回给浏览器
    6. 浏览器接收后,解析并渲染视图,遇到对静态资源的应用,则要根据在此重复上述步骤请求
    7. 浏览器根据请求到的资源渲染页面,向用户返回一个完整视图。
连接层协议
DNS 是干嘛的,过程是怎么样的?
TCP 和 UDP 的区别
为什么说 TCP 是可靠的?
TCP 的三次握手是咋样的?
TCP 的四次挥手是怎么的?
TCP 流量控制/滑动窗口 是怎样的?
TCP 拥塞控制是怎么样的?

更新中,未完待续…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值