《计算机网络》知识点总结

1. OSI七层网络模型

(1)应用层:通过应用程序间的交互来完成特定的网络应用
(2)表示层:解释交换数据的含义。该层提供的服务主要包括数据压缩,数据加密以及数据描述。
(3)会话层:负责建立、管理和终止表示层实体之间的通信会话。该层提供了数据交换的定界和同步功能,包括了建立检查点和恢复方案的方法。
(4)传输层:负责因特网中两台主机的进程提供通信服务。
(5)网络层:选择合适的网间路由和交换节点,确保数据按时成功传送。
(6)数据链路层(链路层):数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
(7)物理层:实现计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。该层的主要任务是确定与传输媒体的接口的一些特性(机械特性、电气特性、功能特性,过程特性)。

2. TCP/IP五层参考模型

(1)应用层 :为特定应用程序提供数据传输服务。
(2)传输层 :为进程提供通用数据传输服务。
(3)网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。
(4)数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。
(5)物理层 :负责比特流在传输介质上的传播。

3. 两种网络模型对比总结

在这里插入图片描述

4. 数据如何在各层之间传输

在这里插入图片描述
假设一个主机上的一个应用向另一个主机的一个应用发送数据:

(1)在发送主机端,一个应用层报文被传送到传输层。在最简单的情况下,传输层收取到报文并附上附加信息,该首部将被接收端的传输层使用。
(2)应用层报文和传输层首部信息一道构成了传输层报文段。附加的信息可能包括:允许接收端传输层向上向适当的应用程序交付报文的信息以及差错检测位信息。该信息让接收端能够判断报文中的比特是否在途中已被改变。
(3)传输层则向网络层传递该报文段,网络层增加了如源和目的端系统地址等网络层首部信息,生成了网络层数据报文。
(4)该数据报文接下来被传递给链路层,在数据链路层数据包添加发送端 MAC 地址和接收端 MAC 地址后被封装成数据帧。
(5)在物理层数据帧被封装成比特流,之后通过传输介质传送到对端。而在接收主机端,整个过程正好反过来。

5. URL组成部分

协议类型+服务器的WEB地址+web服务器上的某个资源

6. 应用程序体系架构:C/S 和 P2P

  • C/S(client/server) :客户端之间不进行通信,客户端向服务端发送请求获取数据,服务器要一直开机,需要配备大量的数据中心。比如:微信,google,bing等等。
  • P2P(peer to peer) :对等通信,不需要数据中心,没有客户端和服务端的区别,应用程序在间断连接的主机对之间直接通信。主要应用在流量密集型应用。比如:迅雷,bitTorrent,或者在局域网的文件内部共享应用中。

7. DNS域名系统

作用:将域名转换为ip地址,用于定位和识别具有底层网络协议的计算机服务和设备。

假设你要查询www.baidu.com的IP地址:浏览器 -> 本地DNS服务器 -> 根域名服务器 -> 顶级域名服务器 ->> 权威域名服务器

(1)首先会查找浏览器的缓存,看看是否能找到www.baidu.com对应的IP地址,找到就直接返回;否则进行下一步。
(2)将请求发往本地DNS服务器,如果查找到也直接返回,否则继续进行下一步;
(3)本地DNS服务器向根域名服务器发送请求,根域名服务器返回负责.com的顶级域名服务器的列表。
(4)本地DNS服务器再向其中一个顶级域名服务器发送一个请求,返回负责.baidu的权威域名服务器的列表。
(5)本地DNS服务器再向其中一个权威域名服务器发送一个请求,返回www.baidu.com所对应的IP地址。

8. 网页解析过程

