计算机网络常见问题2

计算机网络常见问题

1. 对路由协议的了解与介绍。内部网关协议IGP包括RIP,OSPF,和外部网关协议EGP和BGP.

  • A

    路由协议是指在计算机网络中用于确定数据包如何从源节点传输到目标节点的规则集合。常见的路由协议包括内部网关协议(IGP)和外部网关协议(EGP)。

    1. 内部网关协议(IGP)
      • RIP(路由信息协议):RIP是一种基于距离向量的路由协议,使用跳数作为度量标准。每隔一段时间,路由器会向相邻路由器发送路由更新信息。RIP“路由信息协议(Route Information Protocol)”的简写,主要传递路由信息,通过每隔30秒广播一次路由表,维护相邻路由器的位置关系,同时根据收到的路由表信息使用动态规划的方式计算自己的路由表信息。RIP是一个距离矢量路由协议,最大跳数为16跳,16跳以及超过16跳的网络则认为目标网络不可达。
      • OSPF(开放最短路径优先):OSPF是一种基于链路状态的路由协议,使用最短路径优先算法(Dijkstra算法)计算最佳路由。OSPF支持VLSM(可变长度子网掩码)和路由聚合。
    2. 外部网关协议(EGP)
      • EGP(外部网关协议):EGP是一种早期的外部网关协议,已经不再广泛使用。
      • BGP(边界网关协议):BGP是一种路径矢量协议,用于在不同自治系统之间交换路由信息。BGP是互联网核心路由协议,负责在全球范围内的路由选择。

    这些协议在计算机网络中起着至关重要的作用,帮助数据包在网络中正确快速地传

UDP如何实现可靠传输

因为UDP是无连接的协议,所以在传输层上无法保证可靠传输,要想实现可靠传输,只能从应用层实现。需要实现seq/ack机制,重传机制和窗口确认机制。

就要接收方收到UDP之后回复个确认包,发送方有个机制,收不到确认包就要重新发送,每个包有递增的序号,接收方发现中间丢了包就要发重传请求,当网络太差时候频繁丢包,防止越丢包越重传的恶性循环,要有个发送窗口的限制,发送窗口的大小根据网络传输情况调整,调整算法要有一定自适应性。

2. 流量控制的介绍,采用滑动窗口会有什么问题(死锁可能,糊涂窗口综合征)?

所谓流量控制就是让发送方发送速率不要过快,让接收方来得及接收。利用TCP报文段中的窗口大小字段来控制发送方的发送窗口不大于接收方发回的窗口大小就可以实施流量控制。

考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送放将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零窗口大小的报文,但是这个报文在中途丢失的,那么发送方的发送窗口就一直为零导致死锁。

解决这个问题,TCP为每一个连接设置一个持续计时器(persistence timer)。只要TCP的一方收到对方的零窗口通知,就启动该计时器,周期性的发送一个零窗口探测报文段。对方就在确认这个报文的时候给出现在的窗口大小(注意:TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段)。

3. 一个机器能够使用的端口号上限是多少,为什么?可以改变吗?那如果想要用的端口超过这个限制怎么办?

  1. 因为TCP的报文头部中源端口号和目的端口号的长度是16位,也就是可以表示2^16=65536个

不同端口号,因此TCP可供识别的端口号最多只有65536个。但是由于0到1023是知名服务端口,所以实际上还要少1024个端口号。

而对于服务器来说,可以开的端口号与65536无关,其实是受限于Linux可以打开的文件数量,并且可以通过MaxUserPort来进行配置

4. 对称密码和非对称密码体系

https://blog.csdn.net/qq_29689487/article/details/81634057

  • 对称加密:加密和解密使用的密钥是同一个
    • 优点:计算量小,算法速度快,加密效率高
    • 缺点:密钥容易泄漏。不同的会话需要不同的密钥,管理起来很费劲
    • 常用算法:DES,3DES,IDEA,CR4,CR5,CR6,AES
  • 非对称加密:需要公钥和私钥,公钥用来加密,私钥用来解密
    • 优点:安全,不怕泄漏
    • 缺点:速度慢
    • 常用算法:RSA,ECC,DSA

5. 数字证书的了解(高频)

权威CA使用**私钥将网站A的信息和消息摘要(签名S)**进行加密打包形成数字证书。

公钥给客户端。

