当前位置: 首页 > news >正文

TCP/UDP协议

1. 请解释TCP和UDP的主要区别。

TCP和UDP都是位于传输层的协议,具有不同的特点和应用场景。以下是它们的主要区别:

  1. 连接方式:TCP是面向连接的协议,这意味着在数据传输之前需要先建立连接。这通常通过三次握手来建立连接,以确保通信双方都已准备好。而UDP是无连接的,即在发送数据之前不需要建立连接。

  2. 可靠性:TCP提供了可靠的数据传输服务。它通过使用确认、重传和流量控制等机制来确保数据的完整性和正确性。与此相反,UDP是不可靠的,它不保证数据的完整性或正确性。

  3. 传输速度:由于TCP需要进行各种检查和确认,其传输速度可能相对较慢。而UDP由于没有这些额外的机制,因此在传输速度上通常更快。

  4. 应用场景:TCP通常用于需要高可靠性的应用,如Web服务器、电子邮件和文件传输等。而UDP则常用于对实时性要求较高的应用,如视频流、在线游戏和VoIP通话等。

  5. 数据流量控制:TCP有流量控制机制,可以避免数据传输过快导致的问题。而UDP没有流量控制功能,因此可能会导致数据丢失或网络拥塞。

  6. 数据包顺序:TCP保证数据包的顺序,即数据包会按照发送的顺序到达接收端。而UDP则不保证数据包的顺序,数据包可能会乱序到达接收端。

  7. 头部开销:TCP的头部开销较大,因为它需要携带更多的信息来保证可靠性。而UDP的头部开销较小,这使得其在传输小数据包时更为高效。

2. TCP协议是如何保证数据的可靠性的?

TCP协议保证数据传输可靠性的方式主要有以下几种:

  1. 校验和:TCP在数据传输过程中,将每个发送的数据包进行校验和计算,并将结果添加到数据包头部。接收方在接收到数据包后,会对数据包进行校验和的验证,如果发现校验和不匹配,就会向发送方发送错误报告。

  2. 序列号确认应答:TCP为每个字节分配一个序列号,接收方会对序列号进行检查并确认应答,以此来确保数据的完整性和正确性。

  3. 超时重传:如果发送方在规定时间内没有收到接收方的确认应答,就会认为该数据包已丢失或损坏,进而进行超时重传。

  4. 连接管理:TCP通过三次握手来建立连接,并采用四次挥手来终止连接,这种方式可以确保连接的可靠性。

  5. 流量控制和拥塞控制:TCP通过流量控制机制来避免数据传输过快导致的问题,同时,通过拥塞控制机制来避免网络拥塞,这两者都有助于保障数据的可靠传输。

3. TCP协议是如何实现流量控制的?

TCP协议实现流量控制的主要机制是滑动窗口。在TCP的数据传输过程中,发送方会持续地维护一个叫做“窗口”的数据结构,而接收方也会维护一个类似的数据结构。这两个“窗口”分别代表了发送方和接收方可以接收或发送的数据量。

当发送方需要向接收方发送数据时,它会先查看自己的窗口。如果窗口允许,那么它就会将一部分数据发出去。一旦这些数据被发送出去,窗口就会相应地缩小。

同时,接收方会根据自己的处理能力来动态调整其窗口的大小。如果接收方发现自己处理不过来了,那么它就会通过TCP协议告诉发送方,让自己的窗口变小一些。

此外,网络中的拥塞状况也会影响到发送方一次可以向接收方发送的TCP报文段的大小和数量。具体来说,无论处于流量控制还是拥塞控制的目的,发送方的发送速率总是受到两者中较小一者的限制。

总的来说,TCP协议通过这种动态调整窗口大小的方式,实现了对数据传输速度和流量的有效控制,从而避免了因网络拥塞而导致的数据包丢失和网络堵塞的现象。

4. TCP协议是如何实现拥塞控制的?

TCP协议实现拥塞控制的主要方法是通过"拥塞窗口"变量来动态调整发送速率。在TCP的发送端,所有未收到确认的数据段必须落在这个窗口内。当网络出现拥塞时,TCP程序会减小拥塞窗口的大小,从而降低数据的发送速率;反之,当网络状况好转时,TCP程序会增大拥塞窗口的大小,提高数据的发送速率。

此外,TCP协议还设计了四种拥塞控制算法:慢开始、拥塞避免、快重传和快恢复。这些算法结合使用,可以有效地防止过多的数据注入到网络中,避免出现网络负载过大的情况。

  • 慢开始:发送方在开始发送数据时,会先探测一下网络的状况,如果网络状况良好,则逐渐增大拥塞窗口的大小;否则,会按照一定的规则逐渐增大拥塞窗口的大小。
  • 拥塞避免:当拥塞窗口的大小达到一个阈值时,就会进入拥塞避免阶段。在这个阶段,拥塞窗口的大小会按照线性增长的规则逐渐增大。
  • 快重传:当发送方连续收到三个重复的确认报文时,就会直接重传数据包,而不用等待超时重传定时器的时间到了再重传。
  • 快恢复:当发送方连续收到三个重复的确认报文时,它会把慢开始门限设置为当前拥塞窗口大小的一半,然后把拥塞窗口的大小设定为慢开始门限加上3个报文段的大小。

5. 请解释TCP三次握手和四次挥手的过程。