(1)dns 解析:访问一个网站时,浏览器获得一个域名,通过 dns 服务将域名解析为 ip 地址。
(2)tcp 连接:与服务器通过三次握手,建立 tcp 连接。
(3)发送 http 请求:浏览器向 Web 服务器发起一个 http 请求,http 协议是建立在 tcp 协议之上的应用层协议,其本质是在建立起的 tcp连接中,按照 http 协议标准发送一个索要网页的请求。
(4)处理请求并返回:服务器获取到客户端的 http 请求后,会根据 http 请求中的内容来决定如何获取相应的文件,并将文件发送给浏览器。
(5)浏览器渲染:浏览器根据响应开始显示页面,首先解析 html 文件构建 DOM 树,然后解析 CSS 文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。
(6)断开连接:通过tcp四次挥手,客户端和服务器断开连接。
在这里插入图片描述

9. GET和POST的区别

(1)get 提交的数据会放在 url 之后,post 提交的数据放在 body 上。
(2)get请求参数会以 url 的形式完整的保留在浏览器的记录里,会存在安全问题。而 post 数据放在请求主体中,且数据不会被浏览器记录,相比 get 方法,post 方法更安全,主要用于修改服务器上的资源。

注意:http有安全方法的概念,即不改变服务器状态。 get 方法不会改变服务器状态,而 post
会改变服务器的状态,从这个角度来看,get方法更安全。 总结:get 方法对于服务器更安全,post 方法对于客户端更安全.

(3)post 可以进行复杂的加密,get 则不可以
(4)get 只支持 ASCII 字符格式的参数,而 post 方法没有限制。
(5)get 提交的数据大小有限制(这里所说的限制是针对浏览器而言的),而 post 方法提交的数据理论上没限制
(6)get 方法具有幂等性,post 方法不具有。

幂等性,同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。

(7)post方法有时会发送两个 tcp 数据包,与浏览器有关

10. WebSocket与socket的区别

Socket是一套标准,它完成了对TCP/IP的高度封装,屏蔽网络细节,以便开发者更好地进行网络编程。
Socket等于IP地址 + 端口 + 协议

WebSocket是一个持久化的协议,它是伴随H5而出的协议,用来解决HTTP不支持持久化连接的问题。

Socket是一个网络编程的标准接口,而WebSocket则是应用层通信协议。

11. TCP三次握手机制

在这里插入图片描述
为了确保客户端和服务端都能正常发送和接收数据。三次握手是从客户端开始。

握手前状态:客户端和服务端都是处于连接关闭状态。服务端首先处于 listen 状态,等待客户端连接,然后就进入三次握手。

(1)客户端向服务端发送一个SYN(synchronize)包,随后客户端进入SYN-SENT 阶段。

  • 标志位为 SYN:表示请求建立连接;
  • 序列号为 Seq = x(x 一般为随机数);

(2)服务端收到客户端发送SYN包后,对该包进行确认后结束 LISTEN 阶段,并返回一段 TCP 报文,随后服务器端进入 SYN-RECV(同步接收) 阶段。

  • 标志位为 SYN 和 ACK:表示确认客户端的报文 Seq 序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接;
  • 序号为 Seq = y,将自己的初始序列号同步给客户端。
  • 确认号为 Ack = x + 1,表示收到客户端的序号 Seq 并将其值加 1 作为自己确认号 Ack 的值,告诉客户端自己接收的Seq没错;

(3)客户端接收到发送的 SYN + ACK 包后,明确了从客户端到服务器的数据传输是正常的,从而结束 SYN-SENT 阶段。并返回最后一段报文,随后客户端进入 ESTABLISHED状态。

  • 标志位为 ACK,表示确认收到服务器端同意连接的信号;
  • 序号为 Seq = x + 1,表示收到服务器端的确认号 Ack,并将其值作为自己的序号值;
  • 确认号为 Ack= y + 1,表示收到服务器端序号 seq,并将其值加 1 作为自己的确认号 Ack 的值。

(4)当服务器端收到来自客户端确认收到服务器数据的报文后,得知从服务器到客户端的数据传输是正常的,从而结束 SYN-RECV 阶段,进入 ESTABLISHED 阶段,从而完成三次握手。

12. TCP为什么是三次握手?

三次握手是为了确认客户端和服务端都可以正常发送接收数据;

  • 第一次握手:确认客户端可以正常发送数据。
  • 第二次握手:确认客户端可以正常发送数据,确认服务端可以正常接收数据。
  • 第三次握手:确认客户端可以正常发送数据,确认服务端可以正常接收数据,确认服务端可以正常发送数据,服务可以正常接收数据。

13. 三次握手中每一次没有收到报文会发生什么情况?

第一次握手服务端未收到 SYN 报文

服务端不会进行任何的动作,而客户端由于一段时间内没有收到服务端发来的确认报文,等待一段时间后会重新发送 SYN 报文,如果仍然没有回应,会重复这个过程,直到发送次数超过最大重传次数,就会返回连接建立失败。

第二次握手客户端未收到服务端响应的 ACK 报文

因为第二次握手是包含对客户端第一次握手的 ACK 确认报文,所以如果客户端迟迟没有收到第二次握手,那么客户端就会觉得可能是自己的 SYN 报文(第一次握手)丢失了,于是客户端就会触发超时重传机制,重传 SYN 报文。

然后,因为第二次握手是包含服务端的 SYN 报文,所以当客户端收到后,需要给服务端发送 ACK 确认报文(第三次握手),服务端才会认为该 SYN 报文被客户端收到了。

那么,如果第二次握手丢失了,服务端就收不到第三次握手,于是服务端这边会触发超时重传机制,重传 SYN-ACK 报文。

第三次握手服务端未收到客户端发送过来的 ACK 报文

客户端收到服务端的 SYN-ACK 报文后,就会给服务端发送一个 ACK 报文,也就是第三次握手,此时客户端进入到 ESTABLISH(连接已建立) 状态。

因为这个第三次握手的 ACK 是对第二次握手的 SYN 的确认报文,所以当第三次握手丢失了,如果服务端那一方迟迟收不到这个确认报文,就会触发超时重传机制,重传 SYN-ACK 报文,直到收到第三次握手,或者达到最大重传次数。

14. 第二次握手传回了ACK,为什么还需要SYN

ACK 是为了告诉客户端传来的数据已经接收无误。
而传回 SYN 是为了告诉客户端,服务端响应的确实是客户端发送的报文。

15. TCP四次挥手的过程

  • 数据传输结束后,通信双方都可以主动发起断开连接请求,这里假定客户端发起。
  • 客户端发送释放连接报文,进行第一次挥手(FIN=1,ACK=1,seq=u,ack=v),发送完毕后,客户端进入 FIN_WAIT_1(终止等待1) 状态。
  • 服务端发送确认报文,进行第二次挥手(ACK=1,seq =v,ack=u+1),发送完毕后,服务端进入 CLOSE_WAIT(关闭等待)
    状态,客户端收到这个确认包后,进入 FIN_WAIT_2(终止等待2) 状态。
  • 服务端发送释放连接报文,进行第三次挥手(FIN=1,ACK1,seq=w,ack=u+1),发送完毕后,服务端进入LAST_ACK(最后确认)
    状态,等待来自客户端的最后一个 ACK 报文。
  • 客户端发送确认报文,进行第四次挥手(ACK=1,seq=u+1,ack=w+1),客户端收到来自服务端的关闭请求,发送一个确认包,并进入 TIME_WAIT(时间等待) 状态,服务端接收到这个确认包后,关闭连接,进入 CLOSED(关闭) 状态。
  • 客户端再经过 2MSL 后,也进入 CLOSED(关闭) 状态。
    在这里插入图片描述

16. 为什么需要四次挥手?

确认双方都得知双方都没有要传输的数据。

(1)第一次挥手:客户端向服务端请求关闭连接。

  • 客户端:客户端无数据传输。
  • 服务端:无感知。

(2)第二次挥手:服务端收到客户端的请求,并且告知客户端等我处理完毕数据。

  • 客户端:客户端无数据传输。
  • 服务端:客户端无数据传输。

(3)第三次挥手:服务端处理完毕数据,告知客户端,服务端数据处理完毕。

  • 客户端:客户端无数据传输,服务端无数据传输。
  • 服务端:客户端无数据传输,服务端无数据传输。

