day01计算机网络目录一览图
- TCP、UDP协议分别属于什么层——OSI七层模型详解
- 请简述HTTP1.0、1.1、2.0的主要区别——HTTP版本详解
- 请简述常见HTTP状态码及含义——HTTP报文详解
- 请简述对称加密、非对称加密的异同——安全传输的基础
- 请简述HTTPS加密认证的过程——TLS技术详解
- 请简述域名系统的工作流程——DNS服务详解
- 你了解DNS攻击吗?是什么原理——DNS安全详解
- 请简述TCP与UDP协议的区别——传输层协议详解
- TCP协议为什么需要三次握手——TCP连接的建立
- 请简述什么是TIME_WAIT状态——TCP连接的释放
- 请简述滑动窗口的工作过程——TCP的可靠传输
- 请介绍常见的TCP拥塞避免算法——拥塞避免算法详解
- 什么是粘包?如何解决?——TCP粘包原理详解
- 请简述什么是SYN flood攻击——TCP协议安全性详解
- 什么是VPN?请简述VPN的原理——虚拟专用网技术详解
事情的起因是偶然看见了这个: 7天快速学习计算机基础必考八股文于是打算根据这个目录对相关知识的复习一波,本篇文章仅为个人学习研究,部分内容来自网络收集以及个人见解整理,如有不对,欢迎评论指出不胜感激,会尽快修改。本文目录以
问题--知识点
为标题
TCP、UDP协议分别属于什么层——OSI七层模型详解
OSI七层模型是由ISO组织制定的一个用于计算机或通讯系统间互联的标准体系,包含一系列抽象的术语概念以及协议,通常分为七层实际应用中简化为四层模型,具体如下图模型的简化和常用协议:
请简述HTTP1.0、1.1、2.0的主要区别——HTTP版本详解
HTTP协议的发展经历了多个版本,其中1.0、1.1和2.0是最主要的三个版本。以下是它们之间的主要区别:
-
HTTP 1.0: 这是HTTP协议的第二个版本,也是第一个在通讯中指定版本号的版本。在此版本中:
- 连接管理:每个请求都需要与服务器建立一个TCP连接,并在请求完成后关闭该连接,这意味着无法复用连接。
- 请求响应:一次只能发送一个请求,必须等待响应返回后才能发送下一个请求。
- Header压缩:未对Header进行任何压缩,导致Header冗余并占用带宽。
- 状态管理:这是一个无状态协议,意味着无法跟踪用户的状态信息。
- 数据传输:仅支持明文传输,不提供数据加密。
-
HTTP 1.1: 这个版本继承了HTTP 1.0的简单性,但克服了其性能上的问题。主要的改进包括:
- 长连接:引入了Connection字段,并通过设置Keep-Alive来保持HTTP连接不断开。这样做可以避免每次客户端与服务器交互时都重复建立和释放TCP连接,从而提高了网络的利用率。
- 请求响应:可以同时发送多个请求,但仍然需要按顺序等待响应。
-
HTTP 2.0: 与前两个版本相比,这个版本带来了显著的性能提升。主要特点包括:
- 多路复用:允许多个请求同时在一个连接上进行处理,而不是按顺序处理。
- 头部压缩:采用了HPACK压缩算法,减少了Header的大小和冗余,从而提高了传输效率。
请简述常见HTTP状态码及含义——HTTP报文详解
HTTP状态码是用于表示HTTP请求的响应状态的3位数字代码。以下是一些常见的HTTP状态码及其含义:
-
200 OK:请求成功,服务器已成功处理了请求。这是最常见的状态码,表示一切正常。
-
201 Created:请求成功并且服务器创建了新的资源。这通常在POST请求后返回,表示资源已成功创建。
-
204 No Content:服务器成功处理了请求,但没有返回任何内容。这通常在不需要返回数据的情况下使用,例如DELETE请求。
-
400 Bad Request:客户端发送的请求有错误,服务器无法理解或处理。这通常是由于请求语法错误或参数错误导致的。
-
401 Unauthorized:请求要求用户的身份认证。如果用户没有进行身份验证或者提供了无效的身份验证凭据,服务器将返回此状态码。
-
403 Forbidden:服务器理解请求,但拒绝执行它。这通常是由于权限不足或未授权访问导致的。
-
404 Not Found:请求的资源在服务器上不存在。这通常是由于URL错误或者资源已被删除导致的。
-
500 Internal Server Error:服务器内部发生了错误,无法完成请求。这通常是由于服务器端程序错误导致的。
-
503 Service Unavailable:服务器暂时无法处理请求,通常是由于服务器过载或者维护导致的。
请简述对称加密、非对称加密的异同——安全传输的基础
对称加密和非对称加密是两种常见的加解密方式,它们的主要区别在于密钥的使用和管理方式。
对称加密,又被称为私钥加密,其特点是加密和解密过程使用同一个密钥。这种加密方式的优点是算法公开、加解密速度快,尤其适合于对大数据量进行加密。然而,由于对称加密的算法是公开的,一旦用于加密的密钥被泄露,那么密文就很容易被破解,因此密钥的安全管理是一个难题。常见的对称加密算法包括DES、AES等。
非对称加密则使用一对不同的密钥,一把叫做私钥,另一把叫做公钥。公钥可以自由发布,但只能用对应的私钥来解密;相反,私钥需要保密,只能用来解密用公钥加密的信息。因为加密和解密使用的是两个不同的密钥,所以称为非对称加密。非对称加密的优点是安全性高,即使公钥被其他人获取,也无法解密出原始信息。但是,非对称加密的速度较慢,更适合对小数据量进行加密。常见的非对称加密算法有RSA、ECC等。
请简述HTTPS加密认证的过程——TLS技术详解
HTTPS(SSL/TLS)的加密认证过程主要包括以下几个步骤:
-
客户端发送https请求:首先,客户端会向服务器发送一个HTTPS请求,并将自身支持的秘钥算法套件(包括SSL指定版本、加密组件列表)发送给服务器。
-
服务器返回证书信息:服务器在接收到客户端的请求后,会判断自身是否支持该算法套件。如果支持,则返回证书信息(本质上是公钥,包含了证书颁发机构、网址、过期时间等信息)。否则,服务器将断开连接。
-
客户端解析证书:客户端收到服务器返回的证书信息后,会通过TLS协议来解析证书,验证证书的有效性。如果证书无效或未被信任,客户端通常会提示用户是否安装证书。这通常表现为浏览器搜索栏左侧出现“X”告警按钮等。
-
传送加密信息:如果证书有效或者是用户选择信任并安装后,客户端会开始与服务器进行加密信息的传送。这些信息是用证书加密后的随机值,供加解密使用。
-
服务端解密并返回加密内容:服务端收到加密的信息后,会通过其私钥解密这些信息,得到客户端发送来的随机值。然后,服务端将后续的所有内容通过这个随机值进行对称加密。由于只有知道私钥的人才能解密这些信息,因此,除非知道私钥,否则是无法获取加密内容的。最后,服务端将加密后的内容返回给客户端。
请简述域名系统的工作流程——DNS服务详解
域名系统(DNS)是一个用于TCP/IP网络的计算机和网络服务命名系统,它组织成域层次结构,其主要任务是根据域名查出对应的IP地址。以下是DNS的工作流程:
- 用户在浏览器中输入一个域名,比如"zdns.cn"。
- 如果本地缓存服务器中没有该记录,则首先会向根服务器查询。根服务器里面记录的都是各个顶级域所在的服务器的位置。当向根请求"zdns.cn"的时候,根服务器就会返回.cn服务器的位置信息。
- 递归服务器拿到.cn的权威服务器地址以后,就会寻问cn的权威服务器,知不知道"zdns.cn"的位置。这个时候cn权威服务器查找并返回"zdns.cn"服务器的地址。
- 最后,递归服务器继续向"zdns.cn"的权威服务器去查询这个地址,由"zdns.cn"的服务器给出了地址:202.173.11.10。
以上就是一次完整的DNS解析过程。在这个过程中,DNS服务器充当了翻译官的角色,负责将人类可读的域名翻译成机器可以理解的IP地址。
你了解DNS攻击吗?是什么原理——DNS安全详解
DNS攻击主要包括DNS劫持和DNS洪水攻击。
DNS劫持,也叫域名劫持,是攻击者利用其他攻击手段篡改了某个域名的解析结果,将域名由正常IP指向攻击者控制的IP,从而导致访客被劫持到一个不可达或者假冒的网站,以此达到非法窃取用户信息或者破坏正常网络服务的目的。为应对DNS劫持,一种有效的手段是进行域名锁定,即在加锁期间不接受用户在DNS解析上的任何更改,包括对域名服务器的修改。
DNS洪水攻击则是针对DNS基础设施的攻击方式。其工作原理是利用高带宽的设备(如IP摄像头、DVR盒等物联网设备)向DNS服务器发送大量的请求,以淹没其服务并阻止合法用户访问。这种攻击是在高带宽物联网僵尸网络兴起后激增的。为防止此类攻击,可以选择正规的DNS服务商。
请简述TCP与UDP协议的区别——传输层协议详解
TCP和UDP都是传输层协议,不过它们在数据传输方式、可靠性、效率等方面存在显著差异。
首先,TCP是面向连接的协议,这意味着在数据传输之前需要先建立连接。其可靠性高,因为通过采用三次握手、重新确认等连接过程来保证数据的准确无误地传输。然而,这也导致了TCP相对较慢,因为建立和维护连接需要消耗一定的时间。此外,TCP首部开销20字节,比UDP的8字节要大,因此在传输相同大小的数据时,TCP实际包含的用户数据较少。
相比之下,UDP是基于非连接的协议,因此无需事先建立连接就能进行数据传输。这使得UDP具有较快的传输速度和较低的延迟,适用于实时性要求较高的应用场景。但是,UDP无法保证数据传输的可靠性,可能会出现丢包的情况。
总的来说,TCP和UDP各有优缺点,应根据具体的需求和应用环境来选择适合的协议。TCP适用于需要可靠传输的应用,如文件传输、电子邮件等;而UDP则更适用于对高速传输和实时性有较高要求的通信或广播通信。
TCP协议为什么需要三次握手——TCP连接的建立
TCP协议需要进行三次握手是为了建立连接、同步连接双方的序列号和确认,以及防止已失效TCP协议需要进行三次握手是为了建立连接、同步连接双方的序列号和确认,以及防止已失效的连接请求报文段突然又传送到了,因而产生错误。
具体过程如下:
- 第一次握手:客户端发送SYN包(SYN=1,seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认。
- 第二次握手:服务器收到SYN包,必须确认客户端的SYN(ACK=1,ack=x+1),同时自己也发送一个SYN包(SYN=1,seq=y),表示可以接收客户端的数据了,并进入SYN_RECV状态,等待客户端确认。
- 第三次握手:客户端收到服务器的SYN包和确认后,向服务器发送确认包ACK(ACK=1,ack=y+1),至此,三次握手完成,TCP连接成功建立。
请简述什么是TIME_WAIT状态——TCP连接的释放
TIME_WAIT是TCP连接结束后的一个状态,主要用于处理可能出现的问题。在TCP连接中,通常是主动关闭连接的一方会进入这个状态。
在TIME_WAIT状态下,连接一方仍然可以接收到来自另一端的数据,并且这些数据被认为是迟到的,并会直接被丢弃。因此,这个状态主要是为了解决网络中可能存在的延迟问题,让迟到的数据包在到达时无法与任何现有的连接关联,从而避免混淆。
此外,此状态下的连接将持续一定的时间,通常为2倍的最大报文生存时间(2 * MSL)。MSL是IP数据包在网络中的最长寿命,Linux系统中,MSL等于60秒,所以一条待关闭的TCP连接会在TIME_WAIT状态等待120秒(2分钟)。
总的来说,TIME_WAIT状态是TCP连接结束后的一个重要阶段,它的主要目的是确保网络中不会有与旧连接相关的混淆或错误。
请简述滑动窗口的工作过程——TCP的可靠传输
滑动窗口是一种流量控制技术,用于在TCP连接中实现可靠的数据传输。它的主要目的是防止发送方发送过多的数据导致接收方无法处理,同时也确保接收方能够及时通知发送方需要更多的数据。
滑动窗口的工作过程如下:
-
初始化:当TCP连接建立时,双方都会维护一个滑动窗口。初始时,发送方的窗口大小为1,接收方的窗口大小也为1。
-
数据发送:发送方根据接收方的窗口大小(即接收缓冲区的大小)来发送数据。当发送方的窗口大小大于1时,可以连续发送多个数据包。
-
确认应答:接收方在收到数据包后,会向发送方发送一个确认应答(ACK)。确认应答中包含了接收方期望接收的下一个字节的序号。
-
窗口更新:发送方在收到确认应答后,会根据确认应答中的序号来更新自己的窗口大小。如果确认应答中的序号等于发送方当前窗口的最后一个字节的序号,那么发送方的窗口大小保持不变;否则,发送方的窗口大小会向前移动到确认应答中的序号位置。
-
超时重传:如果在规定的时间内没有收到接收方的确认应答,发送方会认为数据包丢失,并重新发送该数据包。这个过程称为超时重传。
-
流量控制:通过调整滑动窗口的大小,可以实现对发送方和接收方之间的数据传输速率进行控制。当接收方的缓冲区已满时,它会将窗口大小设置为0,阻止发送方继续发送数据。当接收方有足够的空间来存储新的数据时,它会逐渐增大窗口大小,允许发送方继续发送数据。
通过以上步骤,滑动窗口实现了TCP连接中的可靠传输。
请介绍常见的TCP拥塞避免算法——拥塞避免算法详解
TCP拥塞避免算法是TCP协议中用来解决网络拥塞问题的一种算法,主要包含以下几种:慢启动算法、拥塞避免算法、快重传算法和快恢复算法。
-
慢启动算法:在发送方增加了一个拥塞窗口(Congestion Window),记为cwnd。拥塞窗口指的是在收到对端的ACK时还能发送的最大MSS数。慢启动算法的思想是为发送方每经过一个RTT,cwnd变为之前的两倍。最初,linux的拥塞窗口初始值为10个MSS。
-
拥塞避免算法:当拥塞窗口大于慢开始门限后,就需要停止慢开始算法,进入拥塞避免阶段。拥塞避免算法是通过维护一个慢开始门限ssthresh,当拥塞窗口大于这个门限值时,停止使用慢启动算法,改用拥塞避免算法。其特点是每当收到一个ACK报文时,就把拥塞窗口增加1个MSS大小。
-
快重传算法:快重传算法是在接收方发现有连续三个重复的ACK时,直接重传对方尚未收到的报文段。
-
快恢复算法:快恢复算法是在快重传之后,把拥塞窗口增大到慢开始门限值的大小,然后再改为拥塞避免算法。
什么是粘包?如何解决?——TCP粘包原理详解
粘包问题是由于TCP的流式传输特性和网络中MTU(最大传输单元)通常小于应用层处理的消息数据大小所引起的。具体来说,当发送方的应用需要发送多个数据包才能构成一条完整的消息时,如果这些数据包在网络中不是连续发送的,接收端有可能先收到部分数据包,这就造成了粘包。
解决这个问题的主要方法是制定应用层的数据通讯协议,通过协议来规范接收的数据是否满足消息数据的需要。在应用中处理粘包的基础方法主要有两种,一种是以特定字符描述消息的大小,另一种是以特殊的结束符来标识消息的结束。例如,HTTP和redis等通讯协议就是采用了这两种方法的结合。
请简述什么是SYN flood攻击——TCP协议安全性详解
SYN Flood攻击,也被称为TCP SYN Flood,是一种利用TCP协议的三次握手机制进行的攻击,是互联网上最原始、最经典的DDoS(Distributed Denial of Service)攻击之一。具体来说,攻击者通常利用工具或者控制僵尸主机向服务器发送海量的变源IP地址或变源端口的TCP SYN报文。当服务器响应这些报文后,就会生成大量的半连接。服务器的资源在不断响应这些请求的过程中被耗尽,最终导致服务器无法提供正常的服务。
这种攻击方式的目的是消耗所有可用的服务器资源,使服务器不可用于处理合法流量。为了防御SYN Flood攻击,防火墙可以设置SYN转发超时参数(状态检测的防火墙可在状态表里面设置),该参数远小于服务器的timeout时间。
什么是VPN?请简述VPN的原理——虚拟专用网技术详解
VPN代表虚拟专用网络。它是一种通过公共网络(如互联网)建立安全连接的技术,用于传输数据。VPN的原理是利用加密和隧道技术,使用户能够通过公共网络安全地访问私人网络。当用户连接到VPN时,他们的数据被加密并在公共网络上安全传输,同时也具备了伪装IP地址的功能,保护用户的隐私和数据安全。VPN可用于远程访问、绕过地理限制等应用场景。
最后,八股文真的不必买课,网上资料很多的呀,或者看看大佬整理的文章资料即可,实在不行也可以问AI啊!