TCP三次握手和四次挥手是TCP协议中建立连接和断开连接的两个重要过程。

  1. 三次握手:

    • 第一次握手:客户端向服务器发送一个SYN(同步)报文,表示请求建立连接。
    • 第二次握手:服务器接收到SYN报文后,会发送一个SYN+ACK(同步确认)报文给客户端,表示同意建立连接。
    • 第三次握手:客户端接收到SYN+ACK报文后,会发送一个ACK(确认)报文给服务器,表示已经准备好建立连接了。
      通过三次握手,客户端和服务器之间建立了可靠的连接,并确定了双方的序列号。
  2. 四次挥手:

    • 第一次挥手:客户端发送一个FIN(结束)报文给服务器,表示即将关闭连接。
    • 第二次挥手:服务器接收到FIN报文后,会发送一个ACK(确认)报文给客户端,表示已经收到了客户端的结束信号。
    • 第三次挥手:客户端接收到ACK报文后,会发送一个FIN(结束)报文给服务器,表示已经关闭了连接。
    • 第四次挥手:服务器接收到FIN报文后,会发送一个ACK(确认)报文给客户端,表示已经收到了客户端的结束信号,并且也准备关闭连接了。
      通过四次挥手,客户端和服务器之间的连接被彻底关闭。

总之,TCP三次握手和四次挥手的过程确保了数据传输的可靠性和安全性,避免了网络中的资源浪费和数据丢失。

6. 请解释TCP的慢启动、拥塞避免、快速重传和快速恢复算法。

TCP的慢启动、拥塞避免、快速重传和快速恢复算法是TCP协议中用于控制数据传输速率和处理网络拥塞的重要机制。

  1. 慢启动(Slow Start):在TCP连接建立后,发送方的初始窗口大小为1个MSS(最大段大小)。当接收方确认一个数据段时,发送方会将窗口大小翻倍。但是,如果在一定时间内没有收到任何确认信息,发送方会将窗口大小减半,并等待一段时间后再尝试翻倍。这个过程被称为“慢启动”。

  2. 拥塞避免(Congestion Avoidance):当网络出现拥塞时,TCP协议会通过降低发送速率来减少拥塞的程度。发送方会逐渐减小其发送速率,直到网络状况得到改善。这个过程被称为“拥塞避免”。

  3. 快速重传(Fast Retransmit):当发送方在规定的时间内未收到接收方的确认信息时,它会认为数据包丢失或出错,并要求重新发送该数据包。这个过程被称为“快速重传”。

  4. 快速恢复(Fast Recovery):当接收方检测到网络状况已得到改善时,它会通知发送方可以恢复其发送速率。发送方会逐渐增加其发送速率,直到达到原来的值。这个过程被称为“快速恢复”。

这些算法共同作用,确保了TCP协议在面对网络拥塞时能够有效地调整数据传输速率,从而保证了数据传输的可靠性和效率。

7. UDP协议的特点是什么?为什么它比TCP更快?

UDP协议的特点包括以下几个方面:

  1. 无连接:UDP协议不需要建立连接,也不需要维护连接状态。数据报文直接发送到目标地址,不会等待确认应答。

  2. 不可靠:UDP协议没有提供可靠性保证,数据报文在传输过程中可能会出现丢失、重复或乱序的情况。

  3. 无流量控制:UDP协议没有内置的流量控制机制,发送方可以以任意速率发送数据,接收方无法控制数据的接收速度。

  4. 无拥塞控制:UDP协议没有内置的拥塞控制机制,网络拥塞时无法进行自适应调整。

  5. 面向数据报文:UDP协议采用面向数据报文的方式传输数据,每个数据报文都是独立的,包含完整的信息。

相比于TCP协议,UDP协议更快的原因主要有以下几点:

  1. 无需建立连接和维持连接状态:TCP协议需要进行三次握手来建立连接,而UDP协议可以直接发送数据报文,省去了连接建立和断开的时间开销。

  2. 无需等待确认应答:TCP协议在发送数据后需要等待接收方的确认应答,而UDP协议不需要等待确认应答,可以连续发送多个数据报文。

  3. 无流量控制和拥塞控制:TCP协议通过滑动窗口机制进行流量控制和拥塞控制,而UDP协议没有这些机制,可以更快速地传输数据。

需要注意的是,由于UDP协议的不可靠性,它适用于对实时性要求较高但允许一定数据丢失的场景,如音视频传输、网络游戏等。而对于对数据传输可靠性要求较高的场景,如文件传输、电子邮件等,通常使用TCP协议。

8. 请解释UDP如何实现数据包的顺序传输。

UDP协议本身并不保证数据包的顺序传输。因为UDP是无连接的,每个数据包都是独立发送的,并且没有序列号和确认机制来保证数据包的顺序。因此,如果多个数据包在网络上同时传输,到达接收端的顺序可能与发送端的顺序不同。

然而,在应用层,可以通过一些手段来实现UDP数据包的顺序传输。以下是几种常见的方法:

  1. 序列号:在应用层为每个数据包分配一个唯一的序列号,接收端按照序列号的顺序对接收到的数据包进行排序。这种方法需要确保序列号不会重复且能够处理乱序、丢失等问题。

  2. 时间戳:在应用层为每个数据包添加一个时间戳,接收端根据时间戳对数据包进行排序。这种方法不需要额外的序列号空间,但可能会受到网络延迟的影响。

  3. 累积确认:接收端可以向发送端发送累积确认(ACK),表示已经成功接收到之前的所有数据包。发送端可以根据累积确认来判断哪些数据包已经到达接收端,从而调整发送速率或者重传丢失的数据包。

  4. 可靠传输协议:在某些应用场景下,可以使用可靠的传输协议(如TCP)替代UDP来实现顺序传输。虽然这会增加一定的开销,但可以确保数据的可靠性和顺序性。

总之,UDP协议本身无法保证数据包的顺序传输,但在应用层可以通过一些手段来实现这一目标。具体选择哪种方法取决于应用的需求和场景。

9. 请解释UDP如何实现多播和广播。

UDP协议支持多播和广播。

  1. 多播:在UDP中,多播是指将数据包发送给多个接收者。实现多播的方法是使用特殊的IP地址(D类地址)作为目的地址。当一个主机向一个D类地址发送数据包时,路由器会将该数据包复制并转发给所有加入该多播组的主机。这样,一个数据包就可以被多个接收者同时接收,而不需要为每个接收者单独发送一个数据包。

  2. 广播:在UDP中,广播是指将数据包发送给网络中的所有主机。实现广播的方法是将数据包的目的地址设置为特殊的IP地址(B类地址)。当一个主机向一个B类地址发送数据包时,路由器会将该数据包复制并转发给网络中的所有主机。这样,一个数据包就可以被整个网络上的所有主机接收。

需要注意的是,多播和广播都是通过路由器来实现的。当主机发送多播或广播数据包时,它只需要知道目标组的IP地址,而不需要知道具体的接收者列表。路由器会根据IP地址将数据包转发给正确的接收者。

10. 在什么情况下,你会选择使用TCP而不是UDP?反之呢?

选择使用TCP而不是UDP的情况:

  1. 需要可靠的数据传输:TCP提供了可靠的数据传输机制,包括数据包的确认、重传和排序等功能,可以保证数据的完整性和顺序性。适用于对数据可靠性要求较高的场景,如文件传输、电子邮件等。
  2. 需要流量控制和拥塞控制:TCP通过滑动窗口机制进行流量控制和拥塞控制,可以避免网络拥塞和数据丢失。适用于网络状况不稳定或带宽有限的场景。
  3. 需要双向通信:TCP是面向连接的协议,建立连接后可以进行双向通信。适用于需要实时交互的应用,如聊天室、在线游戏等。

选择使用UDP而不是TCP的情况:

  1. 实时性要求较高:UDP传输速度较快,没有建立连接和断开连接的开销,适用于对实时性要求较高的应用,如音视频传输、实时游戏等。
  2. 对数据可靠性要求较低:UDP不提供可靠性保证,数据包可能会丢失或乱序,适用于对数据可靠性要求不高的场景,如实时监控、传感器数据采集等。
  3. 网络资源受限:UDP协议较简单,占用较少的网络资源,适用于网络带宽有限或资源受限的环境。

11. 请解释TCP/IP模型的四个层次。

TCP/IP模型采用了四层结构,分别是链路层、网络层、传输层和应用层。

  • 链路层:也被称为数据链路层或网络接口层,主要负责处理与物理网络接口相关的细节,如设备驱动程序和网络接口卡等。

  • 网络层:负责数据的路由和转发,包括IP协议和ICMP协议等。IP协议是用于为计算机网络中的设备分配地址,而ICMP协议则是用于发送错误报告和操作信息的。

  • 传输层:负责提供端到端的数据传输服务,例如TCP协议和UDP协议等。TCP协议是一种面向连接的、可靠的数据传输协议,而UDP协议则是一种无连接的、不可靠的数据传输协议。

  • 应用层:负责处理特定的应用程序细节,包括简单电子邮件传输(SMTP)、文件传输协议(FTP)、以及HTTP等。

12. 请解释IP地址的作用以及分类。

IP地址,也被称为网络身份证,是用于标识和区别网络中设备的一组数字编码系统。它的主要作用包括区分数以亿计的主机而分配的专门地址,从而可以区分不同的主机。此外,它还具有定位的功能,可以根据IP地址查询来确定设备的位置。

根据其功能和用途,IP地址被分为A、B、C、D和E五类。这些类别反映了网络的大小以及数据包是单播还是组播的。具体来说:

  • A类地址(1.0.0.0-126.255.255.255)用于最大型的网络,该网络的节点数可达16,777,216个。
  • B类地址(128.0.0.0-191.255.255.255)用于中型网络,节点数可达65,536个。
  • C类地址(192.0.0.0-223.255.255.255)用于256个节点以下的小型网络的单点网络通信。
  • D类地址并不反映网络的大小,只是用于组播,用来指定所分配的接收组播的节点组,这个节点组由组播订阅成员组成。D类地址的范围为224.0.0.0-239.255.255.255。
  • E类地址(240.0.0.0-255.255.255.254)用于试验。

13. 请解释子网掩码的作用。

子网掩码的主要作用是将IP地址划分成网络地址和主机地址两部分,以区别网络标识和主机标识。换句话说,它是用来确定IP地址中哪一部分是网络号,哪一部分是机器号。

以下是子网掩码的几个关键功能:

  1. 划分网络位和主机位:子网掩码可以帮助我们区分IP地址中的网络部分和主机部分。
  2. 划分子网:通过使用子网掩码,可以将一个大的IP网络划分为多个小的子网。
  3. 通信管理:划分子网后,同一子网内的设备可以直接通信,而不同子网的设备需要通过路由器进行通信。
  4. 节省IP地址:通过合理划分子网,我们可以更有效地使用有限的IP地址。
  5. 易于管理:子网掩码可以简化网络的管理,例如分配和跟踪网络资源。