(4)第四次挥手:客户端得知服务端数据处理完毕,双方数据都处理完毕,可断开连接。

  • 客户端:客户端无数据传输,服务端无数据传输。
  • 服务端:客户端无数据传输,服务端无数据传输,得知客户端知道服务端无数据传输。

(5)客户端服务端的状态变化

  1. 客户端状态

    1. ESTABLISHED四次挥手前,处于连接状态。
      • 发送第一次挥手请求。
    2. FIN-WAIT-1:客户端从连接状态变成等待断开连接状态。
      • 收到第二次挥手请求。
    3. FIN-WAIT-2:确认服务端收到了第一次握手请求。
      • 收到第三次挥手请求。
      • 发送第四次挥手请求。
    4. TIME-WAIT:确认服务端数据处理完毕,等待一段时间后断开连接。
    5. CLOSE:断开连接状态。
  2. 服务端状态

    1. ESTABLISHED四次挥手前,处于连接状态。
      • 收到第一次挥手请求。
      • 发送第二次挥手请求。
    2. CLOSE-WAIT:告知客户端收到挥手请求,进入等待断开连接状态,将未发送的数据发送出去。
      • 发送第三次挥手请求。
    3. LAST-ACK:告知客户端数据都已经处理完毕。
      • 收到第四次挥手请求。
    4. CLOSE:确认客户端收到第三次挥手请求,断开连接。

16.为什么等待之后才关闭连接?

客户端在发送完最后一个确认报文后,为什么不直接进入关闭状态 ? 而是要进入时间等待状态,2MSL 后才进入关闭状态,这是否有必要呢 ?
服务端发送TCP连接释放报文段后进入最后确认状态。

客户端收到该报文段后,发送普通的TCP确认报文段,并进入关闭状态而不是时间等待状态。然而,该TCP确认报文段丢失了。

这必然会造成服务端对之前所发送的TCP连接释放报文段的超时重传,并仍处于最后确认状态。重传的TCP连接释放报文段到达客户端,由于客户端处于关闭状态,因此不理睬该报文段,这必然会造成服务端反复重传TCP连接释放报文段,并一直处于最后确认状态而无法进入关闭状态。

因此时间等待状态以及处于该状态2MSL时长,可以确保服务端可以收到最后一个TCP确认报文段而进入关闭状态。

另外,客户端在发送完最后一个TCP确认报文段后,再经过2MSL时长,就可以使本次连接持续时间内所产生的所有报文段都从网络中消失,这样就可以使下一个新的TCP连接中,不会出现旧连接中的报文段。

17. 为什么等待时间是2MSL?

MSL 是报⽂最⼤⽣存时间,它是任何报⽂在⽹络上存在的最⻓时间,超过这个时间报⽂将被丢弃。

TIME_WAIT 等待 2 倍的 MSL,是因为⽹络中可能存在来⾃发送⽅的数据包,当这些发送⽅的数据包被接收⽅处理后⼜会向对⽅发送响应,所以⼀来⼀回需要等待 2 倍的时间。

⽐如服务端如果没有收到客户端发送的TCP确认报文段,就会触发超时重传,重新发送TCP连接释放报文段,客户端收到后,会重发TCP确认报文段给服务端, ⼀来⼀去正好 2 个 MSL。

18. TCP如何保证可靠传输?

TCP主要提供了 连接管理、校验和、序列号/确认应答、流量控制、最大消息长度、超时重传、拥塞控制等方式实现了可靠传输。

连接管理:TCP 使用三次握手和四次挥手来保证可靠地建立连接和释放连接。

校验和:用来检查整个 TCP 报文段在传输过程中是否出现了误码。

序列号/确认应答:TCP 会给发送的每一个包进行编号,接收方会对收到的包进行应答,发送方就会知道接收方是否收到对应的包,如果发现没有收到,就会重发,这样就能保证数据的完整性了。

流量控制:TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据大小。当接收方来不及处理发送方的数据时,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。(TCP 利用滑动窗口实现流量控制)

最大消息长度:在建立 TCP 连接的时候,双方约定一个最大的长度(MSS)作为发送的单位,重传的时候也是以这个单位来进行重传的。理想情况下是该长度的数据刚好不被网络层分块。

超时重传:ARQ自动重传协议,超时重传是指发送出去的数据包到接收到确认包之间的时间,如果超过了这个时间,就会被认为是丢包了,需要重传。

拥塞控制:如果网络非常拥堵,此时再发送数据就会加重网络负担,那么发送的数据段很可能超过了最大生存时间也没有到达接收方,就会产生丢包问题。为此 TCP 引入了慢启动机制,先发出少量数据,就像探路一样,先摸清当前的网络拥堵状态后,再决定按照多大的速度传送数据。

19. TCP流量控制

TCP 提供了一种机制,可以让发送方根据接收方的实际接收能力控制发送的数据量,这就是流量控制。

TCP 通过「滑动窗口」来实现流量控制

  1. 首先 TCP 双方进行三次握手,初始化各自的窗口大小,均为 400 字节;
  2. 假如当前发送方给接收方发送了 200 字节,那么,发送方的SND.NXT会右移 200 字节,也就是说当前的可用窗口减少了 200 字节。
  3. 接收方收到后,放到缓冲队列里面,REV.WND = 400-200=200 字节,所以 win=200 字节返回给发送方。接收方会在 ACK 的报文首部带上缩小后的滑动窗口 200 字节
  4. 发送方又发送 200 字节过来,200 字节到达,继续放到缓冲队列里面。不过这时候,由于大量负载的原因,接收方处理不了这么多字节,只能处理 100 字节,剩余的 100 字节继续放到缓冲队列里面。这时候,REV.WND = 400-200-100=100 字节,即 win=100 字节返回给发送方。
  5. 发送方继续发送 100 字节过来,这时候,接收窗口 win 变为 0。
  6. 发送方停止发送,开启一个定时任务,每隔一段时间,就去询问接收方,直到 win 大于 0,才开始继续发送。

20.TCP和UDP的区别

  1. TCP是面向连接的,UDP是面向无连接的;
  2. TCP只能一对一通信,UDP支持一对一,一对多,多对一和多对多交互通信;
  3. TCP是面向字节流的,UDP是面向报文的;
  4. TCP是可靠传输,使用流量控制和拥塞控制;UDP是不可靠传输;
  5. TCP首部最小20字节,最大60字节;UDP首部仅8字节。

21. 五类IP地址

  • A 类地址:由 1 字节的网络地址和 3 字节的主机地址组成,一个A类网络内理论上有 2e24个 ip 地址,为大型网络设计的。

网络号范围为 0 - 127,其中 0 代表任何地址,127 为回环测试地址。

  • B 类地址:由 2 个字节的网络地址和 2 个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从 128.0.0.0 到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。

  • C类地址:由 3 字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从 192.0.0.0 到 223.255.255.255。C类网络可达
    2e21(209 万余)个 IP 地址,每个网络能容纳 254 个主机。

  • D 类地址:用于多点广播(Multicast),它标识一组计算机共享同一协议,可以一次性寻址多个接收者。D 类地址的第一个字节以“1110”开始,范围从 224.0.0.0 到 239.255.255.255。这些地址被保留用于多点广播,不会分配给特定的网络或主机。

  • E 类地址:以“11110”开始,为将来使用保留。

全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

在 IP 地址 3 种主要类型里,各保留了 3 个区域作为私有地址,其地址范围如下:
A 类地址:10.0.0.0~10.255.255.255
B 类地址:172.16.0.0~172.31.255.255
C 类地址:192.168.0.0~192.168.255.255

22. nat 协议和 IPV6 协议

  • nat 协议:网络地址转换协议,将内网地址转为公网IP的协议,实现多层网络地址转换;
  • ipv6:使用128位二进制数字作为IP地址;

区别:
(1)速度:私有IP访问公网内容时,需要经过多层网络,多次转换,速度较慢,时延较高;而ipv6直接通过公网IP访问,速度较快,时延较低;
(2)兼容性:nat协议在ipv4基础上使用,完全兼容ipv4网络设备;IPV6是在ipv4基础上发展而来,兼容ipv4协议;
(3)安全性:nat协议中的公网服务需要穿过多层网络才能进行,较为安全;而IPV6协议中是直接暴露在公网中,直接被访问,安全性较低;

23. ARP协议

arp(address resolution protocol) 地址解析协议:根据主机的ip 地址获取主机的mac 地址。每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。

有两台计算机 A 和 B 在局域网内通过以太网电缆和网络交换机相互连接,中间没有网关或路由器。A 有一个数据包要发送给 B,它确定 B 的 IP 地址,为了发送消息,它还需要 B 的 mac 地址。首先,A 使用缓存的 ARP 表根据 B 的 ip 地址查找 mac 地址,如果找到MAC 地址,就可以发送消息。如果没有,A 就会发送一个局域网广播的 ARP 请求 B 的 MAC的,这个消息被局域网内所有的计算机接受,B 返回一个包含 MAC 和 IP 地址的 ARP 响应消息。作为响应请求的一部分,B 可以将 A 的一个条目插入到它的 ARP 表中,以备将来使用。

24. ICMP协议