网站A将自己的信息和数字证书发给客户端,客户端用CA的公钥对数字证书进行解密,得到签名S,与手动将网站的信息进行消息摘要得到的结果S*进行对比,如果签名一致就证明网站A可以信任。

6. 消息摘要算法列举一下,介绍MD5算法,为什么MD5是不可逆的,有什么办法可以加强消息摘要算法的安全性让它不那么容易被破解呢?(百度安全一面)

  • 消息摘要算法有MD家族(MD2,MD4,MD5),SHA家族(SHA-1,SHA-256)和CRC家族(CRC8,CRC16,CRC32)等等

  • MD5算法介绍:

    MD5以512位分组来处理输入的信息,且每一分组又被划分为若干个小分组(16个32位子分组),经过一些列的处理后,算法输出由四个散列值(32位分组组成的128位散列值。)

  1. MD5首先将输入的信息分成若干个512字节长度的分组,如果不够就填充1和若干个0。
  2. 对每个512字节的分组进行循环运算。使用四个幻数对第一个分组的数据进行四轮变换,得到四个变量。
  3. 接下来对其中三个使用线性函数进行计算,与剩下一个相加,并赋值给其中某个变量,得到新的四个变量,重复16次这个过程,得到的四个变量作为幻数,与下一个分组进行相似的计算。
  4. 遍历所有分组后得到的四个变量即为结果。

详见:https://blog.csdn.net/weixin_39640298/article/details/84555814

  • 为什么不可逆:因为MD5在进行消息摘要的过程中,数据与原始数据相比发生了丢失,所以不能由结果进行恢复。
  • 加强安全性:加盐(加随机数)

7. 单条记录高并发访问的优化

服务器端:

  • 使用缓存,如redis
  • 使用分布式架构进行处理
  • 将静态页面和静态资源存储在静态资源服务器,需要处理的数据使用服务器进行计算后返回
  • 静态资源尽可能在客户端进行缓存
  • 采用ngnix进行负载均衡 (nginx读作恩静埃克斯 = Engine X

数据库端:

  • 数据库采用主从赋值读写分离措施
  • 建立适当的索引
  • 分库分表

8. 介绍一下ping的过程,分别用到了哪些协议 (百度安全等)

详见:Ping原理与ICMP协议

ping是使用ICMP协议来进行工作的。 ICMP:网络控制报文协议

  • 首先,ping命令会构建一个ICMP请求数据包,然后由ICMP协议将这个数据包连同目的IP地址源IP地址一起交给IP协议。
  • 然后IP协议就会构建一个IP数据报,并且在映射表中查找目的IP对应的mac地址,将其交给数据链路层。
  • 然后数据链路层就会构建一个数据帧,附上源mac地址和目的mac地址发送出去。

目的主机接收到数据帧后,就会检查包上的mac地址与本机mac是否相符,如果相符,就接收并把其中的信息提取出来交给IP协议,IP协议就会将其中的信息提取出来交给ICMP协议。然后构建一个ICMP应答包,用相同的过程发送回去。

9. TCP/IP的粘包与避免介绍一下

因为TCP为了减少额外开销,采取的是流式传输,所以接收端在一次接收的时候有可能一次接收多个包。而TCP粘包就是发送方的若干个数据包到达接收方的时候粘成了一个包。多个包首尾相接,无法区分。

导致TCP粘包的原因有三方面:

  • 发送端等待缓冲区满才进行发送,造成粘包
  • 接收方来不及接收缓冲区内的数据,造成粘包
  • 由于TCP协议在发送较小的数据包的时候,会将几个包合成一个包后发送

避免粘包的措施:

  • 通过编程,强制使TCP发生数据传送,不必等到缓冲区满
  • 优化接收方接收数据的过程,使其来得及接收数据包,包括提高接收进程优先级
  • 设置固定长度的报文 或者 设置报文头部指示报文的长度

10. 说一下TCP的封包和拆包

因为TCP是无边界的流传输,所以需要对TCP进行封包和拆包,确保发送和接收的数据不粘连。

  • 封包:封包就是在发送数据报的时候为每个TCP数据包加上一个包头,将数据报分为包头和包体两个部分。包头是一个固定长度的结构体,里面包含该数据包的总长度。
  • 拆包:接收方在接收到报文后提取包头中的长度信息进行截取。
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy