计算机网络面试知识点
2021-02-26 13:33:50 # 总结

计算机网络面试知识点

备注:应该把CS438的手写笔记重新整理一遍的。。。拖延症啊拖延症。

概述

五层:应用层,传输层,网络层,链接层,物理层

问TCP/IP协议族就是问

应用层

HTTPS的CA证书认证过程

大致过程:

  1. 浏览器从服务器拿到证书。证书上有服务器的公钥和CA机构打上的数字签名。
  2. 拿到证书后验证其数字签名。具体就是,根据证书上写的CA签发机构,在浏览器内置的根证书里找到对应的公钥,用此公钥解开数字签名,得到摘要(digest,证书内容的hash值),据此验证证书的合法性。

多说两句https接下来的加密过程:

  1. 验证完合法性后,在证书里取出服务器的公钥。浏览器生成对称密钥。
  2. 使用服务器公钥对该对称密钥加密,发回给服务器。服务器使用私钥解密,得到对称密钥。
  3. 服务器使用该对称密钥加密后续http数据。使用对称密钥加密是因为比非对称加密高效。

HTTP和HTTPS的区别

  1. 端口 :HTTP默认使用端口80,而HTTPS默认使用端口443。

  2. 安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都 无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS 运行在TCP之上。所有 传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称 加密。所以说,HTTP 安全性没有 HTTPS高,但是 HTTPS 比HTTP耗费更多服务器资源。

    对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密 算法有DES、AES等;

    非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥), 加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称 加密速度􏰃慢,典型的非对称加密算法有RSA、DSA等。

在浏览器中输入url地址 ->> 显示主⻚的过程

  1. DNS解析
  2. TCP连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染⻚面
  6. 连接结束

传输层

TCP和UDP的区别

  1. 基于连接和无连接;
  2. TCP是可靠,保证数据正确;UDP不可靠,不保证数据正确;
  3. TCP保证数据顺序到达;UDP不保证数据顺序到达;
  4. TCP速度慢,因为TCP必须创建连接;UDP速度较快,不需要建立连接;
  5. 因为上述开销,TCP是一个重量级协议;UDP是一个轻量级的协议;
  6. 一个TCP数据包报头的大小是20字节;一个UDP数据报报头是8个字节;
  7. TCP有流量控制和拥塞控制;UDP不能进行流量控制;
  8. TCP面向字节流;UDP面向报文;
  9. 应用场景不同,TCP适合对效率要求相对低,但对准确性要求相对高或者是有连接的场景,TCP一般用于文件传输(HTTP,HTTPS,FTP等协议),邮件(POP,SMTP等协议),远程登录等场景;UDP更适合对效率要求相对高,对准确性要求相对低的场景,UDP一般用于即时通信(QQ聊天),在线视频(rtsp流速度一定要快,偶尔丢包没关系),网络语音电话等场景;

TCP为什么不能有两次握手

因为需要同步好起始的seq number。注意这里关于序列号的问题,抽空自己总结一下。详见传送门

TCP为什么不能只有三次挥手

因TCP是全双工的,当FIN接收方收到时,还有可能继续发送信息,所以,中间的那两次不能合并。

网络层

网络层内容看这篇Blog就够了。传送门

网络层呢,干的事情主要是有两个,一个是Routing,一个是Forwarding。相关协议有NAT协议,ICMP协议,BGP协议,RIP协议,OSPF协议。

链接层(待完善,这里先写点大概)

链接层主要做的事情就是把network层规划好的内容,具体实际应该是如何传输的。我们如何把一个packet传到下一站?

IP层包的格式(datagram)

ARP协议(Address Resolution Protocol)

这个协议主要是把IP地址转化为MAC address,A维护一个ARP table,然后broadcast一个ARP query包,这个包包含了B的IP,如果把Dest MAC address设为FF-FF-FF-FF-FF-FF,那么所有的人都收到这个ARP包,如果B收到了ARP包以后,发现自己符合要求,就返回一个包含了自己MAC address的内容回去。(具体如何防止攻击这个没考虑过)

MAC Protocol

这个就分为很多种了。

Channel Partitioning

FDMA,TDMA。分时复用或者分频复用。以及其他。

Random Partitioning

比如ALOHA,slotted ALOHA,CSMA/CD算法,目的是找到碰撞,然后把包发出去。更加难的是wireless的情况下是如何发包的。CSMA/CD的那个状态转换图。

Taking Turns

大家用一个key去轮流发。