icmp(internet control message protocol) 因特网控制报文协议 ,主要是实现 IP 协议中未实现的部分功能,是一种网络层协议。该协议并不传输数据,只传输控制信息来辅助网络层通信。其主要的功能是验证网络是否畅通(确认接收方是否成功接收到 IP 数据包)以及辅助 IP 协议实现可靠传输(若发生 IP 丢包,ICMP 会通知发送方 IP 数据包被丢弃的原因,之后发送方会进行相应的处理。ping 和 traceroute 都是通过 icmp 协议实现的。

ping(packet internet groper):即因特网包探测器,是一种工作在网络层的服务命令,主要用于测试网络连接质量。
traceroute:其主要用来跟踪一个分组从源点耗费最少 TTL到达目的地的路径。

25. 封装成帧、透明传输、差错检测

  • 封装成帧:将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
  • 透明传输:帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
  • 差错检测:数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。

26. MAC地址与IP地址的关系

  • MAC 地址是数据链路层和物理层使用的地址,是写在网卡上的物理地址。MAC 地址用来定义网络设备的位置。
  • IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。IP 地址用来区别网络上的计算机。
  • 互联网中主机之间相互传递数据的逻辑是,先通过 ip 地址找到对应的局域网,然后再找到对应的主机。
  • 如果只采用 ip 地址,不用mac 地址:不安全, 同一个ip 地址可能绑定多个主机,而无论何时mac 地址和主机是一一对应的。
  • 如果只采用mac 地址,不用ip 地址:没有办法使用ip 通过网段寻找目标主机,需要在全网段内没有规律的找一个主机,效率太慢。

27. 单工通信、半双工通信、全双工通信

  • 单工通信:单向通信,发送方和接收方是固定的,消息只能单向传输。例如采集气象数据、家庭电费,网费等数据收集系统,或者打印机等应用主要采用单工通信。
  • 半双工通信:也叫双向交替通信,通信双方都可以发送消息,但同一时刻同一信道只允许单方向发送数据。例如传统的对讲机使用的就是半双工通信。
  • 全双工通信:也叫双向同时通信,全双工通信允许通信双方同时在两个方向上传输,其要求通信双方都具有独立的发送和接收数据的能力。例如平时我们打电话,自己说话的同时也能听到对面的声音。

28. 信道复用技术

  • 频分复用 (FDM,Frequency Division Multiplexing)

频分复用是将信道的总带宽划分为多个独立的子带宽,并将不同的信号分配到不同的子带宽中进行传输。每个子带宽可以看作是一个独立的信道。频分复用广泛应用于无线通信、有线电视等领域。

  • 时分复用 (TDM,Time Division Multiplexing)

时分复用是将时间分为若干个时隙,将不同信号分配到不同的时隙中进行传输。每个时隙可以看作是一个独立的信道。时分复用可以应用于有线和无线通信系统,如电话系统、数字信号传输等。

  • 波分复用 (WDM,Wavelength Division Multiplexing)

波分复用主要应用于光纤通信,通过将光信号分为不同的波长进行传输,实现在同一光纤中同时传输多路信号。波分复用可以大大提高光纤的传输容量,降低传输成本。

  • 码分复用 (CDM,Code Division Multiplexing)

码分复用又称为码分多址(CDMA,Code Division Multiple Access),它通过使用不同的码片序列对信号进行编码和解码,实现信号在同一信道上的同时传输。码分复用具有抗干扰能力强、频谱利用率高等特点,广泛应用于移动通信、卫星通信等领域

29. DOS攻击和DDOS攻击

DoS(Denial of Service,拒绝服务) 攻击和 DDoS(Distributed Denial of Service,分布式拒绝服务)攻击都是网络安全领域常见的攻击手段。它们的目的是通过消耗目标系统的资源(如带宽、处理能力、内存等),使目标系统无法正常提供服务。

  • DoS 攻击:DoS 攻击通常由单个攻击者发起,通过向目标系统发送大量请求或特制的恶意数据包,使目标系统的资源耗尽,从而导致正常用户无法访问目标系统。常见的 DoS 攻击类型包括 SYN Flood、ICMP Flood、UDP Flood 等。DoS 攻击的缺点是攻击者的IP地址容易被识别,从而受到追踪和制裁。
  • DDoS 攻击:DDoS 攻击是 DoS攻击的一种升级形式,它利用多个受控制的计算机(僵尸网络)同时发起攻击,使攻击更难以防御和追踪。DDoS攻击可以同时从多个方向消耗目标系统的资源,导致目标系统瘫痪。由于涉及的攻击来源众多,DDoS 攻击的防御难度要大于DoS 攻击。 防御DoS 和 DDoS 攻击的方法包括:
  • 限制单个 IP地址的请求速率。
  • 使用防火墙、入侵检测系统(IDS)和入侵预防系统(IPS) 等安全设备。
  • 采用负载均衡技术分散请求压力。
  • 与互联网服务提供商(ISP)合作,进行流量清洗和封锁恶意IP 地址。

DoS 和DDoS 攻击对网络安全造成严重威胁,需要采取综合性措施进行防范和应对

30. ARP攻击

ARP 攻击就是攻击者通过伪造 ARP 请求和应答报文,使目标设备与网络中其他设备之间的通信受到干扰,从而达到窃取、篡改数据或拒绝服务的目的。常见的 ARP 攻击类型有:

  1. ARP 欺骗(ARP Spoofing):攻击者向网络中的设备发送伪造的 ARP 应答报文,使得目标设备将攻击者的 MAC地址与一个错误的IP 地址绑定。这样,目标设备在与错误 IP 地址通信时,实际上会将数据发送给攻击者。
  2. ARP中间人攻击(Man-in-the-Middle Attack):攻击者向两台通信设备发送伪造的 ARP应答报文,使它们分别将攻击者的 MAC 地址与对方的IP地址绑定。这样,攻击者可以截获、窃取、篡改这两台设备之间的通信数据,实现中间人攻击。

防御 ARP 攻击的方法包括:

  • 静态 ARP 表:在网络设备上配置静态 ARP 表,将 IP 地址和 MAC 地址的对应关系固定下来,使攻击者无法通过伪造 ARP
    报文篡改地址映射关系。
  • ARP 防护设备:部署 ARP 防护设备,如防火墙、入侵检测系统(IDS)等,以监控和阻止异常 ARP 报文。
  • 动态 ARP 检查(Dynamic ARP Inspection,DAI):在交换机上启用 DAI 功能,检查通过交换机的 ARP
    报文,验证其 IP 地址和 MAC 地址的对应关系,拦截异常 ARP 报文。

31. AES和RSA

AES(Advanced Encryption Standard,高级加密标准) 和 RSA(由发明者Rivest、Shamir、Adleman的姓氏首字母组成)都是密码学中广泛使用的加密算法,但它们的加密原理和应用场景有所不同。

AES : AES 是一种对称加密算法,即加密和解密使用相同的密钥。AES 的密钥长度可以选择 128 位、192 位或 256 位。AES的加密过程包括多轮的重复操作,包括置换、替换、行移位和列混合等。AES算法具有较高的安全性和运算效率,广泛应用于保护数据的机密性。

RSA: RSA 是一种非对称加密算法,即加密和解密使用一对不同的密钥,分别称为公钥和私钥。公钥用于加密数据,私钥用于解密数据。RSA算法的安全性基于大数分解问题,密钥长度通常选择 1024 位、2048 位或更长。RSA 算法用于保护数据的机密性、确保数据的完整性和实现数字签名等功能。

AES 和 RSA 的主要区别如下:

  • 对称加密与非对称加密:AES 是对称加密算法,加密和解密使用相同的密钥;而RSA 是非对称加密算法,加密和解密使用不同的密钥。
  • 效率:AES 加密和解密的运算速度较快,消耗资源较少;而 RSA 算法由于涉及大数计算,运算速度较慢,消耗资源较多。
  • 应用场景:AES 适用于加密大量数据,如文件加密、网络通信加密等;RSA 常用于加密较小的数据,如密钥交换、数字签名等。

在实际应用中,AES 和 RSA 经常结合使用,以充分发挥各自的优势。例如,在安全通信中,先使用 RSA 算法交换 AES 密钥,然后使用 AES 密钥加密通信数据,实现高效且安全的数据传输。

32、设计模式

这里是新的一个大章节,用来记录计算机网络中的设计模式的章节。好像Java中问得多,但是之前做测试的笔试题目也有遇到过。

序号模式&描述包括
1创建型模式:这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)
2结构型模式:这些模式关注对象之间的组合和关系,旨在解决如何构建灵活且可复用的类和对象结构。适配器模式(Adapter Pattern)桥接模式(Bridge Pattern)过滤器模式(Filter、Criteria Pattern)组合模式(Composite Pattern)装饰器模式(Decorator Pattern)外观模式(Facade Pattern)享元模式(Flyweight Pattern)代理模式(Proxy Pattern)
3行为型模式:这些模式关注对象之间的通信和交互,旨在解决对象之间的责任分配和算法的封装。责任链模式(Chain of Responsibility Pattern)命令模式(Command Pattern)解释器模式(Interpreter Pattern)迭代器模式(Iterator Pattern)中介者模式(Mediator Pattern)备忘录模式(Memento Pattern)观察者模式(Observer Pattern)状态模式(State Pattern)空对象模式(Null Object Pattern)策略模式(Strategy Pattern)模板模式(Template Pattern)访问者模式(Visitor Pattern)
4J2EE 模式:这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。MVC 模式(MVC Pattern)业务代表模式(Business Delegate Pattern)组合实体模式(Composite Entity Pattern)数据访问对象模式(Data Access Object Pattern)前端控制器模式(Front Controller Pattern)拦截过滤器模式(Intercepting Filter Pattern)服务定位器模式(Service Locator Pattern)传输对象模式(Transfer Object Pattern)

设计模式六大原则

  1. 开闭原则(Open Close Principle)

    开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

  2. 里氏代换原则(Liskov Substitution Principle, LSP)

    里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现LSP是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

  3. 依赖倒转原则(Dependence Inversion Principle)

    这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体

  4. 接口隔离原则(Interface Segregation Principle)

    这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合

  5. 迪米特法则,又称最少知道原则(Demeter Principle)

    最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

  6. 合成复用原则(Composite Reuse Principle)

    合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。

(1)工厂模式

https://www.runoob.com/design-pattern/factory-pattern.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值