网络协议面试整理

TCP/IP

1.TCP/IP协议是什么

TCP/IP协议是传输控制协议/互联网协议(Transmission Control Protocol/Internet Protocol)的简称,它是一种用于在计算机网络中进行数据传输的标准协议。TCP/IP协议被广泛用于互联网和局域网中,是互联网的核心协议之一。

2.TCP/IP协议有哪些层

TCP/IP协议包括四个主要层次:应用层、传输层、网络层和链路层。
应用层:负责向用户提供应用程序服务,如电子邮件、文件传输等。常见的协议包括HTTP、FTP、SMTP和DNS等。
传输层:负责在源主机和目标主机之间建立可靠的连接,并提供数据传输的同步和流量控制功能。主要的协议是TCP和UDP。
网络层:负责处理数据包的路由和转发,负责将数据包从源地址传输到目的地址。主要的协议是IP和ICMP。
链路层:负责处理网络硬件之间的数据交换,负责将比特流组织成帧,并提供错误检测和纠正能力。常见的协议有Ethernet,ARP,RARP等

3.TCP和UDP的区别

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是传输层上的两种重要协议,它们之间的主要区别在于数据传输的方式和可靠性。

TCP协议是一种可靠的传输协议,它通过建立连接、发送数据、接收确认和重传数据等步骤来保证数据的可靠传输。TCP适用于需要保证数据传输可靠性的应用,例如文件传输、电子邮件、网页浏览等。这是因为TCP在传输数据时会进行排序、重传等操作,从而确保数据的正确性和完整性。此外,TCP还具有流量控制和拥塞控制等功能,可以有效地避免网络拥塞和数据丢失等问题 。

UDP协议是一种不可靠的传输协议,它不进行数据确认和重传,因此可能会出现数据丢失或乱序的情况。UDP适用于对数据传输可靠性要求不高的应用,例如音视频传输、实时游戏等。这是因为UDP不会进行排序、重传等操作,因此具有更高的传输效率和更低的延迟。但是,由于UDP不具有可靠性保证,因此可能会出现数据丢失或乱序等问题 。

4.TCP三次握手的过程

TCP三次握手是TCP协议中数据传输前建立连接的过程,包括以下三个步骤:
(1)客户端发送一个SYN报文到服务器,其中序列号为x,请求建立连接,此时客户端进入SYN-SENT状态。
(2)服务器收到SYN报文后,发送一个SYN+ACK报文作为应答,其中序列号为y,此时服务器进入SYN-RCVD状态。
(3)客户端收到服务器发送的SYN+ACK报文后,发送一个ACK报文作为确认,其中序列号为x+1,此时客户端进入ESTABLISHED状态,表示连接已经建立成功。
这样,TCP连接就建立起来了。在这个过程中,客户端和服务器共发送了3个报文 。

5.TCP为什么需要四次挥手来关闭连接

TCP需要四次挥手来关闭连接是因为全双工通信的双方都持有各自的数据缓冲区,当一方关闭连接时,可能会出现另一方还有数据未发送完毕的情况。
因此,TCP需要四次挥手来确保双方的数据都已经发送完毕并且关闭连接:
TCP四次挥手过程:
客户端向服务器发送一个FIN报文,其中序列号为x。
服务器收到FIN报文后,向客户端发送一个ACK报文,其中序列号为x+1。
客户端收到ACK报文后,向服务器发送一个FIN报文,其中序列号为x+2。
服务器收到FIN报文后,向客户端发送一个ACK报文,其中序列号为x+2+1。
这样,TCP连接就断开起来了。在这个过程中,客户端和服务器共发送了4个报文 。

HTTP

1.HTTP协议是什么?与HTTPS有何区别?

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它是一种用于从万维网服务器传输文本到本地浏览器的协议,基于TCP/IP协议来传送数据。HTTP协议的工作原理基于客户端-服务端(C/S)架构,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求,而Web服务器则处理这些请求并发送响应消息。
HTTP协议是一种用于从万维网服务器传输文本到本地浏览器的协议,基于TCP/IP协议来传送数据。它被设计出来主要是为了在网络上传输超文本(例如网页)。HTTP的默认端口是80。
HTTPS是HTTP的安全版本,使用了SSL+HTTP协议组成的可进行加密传输的网络协议,可以提供安全性。HTTPS使用443作为默认端口。

2.HTTP协议的请求和响应过程是什么?

HTTP协议的请求和响应过程是这样的:

浏览器发送一个HTTP请求给服务器,请求包含一个请求行、请求头部和请求数据。
服务器在收到请求后,会返回一个HTTP响应,响应包含一个状态行、响应头部和响应数据。
状态行的状态码表明了请求的处理结果,例如200表示成功,404表示未找到资源。
响应头部包含了关于响应的一些信息,例如内容类型、字符集等。
响应数据则是请求所需要的数据。

3.HTTP状态码有哪些?

HTTP状态码是HTTP协议响应中状态行的状态码,用于表明请求的处理结果。
1xx:临时响应。表示临时响应并需要请求者继续执行操作的状态代码。

  • 100:继续。请求者应当继续提出请求。
  • 101:切换协议。请求者已要求服务器切换协议,服务器已确认并准备切换。
    2xx:成功。表示成功处理了请求的状态代码。
  • 200:成功。服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
  • 201:已创建。请求成功并且服务器创建了新的资源。
  • 202:接受。服务器已接受请求,但尚未处理。
  • 203:非授权信息。服务器已成功处理了请求,但所需要的信息可能来自不同的源。
  • 204:无内容。服务器成功处理了请求,但没有返回任何内容。
  • 205:重置内容。服务器成功处理了请求,但没有返回任何内容。
  • 206:部分内容。服务器成功处理了部分GET请求。
    3xx:重定向。表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。
  • 300:多种选择。针对请求,服务器可执行多种操作。
  • 301:永久移动。请求的网页已永久移动到新位置。
  • 302:临时移动。请求的网页已临时移动到新位置。
  • 303:查看其他位置。
  • 304:未修改。所请求的资源未修改,服务器返回此状态码后,不会发送响应体。
  • 305:使用代理。所请求的资源必须通过代理访问。
  • 306:未使用。此状态码已不再使用,但仍被保留以防止出现冲突。
    4xx:客户端错误状态码。服务器无法处理请求
  • 400:错误请求。客户端发送了一个错误的请求。
  • 401:未授权。客户端未经过授权访问受保护的资源。
  • 402:需要付款。客户端可以访问该资源,但必须支付费用。
  • 403:禁止访问。客户端被禁止访问指定的资源或执行指定的动作。
  • 404:找不到资源。服务器无法找到客户端请求的资源(网页)。
  • 405:方法禁用。客户端使用的HTTP方法在服务器上被禁用。
  • 406:不接受响应。客户端不接受服务器返回的响应内容。
  • 407:需要代理授权。客户端需要进行代理认证才能访问目标资源,但未提供正确的认证信息或认证失败。
  • 408:请求超时。客户端发送的请求在服务器等待的时间内未被处理,超时时间通常为几十至几百毫秒不等。
  • 409:冲突。客户端和服务器之间发生了冲突或不一致的状态,例如重复的版本号或其他冲突条件导致的状态无法完成请求。
    5xx:服务器错误状态码。服务器处理请求出错
    ** 500:内部服务器错误**。服务器遇到了一个预料之外的情况,无法完成请求的处理,可能是由于服务器自身的软件错误、硬件故障、配置错误或程序代码错误等原因导致无法正常处理请求的情况
  • 501:未实现。服务器不具备完成请求的功能,例如客户端发送了一个服务器不支持的请求方法或路径等情况下,服务器返回此状态码;也可能是服务器由于缺乏实现的必要资源而无法完成请求的情况
  • 502:错误的网关或代理。服务器作为网关或代理,正在尝试执行请求,但收到了无效的响应或无法执行预期的操作的情况
  • 503:服务不可用(服务维护)。服务器目前无法使用(由于过载或停机维护),预计服务将在一段时间后恢复,客户端应重试或在另一段时间后再次访问该服务的情况
  • **504:网关超时。**作为网关或代理的服务器未能从上游服务器(例如数据库、负载均衡器和其他代理)在预定的时间内获取响应的情况
  • 505:HTTP版本不受支持。客户端使用的HTTP协议版本不受服务器支持的情况

4.HTTP协议的头部协议有哪些?

HTTP协议的头部信息是包含在HTTP请求和响应中的元数据,用于传递一些额外的信息。
常见的头部信息包括:
Content-Type:定义了响应数据的MIME类型,例如text/html表示HTML文档。
User-Agent:定义了发出请求的客户端的信息,例如浏览器类型、版本等。
Cookie:由服务器发送给客户端的小型数据片段,包含了一些用户相关信息,会在后续的请求中发送回服务器。

5.HTTP协议的长链接和短连接有什么区别?