总的来说,子网掩码是一个非常重要的工具,它有助于我们理解和操作复杂的网络环境。

14. 请解释DNS解析的过程。

DNS解析是将域名转换为对应的IP地址的过程。在域名解析过程中,首先由DNS client的主机调用解析器(Resolver),向DNS server发出请求,DNS server会尝试完成域名解析。

如果解析器无法直接完成域名解析,那么会按照以下步骤进行:

  1. 搜索浏览器的DNS缓存,缓存中维护了一张域名与IP地址的对应表。如果在缓存中找到了对应的IP地址,则直接返回;
  2. 如果浏览器的DNS缓存没有命中,那么操作系统的DNS缓存会被搜索。如果操作系统的DNS缓存中有对应的IP地址,则直接返回;
  3. 如果操作系统的DNS缓存也没有命中,那么操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询自己的DNS缓存,查找成功则返回结果;
  4. 如果本地域名服务器的DNS缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询。首先本地域名服务器向根域名服务器发起请求,根域名服务器返回顶级域名服务器的地址给本地服务器;然后本地域名服务器拿到这个顶级域名服务器的地址后,就向其发起请求,获取权限域名服务器的地址;最后本地域名服务器根据权限域名服务器的地址向其发起请求,最终得到该域名对应的IP地址。得到IP地址后,本地域名服务器将IP地址返回给操作系统,同时自己也将IP地址缓存起来。

这个过程涉及到两个重要的查询方式:迭代查询和递归查询。迭代查询是指,发出DNS请求后,对方如果不知道这个域名的IP地址,会告诉我有可能知道这件事的机器的IP,我自己再去问有可能知道的机器,不断重复直到问到结果。而递归查询是指,发出DNS请求后,要求对方查好后直接给出最终结果。
(DNS解析是将一个域名转换成与之对应的IP地址的过程。当用户在浏览器中输入一个网址时,浏览器首先会向本地的DNS服务器发送一个请求,查询该域名所对应的IP地址。如果本地DNS服务器没有该域名对应的IP地址,则会向根DNS服务器发送一个请求,依次向上查找直到找到相应的IP地址。

具体来说,DNS解析的过程如下:

  1. 浏览器向本地DNS服务器发送一个请求,查询该域名所对应的IP地址。

  2. 如果本地DNS服务器无法解析该域名,则会向根DNS服务器发送一个请求。

  3. 根DNS服务器返回顶级域(如.com、.org等)所在的权威DNS服务器的地址。

  4. 本地DNS服务器向权威DNS服务器发送请求。

  5. 权威DNS服务器返回该域名所对应的IP地址。

  6. 本地DNS服务器将IP地址返回给浏览器。

  7. 浏览器通过该IP地址与目标服务器建立连接。)

15. 请解释ARP协议的作用。

ARP协议,全称地址解析协议,是一个在局域网中根据IP地址获取物理MAC地址的重要协议。它工作在网络层与数据链路层之间,起着承上启下的桥梁作用。

其主要功能如下:

  1. 地址转换:ARP协议可以将网络层的IP地址转换为物理层的MAC地址,使得信息能够正确地找到目标设备。
  2. 缓存更新:为了提高查询效率,主机通常会将得到的IP和MAC的映射关系保存在内存中,这个映射关系表就叫做ARP缓存表。每当有新的IP和MAC映射关系时,主机就会更新这个ARP缓存表。
  3. 动态维护:ARP缓存是动态的,即当ARP缓存中的某个条目超过一段时间未被使用时,该条目会被自动删除,以便于新的条目加入。

16. 请解释ICMP协议的作用。

ICMP协议,全称为互联网控制报文协议,是TCP/IP协议簇中的一个重要子协议,主要用于在主机和路由器之间传递控制消息。这些控制消息主要涉及网络通不通、主机是否可达、路由是否可用等网络本身的消息。

ICMP协议的主要功能如下:

  1. 检查网络通不通:我们常使用的用于检查网络连通性的Ping命令(包括Linux和Windows系统中的Ping命令),其工作原理就是基于ICMP协议。当Ping一个网址时,系统会构造一个ICMP Echo Request数据包发送给目的地并报告是否收到所希望的ICMP echo(ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令。
  2. 实现链路追踪:另一个常见的应用是Traceroute命令,它也是基于ICMP协议的,可以用来确定到达目标主机所经过的路由。
  3. 错误报告:当数据包无法访问目标地址时,会自动发送一个ICMP报错消息给源头,比如常说的"Destination Unreachable"(目的不可达)和"Time Exceeded"(超时)等错误信息,告诉发送方出现了何种问题。
  4. 探测网络最大传输单元(MTU):通过发送不同大小的数据包并观察回应,可以间接探测出网络的最大传输单元(MTU),有助于提高网络传输效率。

17. 请解释NAT(网络地址转换)的作用及其工作原理。

NAT(Network Address Translation),网络地址转换,是一种在本地网络中使用私有地址,而在NAT(Network Address Translation),网络地址转换,是一种在本地网络中使用私有地址,而在连接互联网时转而使用全局 IP 地址的技术。它是为解决IPv4地址短缺的问题而开发的。

NAT的工作原理是:在局域网中组织会为内部主机分配私有地址,当这些内部主机需要发送数据包到外部网络时,私有地址就会自动转换为公有 IP 地址;相应地,返回的流量的目的地址也会从公有 IP 地址自动转换为内部私有地址。此外,NAT还具有“地址复用”功能,即允许多个内网IP同时映射到一个外网IP上面,因此也被称为“多对一地址转换”技术。

具体来说,进行NAT转换时,内部本地地址将会转换为内部全局地址,外部全局地址会成为目的地址。例如,以 10.0.0.10 的主机与 163.221.120.9 的主机进行通信为例,NAT可以将内部的私有IP地址转换为全局IP地址,同时也可以反向操作,将来自外部网络的全球IP地址转换为内部私有IP地址。

18. 请解释DHCP(动态主机配置协议)的作用及其工作原理。

DHCP(动态主机配置协议)是一种基于Client/Server模式的网络管理协议,主要用于在网络中自动管理和配置IP地址。这种协议在大型的局域网络环境中得到了广泛的应用,它能够动态地给局域网内的主机分配IP地址、子网掩码、默认网关地址以及域名服务器(DNS)地址等网络配置信息。

DHCP的工作原理如下:当DHCP客户端启动时,它会向网络发送一个DHCP DISCOVER数据包,该数据包包含了客户端的MAC地址和所需的IP地址信息。接着,DHCP服务器会接收到这个数据包,然后从它的地址池中为该设备提供一个可用的IP地址,同时还会提供其他的网络配置参数,如子网掩码、默认网关和DNS服务器的地址等。这些信息会被包含在DHCP OFFER数据包中返回给客户端。当客户端接收到DHCP OFFER后,会向DHCP服务器发送一个DHCP REQUEST数据包,确认接受所分配的IP地址和其他网络配置信息。最后,DHCP服务器会向客户端发送一个DHCP ACK数据包,将租约(即分配给客户端的IP地址和其他网络配置信息的有效期)正式确认下来。

19. 请解释HTTP和HTTPS的区别。

HTTP和HTTPS是两种网络传输协议,其中,HTTP是一种基于TCP/IP通信协议来传递数据的协议,主要用于发布和接收HTML页面,而HTTPS则是一种在HTTP基础上加入了SSL/TLS加密处理的协议,主要用于发布和接收数据和文件。

在网络模型中,HTTP工作于应用层,使用80端口,而HTTPS工作在传输层,使用443端口。这意味着,HTTPS与HTTP使用的是完全不同的连接方式。

从安全性的角度来看,HTTPS由于采用了SSL/TLS加密技术,所以可以提供对网站服务器的身份认证和数据保护,从而大大增加了数据传输的安全性。而HTTP协议由于没有采用任何加密措施,因此在数据传输过程中存在安全风险。

总的来说,两者的主要区别在于安全性、连接方式以及使用的端口号。其中,HTTPS由于提供了加密保护和身份认证,所以在安全性方面具有明显优势;而在速度和资源消耗方面,由于HTTPS需要进行加密解密操作,可能会比HTTP稍微慢一些。

20. 请解释TLS/SSL协议的作用及其工作原理。

TLS/SSL是一种密码通信框架,被广泛应用于保护网络通信的安全。这种协议综合运用了对称密码、消息认证码、公钥密码、数字签名以及伪随机数生成器等密码学元素,堪称密码学的大成者。

在具体的工作原理上,为了确保网络通信的安全性,需要对网络上传递的数据进行加密处理。目前主流的加密方法就是使用安全套接层(SSL)和传输层安全(TLS)协议。更具体地说,这个过程主要包括三个步骤:握手协议,密钥交换和数据传输。

首先,客户端向服务器发送一个连接请求,然后服务器回应一个确认信息。这就是握手协议的过程,同时它也完成了身份认证和密钥协商的工作。

接着,客户端和服务器通过非对称加密算法来生成共享密钥,然后利用这个共享密钥进行数据加密和解密。这个阶段的主要任务就是保证信息传输的机密性。

最后,客户端和服务器利用已协商好的密钥对数据进行加密并传输,接收方接收到数据后用同样的密钥进行解密,以此来实现数据的保密传输。

另外值得一提的是,TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。例如,TLS在SSL v3.0的基础上提供了更安全的MAC算法,更严密的警报机制,以及对“灰色区域”规范的更明确的定义。

相关文章:

TCP/UDP协议

1. 请解释TCP和UDP的主要区别。 TCP和UDP都是位于传输层的协议,具有不同的特点和应用场景。以下是它们的主要区别: 连接方式:TCP是面向连接的协议,这意味着在数据传输之前需要先建立连接。这通常通过三次握手来建立连接&#xff…...

3D 渲染如何帮助电商促进销售?

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 3D 渲染图像因其高转化率而成为亚马逊卖家的最新趋势。它是电子商务平…...

使用栈求表达式的值【数据结构】

中缀表达式转后缀表达式 转换流程: 初始化一个运算符栈。自左向右扫描中缀表达式,当扫描到操作数时直接连接到后缀表达式上。当扫描到操作符时,和运算符栈栈顶的操作符进行比较。如果比栈顶运算符高,则入栈。如果比栈顶运算符低…...

{MySQL}索引事务和JDBC

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、索引1.1索引是什么1.2作用1.3代码 二、事务2.1什么是事务2.2使用 三.JDBC总结 前言 接着上次,继续讲下MySQL 提示:以下是本篇文章正…...

Qt designer界面和所有组件功能的详细介绍(全!!!)

PyQt5和Qt designer的详细安装教程:https://blog.csdn.net/qq_43811536/article/details/135185233?spm1001.2014.3001.5501 目录 1. 界面介绍2. Widget Box 常用组件2.1 Layouts(布局)2.2 Spacers(间隔器)2.3 Item V…...

mysql_存储过程

举例子 createdefiner root% procedure insert_batch_test(IN START int(10), IN max_num int(10)) BEGINDECLAREi INT DEFAULT 0;SET autocommit 0;REPEATSET i i 1;INSERT INTO test (std, score)VALUES (CEILING(RAND() * 10 100), CEILING(RAND() * 50 50));UNTIL i …...

uboot学习及内核更换_incomplete

官方文档 在前面 文章目录 uboot常见命令学习环境变量网络控制台uboot标准启动其他 升级uboot或内核bin和uimg以及booti和bootm的区别制作uImage更换内核更换uboot后续计划 uboot常见命令学习 环境变量 Environment Variables环境变量 autostart 如果值为yes,则会…...

KVM 自动化脚本的使用及热/冷迁移

一、介绍 目录结构介绍 [rootkvm-server kvm]# tree -L 2 . ├── control # 控制脚本目录 │ ├── KVMInstall.sh # kvm服务安装脚本 │ ├── VMHost.sh # kvm虚拟机克隆脚本 │ └── VMTemplate.sh # kvm模板机安装脚本 ├── mount # 此目录保持为空&…...

Unity中Shader裁剪空间推导(在Shader中使用)

文章目录 前言一、在Shader中使用转化矩阵1、在顶点着色器中定义转化矩阵2、用 UNITY_NEAR_CLIP_VALUE 区分平台矩阵3、定义一个枚举用于区分当前是处于什么相机 二、我们在DirectX平台下,看看效果1、正交相机下2、透视相机下3、最终代码 前言 在上一篇文章中&…...

ES的使用(Elasticsearch)

ES的使用(Elasticsearch) es是什么? es是非关系型数据库,是分布式文档数据库,本质上是一个JSON 文本 为什么要用es? 搜索速度快,近乎是实时的存储、检索数据 怎么使用es? 1.下载es的包(环境要…...

车牌识别技术,如何用python识别车牌号

目录 一.前言 二.运行环境 三.代码 四.识别效果 五.参考 一.前言 车牌识别技术(License Plate Recognition, LPR)在交通计算机视觉(Computer Vision, CV)领域具有非常重要的研究意义。以下是该技术的一些扩展说明&#xff1…...

爬虫工作量由小到大的思维转变---<第二十五章 Scrapy开始很快,越来越慢(追溯篇)>

爬虫工作量由小到大的思维转变---<第二十二章 Scrapy开始很快,越来越慢(诊断篇)>-CSDN博客 爬虫工作量由小到大的思维转变---<第二十三章 Scrapy开始很快,越来越慢(医病篇)>-CSDN博客 前言: 之前提到过,很多scrapy写出来之后,不…...

Servlet入门

目录 1.Servlet介绍 1.1什么是Servlet 1.2Servlet的使用方法 1.3Servlet接口的继承结构 2.Servlet快速入门 2.1创建javaweb项目 2.1.1创建maven工程 2.1.2添加webapp目录 2.2添加依赖 2.3创建servlet实例 2.4配置servlet 2.5设置打包方式 2.6部署web项目 3.servl…...

【C#与Redis】--高级主题--Redis 哨兵

一、简介 1.1 哨兵的概述 哨兵(Sentinel)是 Redis 分布式系统中用于监控和管理多个 Redis 服务器的组件。它的主要目标是确保 Redis 系统的高可用性,通过实时监测主节点和从节点的状态,及时发现并自动处理故障,保证系…...

linux安装python

文章目录 前言一、下载安装包二、安装1.安装依赖2.解压3.安装4.软链接5.验证 总结 前言 本篇文章介绍linux环境下安装python。 一、下载安装包 下载地址:官方网站 我们以最新的标准版为例 二、安装 1.安装依赖 yum -y install openssl-devel ncurses-devel li…...

【如何破坏单例模式(详解)】

✅如何破坏单例模式 💡典型解析✅拓展知识仓✅反射破坏单例✅反序列化破坏单例✅ObjectlnputStream ✅总结✅如何避免单例被破坏✅ 避免反射破坏单例✅ 避免反序列化破坏单例 💡典型解析 单例模式主要是通过把一个类的构造方法私有化,来避免重…...

什么是 SPI,它有什么用?

文章目录 什么是 SPI,它有什么用? 什么是 SPI,它有什么用? SPI 全称是 Service Provider Interface ,它是 JDK 内置的一种动态扩展点的实现。 简单来说,就是我们可以定义一个标准的接口,然后第三…...

FolkMQ 新的消息中间件,v1.0.25

简介 采用 “多路复用” “内存运行” “快照持久化” “Broker 集群模式”(可选)基于 Socket.D 网络应用协议 开发。全新设计,自主架构! 角色功能生产端发布消息(Qos0、Qos1)、发布定时消息&#xff…...

小程序入门-登录+首页

正常新建一个登录页面 创建首页和TatBar,实现登录后底部出现两个按钮 代码 "pages": ["pages/login/index","pages/index/index","pages/logs/logs" ],"tabBar": {"list": [{"pagePath"…...

React快速入门之组件

目录 组件JSX在标签使用{}嵌入JS表达式使用组件组件嵌套以🌲树的方式管理组件间的关系组件纯粹原则 组件 文件:Profile.js export default function Profile({isPacked true,head,stlyeTmp,src,size 80}) {if (isPacked) {head head &q…...

.NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布

作者: Jon Galloway - Principal Program Manager, .NET Community Team Mehul Harry - Product Marketing Manager, .NET, Azure Marketing 排版:Alan Wang .NET Conf 2023 是有史以来规模最大的 .NET 会议,来自全球各地的演讲者进行了 100 …...

Hadoop入门学习笔记——六、连接到Hive

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 六、连接到Hive6.1. 使用Hive的Shell客户端6.2. 使用Beel…...

【K8S 基本概念】Kurbernetes的架构和核心概念

目录 一、Kurbernetes 1.1 简介 1.2、K8S的特性: 1.3、docker和K8S: 1.4、K8S的作用: 1.5、K8S的特性: 二、K8S集群架构与组件: 三、K8S的核心组件: 一、master组件: 1、kube-apiserve…...

WPS复选框里打对号,显示小太阳或粗黑圆圈的问题解决方法

问题描述 WPS是时下最流行的字处理软件之一,是目前唯一可以和微软office办公套件相抗衡的国产软件。然而,在使用WPS的过程中也会出现一些莫名其妙的错误,如利用WPS打开docx文件时,如果文件包含复选框,经常会出…...

对“企业数据资源相关会计处理暂行规定“的个人理解

附:2023年数据资源入表白皮书下载: 关注WX公众号: commindtech77, 获得数据资产相关白皮书下载地址 1. 回复关键字:数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字:光大银行 下载 光…...

JavaScript:函数隐含对象arguments/剩余参数. . .c/解构赋值

除了this,在函数内部还存在着一个隐含的参数arguments arguments 是一个类数组对象(伪数组) 调用函数时传递的所有实参,都被存储在arguments中 arguments[0] 表示的是第一个实参 arguments[1] 表示的是第二个实参 以此类推..…...

MFC窗体背景颜色的设置、控件白色背景问题、控件文本显示重叠问题、被父窗体背景覆盖的问题

文章目录 设置mfc窗体背景颜色窗体设置背景颜色后解决控件白色背景解决重复修改控件文本后重叠的问题自绘控件被父窗体背景覆盖的问题 设置mfc窗体背景颜色 设置窗体的背景颜色非常简单,只需要在窗体的OnEraseBkgnd里面填充窗体背景就可以了,甚至直接画…...

c++简易AI

今天小编一时雅兴大发&#xff0c;做了一个c的简易AI&#xff0c;还是很垃圾的&#xff01; 题外话&#xff08;每期都会有&#xff09;&#xff1a;我的蛋仔名叫酷影kuying&#xff0c;大家能加我好友吗&#xff1f; 上代码咯&#xff01; #include<bits/stdc.h> #in…...

java获取两个List集合之间的交集、差集、并集

文章目录 方式一、jdk8 Stream求交集、并集、差集方式二、求交集方式三、collections4.CollectionUtils求交集、差集、并集 本文总结一下java中获取两个List之间的交集、补集、并集的几种方式。 最常用的通过for循环遍历两个集合的方式在这里就不整理了&#xff0c;主要整理一些…...

轻松实现iphone截图传电脑

目录 摘要 引言 用户登录工具和连接设备 生成截图 摘要 本篇博文介绍了克魔助手这款工具&#xff0c;解决了iPhone与Windows系统下图片传输的烦恼。通过连接同一Wi-Fi&#xff0c;使用克魔助手轻松实现了iPhone截图传输到电脑上的便捷操作。用户只需简单地下载并安装克魔助…...

【网络安全】upload靶场pass1-10思路

目录 Pass-1 Pass-2 Pass-3 Pass-4 Pass-5 Pass-6 Pass-7 Pass-8 Pass-9 Pass-10 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1…...

共享单车之数据存储

文章目录 第1关&#xff1a;获取工作簿中的数据第2关&#xff1a;保存共享单车数据 第1关&#xff1a;获取工作簿中的数据 相关知识 获取工作簿中的信息&#xff0c;我们可以使用Java POI&#xff08;POI是一个提供API给Java程序对Microsoft Office格式档案读和写的功能&#…...

Flink(十一)【状态管理】

Flink 状态管理 我们一直称 Flink 为运行在数据流上的有状态计算框架和处理引擎。在之前的章节中也已经多次提到了“状态”&#xff08;state&#xff09;&#xff0c;不论是简单聚合、窗口聚合&#xff0c;还是处理函数的应用&#xff0c;都会有状态的身影出现。状态就如同事务…...

【三维目标检测/自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)

系列文章目录 论文&#xff1a;Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址&#xff1a;https://arxiv.org/pdf/2312.08004.pdf 来源&#xff1a;复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…...

wefew

123212...

Springboot整合JSP-修订版本(Springboot3.1.6+IDEA2022版本)

1、问题概述&#xff1f; Springboot对Thymeleaf支持的要更好一些&#xff0c;Springboot内嵌的Tomcat默认是没有JSP引擎&#xff0c;不支持直接使用JSP模板引擎。这个时候我们需要自己配置使用。 2、Springboot整合使用JSP过程 现在很多的IDEA版本即使创建的项目类型是WAR工…...

Java核心知识点1-java和c++区别、隐式和显示类型转换

java和c区别 java通过虚拟机实现跨平台特性&#xff0c;但c依赖于特定的平台。java没有指针&#xff0c;它的引用可以理解为安全指针&#xff0c;而c和c一样具有指针。java支持自动垃圾回收&#xff0c;而c需要手动回收。java不支持多重继承&#xff0c;只能通过实现多个接口来…...

C++图论之强连通图

1. 连通性 什么是连通性&#xff1f; 连通&#xff0c;字面而言&#xff0c;类似于自来水管道中的水流&#xff0c;如果水能从某一个地点畅通流到另一个地点&#xff0c;说明两点之间是连通的。也说明水管具有连通性&#xff0c;图中即如此。 无向图和有向图的连通概念稍有差…...

SadTalker数字人增加视频输出mp4质量精度

最近在用数字人简易方案&#xff0c;看到了sadtalker虽然效果差&#xff0c;但是可以作为一个快速方案&#xff0c;没有安装sd的版本&#xff0c;随便找了个一键安装包 设置如上 使用倒是非常简单&#xff0c;但是出现一个问题&#xff0c;就是输出的mp4都出马赛克了 界面上却…...

swing快速入门(三十二)消息对话框

注释很详细&#xff0c;直接上代码 上一篇 新增内容 1.自定义对话框前列图标 2.消息对话框的若干种形式 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent;public class swing_test_30 {// 定义一个JFrameJFrame jFrame n…...

《Spring Cloud学习笔记:Nacos配置管理 OpenFeign LoadBalancer Getway》

基于Feign的声明式远程调用&#xff08;代码更优雅&#xff09;&#xff0c;用它来去代替我们之前的RestTemplate方式的远程调用 1. Nacos配置管理&#xff1a;Nacos Config 服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题&#xff1a; 配置文件相…...

深入解析 Flink CDC 增量快照读取机制

一、Flink-CDC 1.x 痛点 Flink CDC 1.x 使用 Debezium 引擎集成来实现数据采集&#xff0c;支持全量加增量模式&#xff0c;确保数据的一致性。然而&#xff0c;这种集成存在一些痛点需要注意&#xff1a; 一致性通过加锁保证&#xff1a;在保证数据一致性时&#xff0c;Debez…...

060:vue中markdown编辑器mavon-editor的应用示例

第060个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…...

使用SCP在Linux中安全复制文件:参数详解

SCP&#xff08;Secure Copy&#xff09;是一个在Linux和其他类Unix系统中使用的命令行工具&#xff0c;用于在本地和远程主机之间安全地复制文件和目录。本文将详细介绍SCP的多个常用参数&#xff0c;并通过示例进行说明。 基本语法 scp [options] source destination其中&a…...

【动态规划精选题目】3、简单多状态模型

此动态规划系列主要讲解大约10个系列【后续持续更新】 本篇讲解简单多状态模型中的9道经典题&#xff0c;会在讲解题目同时给出AC代码 目录 1、按摩师 2、力扣198:打家劫舍1 3、打家劫舍II 4、删除并获得点数 5、 粉刷房子 6、力扣309:买卖股票的最佳时机含冷冻期 7、 买…...

软件测试/测试开发丨Python 虚拟环境及pip环境管理

venv 虚拟环境管理 venv 虚拟环境的优点 独立的 Python 环境&#xff0c;不会产生冲突有助于包的管理删除和卸载方便 venv 使用方法 创建虚拟环境 python3 -m venv test 激活虚拟环境 切换指定文件夹Windows&#xff1a;/Scripts/macOS&#xff1a;/bin/ 执行指令&#xff…...

Mybatis SQL构建器类 - SQL类

下面是一些例子&#xff1a; // Anonymous inner class public String deletePersonSql() {return new SQL() {{DELETE_FROM("PERSON");WHERE("ID #{id}");}}.toString(); }// Builder / Fluent style public String insertPersonSql() {String sql new…...

海云安亮相2023北京国际金融安全论坛,助力金融企业数字化转型降本增效

近日&#xff0c;2023北京国际金融安全论坛暨金融科技标准认证生态大会在北京金融安全产业园成功举办。深圳海云安网络安全技术有限公司&#xff08;以下简称“海云安”&#xff09;受邀参展亮相此次大会。海云安作为国内领先的金融科技服务商&#xff0c;展示了开发安全系列产…...

nodeJS搭建免费代理IP池爬取贴吧图片实战

之前用python写过爬虫&#xff0c;这次想试试nodeJS爬虫爬取贴吧图片&#xff0c;话不多说代码如下&#xff0c;爬取制定吧的前十页所有帖子里的图片 爬取贴吧图片脚本 你得提前创建一个images文件夹 const axios require("axios"); const cheerio require("…...

基于图搜索的自动驾驶规划算法 - BFS,Dijstra,A*

本文将讲解BFS&#xff0c;Dijstra&#xff0c;A*&#xff0c;动态规划的算法原理&#xff0c;不正之处望读者指正&#xff0c;希望有兴趣的读者能在评论区提出一些这些算法的面试考点&#xff0c;共同学习&#xff0c;一起进步 0 图论基础 图有三种&#xff1a;无向图、有向…...