HTTP协议的连接方式有两种:长连接和短连接。长连接指在一次连接建立后,多次发送请求和接收响应,直到连接关闭;而短连接则是每次发送请求都需要建立一次连接,接收响应后连接就关闭。

长连接:客户端与服务端先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在,所以可以保持连接状态,不需要每次请求都重新建立连接。
短连接:**客户端与服务端每进行一次报文收发交易时才进行通讯连接,交易完成后立即断开连接。**这种方式下由于通讯连接一直不存在,所以需要每次请求都重新建立连接。

HTTP默认使用的是短连接,因为这种方式对于大量并发请求更高效
但是有些情况下需要使用长连接,例如保持与服务器之间的长期通信或者实时更新数据等场景。
长连接可以通过在HTTP头部中设置Connection: keep-alive来实现,而短连接则不需要设置任何头部信息。

ARP

1.ARP协议是什么?它的作用是什么?

ARP协议是Address Resolution Protocol(地址解析协议)的缩写。
它的作用是将网络层的IP地址解析为数据链路层的MAC地址

2.ARP协议的基本原理是什么?

当一个设备需要发送数据到另一个设备时,首先需要知道接收设备的MAC地址
如果发送设备不知道接收设备的MAC地址,就会通过ARP协议来获取。
发送设备会广播一个ARP请求,这个请求中包含接收设备的IP地址。接收设备收到这个请求后,会返回一个ARP响应,这个响应中包含自己的MAC地址。发送设备收到这个响应后,就会将接收设备的IP地址和MAC地址对应起来,保存在自己的ARP缓存表中。

3.ARP协议有哪些常见的攻击方式?

ARP协议常见的攻击方式包括:

仿冒网关攻击:攻击者通过发送伪造的ARP报文,冒充网关地址,导致所有发送到该网关的流量都被攻击者获取,从而进行流量监听、数据篡改等恶意行为。
仿冒用户攻击:攻击者通过发送伪造的ARP报文,冒充其他用户的MAC地 址,使得其他用户的流量被攻击者获取,从而进行流量监听、数据篡改等恶意行为。
ARP欺骗网关:攻击者通过发送伪造的ARP报文,欺骗网关相信某个主机是合法的主机,从而将正常的数据报文发送到被攻击的主机上,导致数据泄露或网络故障。
ARP欺骗交换机:攻击者通过发送伪造的ARP报文,欺骗交换机相信某个主机是合法的主机,从而将流量引向被攻击的主机上,导致网络故障或流量泛洪。
ARP DoS攻击:攻击者通过发送大量的ARP请求或ARP响应报文,使得被攻击的主机无法处理正常的网络请求,从而导致拒绝服务攻击(DoS)的效果。
ARP MAC Flooding攻击:攻击者通过发送大量的ARP报文,使得交换机的ARP表溢出,从而导致网络故障或拒绝服务攻击(DoS)的效果。

4.如何防范ARP攻击?

防范ARP攻击的方法包括:
静态绑定:将IP地址和MAC地址进行静态绑定,避免ARP欺骗。
ARP防火墙:使用ARP防火墙来过滤ARP请求和响应,防止ARP攻击。
VLAN划分:通过VLAN划分来隔离广播域,减少ARP攻击的影响范围。
DHCP Snooping:通过DHCP Snooping来限制非法设备的接入,防止ARP攻击。

5.ARP协议在TCP/IP协议栈中的角色是什么?

ARP协议在TCP/IP协议栈中的角色是将网络层的IP地址解析为数据链路层的MAC地址,从而使得数据能够在网络中传输。

ICMP

1.ICMP协议是什么?作用是什么?

ICMP协议(Internet Control Message Protocol,互联网控制消息协议)是一种面向无连接的协议,用于在IP网络中传递控制信息。
它主要用于诊断网络故障、追踪路由、拥塞控制和慢速主机通知等功能。ICMP消息类型包括错误报告、信息查询和状态转换等。

2.ICMP协议与IP协议的关系是什么?

**ICMP协议是IP协议的一部分,用于处理在网络传输过程中出现的各种问题。**IP协议负责将数据分组并发送到目标主机,而ICMP协议则负责在数据传输过程中处理错误、拥塞和路由等问题。ICMP协议与IP协议共同工作,以确保数据的可靠传输。

3.ICMP协议有哪些消息类型?

ICMP协议的消息类型包括:

Echo请求(ping):用于测试目标主机的可达性。发送Echo请求后,目标主机将返回Echo应答消息,以确认其可达性。
路由报告(Router Discovery):用于发现网络中的路由器。通过发送路由报告消息,主机可以获取到目标网络的最佳路径。
重定向(Redirect):用于通知主机在数据包发送过程中遇到更好的路由,建议主机使用新的路由路径。
错误报告(Error Report):用于报告IP数据包传输过程中遇到的各种错误。例如,目的地不可达、超时等错误。
信息查询(Info Query)和状态转换(State Transition):用于获取网络状态信息和转换网络状态。

4.ICMP协议在网络安全中的应用?

ICMP协议在网络安全中具有多种应用。

  • ICMP FLOOD攻击:这是一种常见的网络安全威胁,攻击者可以通过发送大量的ICMP请求或响应报文,导致目标主机或网络资源耗尽,从而使其无法响应其他网络请求。为了防范这种攻击,可以采取一些措施,如限制ICMP报文的速率、过滤不必要的ICMP请求等。
  • 路由报告:ICMP的路由报告消息可以用于发现网络中的路由器,这可以帮助优化数据包的路由路径。
  • 错误报告:ICMP的错误报告消息可以帮助分析网络传输过程中出现的问题,例如超时、目的地不可达等错误。这些错误报告可以提供网络故障分析和排错的重要信息。

此外,ICMP协议还被用于网络诊断和排错,比如ping和tracert这两个常用网络管理命令。

  • ping:利用ICMP协议测试网络可达性,当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
  • tracert:通过发送一系列的“trace route”请求报文,来确定数据包到达目标主机所经过的路由路径。

5.ICMP如何用于网络诊断?

ICMP协议由于其消息类型和功能,非常适合用于网络诊断和排错。
例如,使用Echo请求消息可以测试目标主机的可达性,帮助找出网络中的故障点;路由报告消息可以用于发现网络中的路由器,帮助优化数据包的路由路径;错误报告消息可以帮助分析网络传输过程中出现的问题,例如超时、目的地不可达等错误。

DNS

1.DNS协议是什么?它有什么作用?

DNS协议是域名系统(Domain Name System),它是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。DNS的主要作用是为互联网的运行提供关键性的基础服务,使得用户能够在网络中通过域名方便地访问各种服务,而无需记住复杂的IP地址。

2.DNS的查询过程是什么?

1.浏览器发起DNS解析请求,将域名发送给本地DNS缓存服务器。
2.如果本地DNS缓存服务器中存在该域名的IP地址,则直接返回结果。
3.如果本地DNS缓存服务器中不存在该域名的IP地址,则向根域名服务器发送查询请求
4.根域名服务器返回该域名对应的顶级域名服务器的地址
5.本地DNS缓存服务器向顶级域名服务器发送查询请求。
6.顶级域名服务器返回该域名对应的权威DNS服务器的地址
7.本地DNS缓存服务器向权威DNS服务器发送查询请求。
8.权威DNS服务器返回该域名对应的IP地址。

3.DNS协议有哪些常见的安全问题?

DNS劫持:攻击者利用缺陷对用户的DNS进行篡改,将域名由正常IP指向攻击者控制的IP,从而导致访客被劫持到一个不可达或者假冒的网站,以此达到非法窃取用户信息或者破坏正常网络服务的目的。
DNS放大攻击:攻击者向公共DNS服务器发送DNS名称查询,使用受害者的地址作为源地址,导致公共DNS服务器的响应都被发送到目标系统。通过使用僵尸网络,攻击者也可以毫不费力地生成大量虚假DNS查询
缓存投毒:与目标在于阻塞DNS服务器的DDoS攻击不同,缓存投毒的目标是将访客从真正的网站重定向到恶意网站
DNS洪水攻击:攻击者通过向目标主机发送大量的DNS请求来使其无法处理正常的请求,从而导致目标主机宕机或者性能下降。

4.DNS协议的端口号?

53

5.DNS协议如何进行区域传输和复制?

DNS协议的区域传输和复制主要是通过在DNS服务器之间进行复制和更新操作实现的。
当一个DNS服务器收到一个查询请求并且该请求的区域在这个服务器上没有被缓存时,这个服务器就会向其他DNS服务器发送一个查询请求。如果其他服务器缓存了这个区域的DNS记录,那么这个服务器就会返回这些记录。如果其他服务器也没有这个区域的DNS记录,那么这个服务器就会向根域名服务器发送一个查询请求,然后根域名服务器会指向拥有这个区域DNS记录的服务器。这个过程就是DNS协议的区域传输和复制的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值