计算机网络 基础面试第一弹

发布时间 2023-09-17 18:51:04作者: 空慧居士

1. DNS解析过程

DNS解析(Domain Name System Resolution)是将域名转换为IP地址的过程。当您在浏览器中输入一个域名时,例如"www.example.com",您的计算机需要将该域名解析为对应的IP地址,以便能够建立与目标服务器的连接。

以下是DNS解析的详细过程:

  1. 发起解析请求:当您在浏览器中输入一个域名时,您的操作系统会发起一个DNS解析请求。该请求被发送到您计算机上配置的本地DNS服务器,通常由您的互联网服务提供商(ISP)提供。

  2. 本地DNS缓存查找:本地DNS服务器首先会在自己的缓存中查找是否已经解析过该域名。如果找到了对应的记录并且记录没有过期,本地DNS服务器将直接返回结果,解析过程结束。

  3. 递归查询:如果在本地DNS缓存中找不到对应的记录,本地DNS服务器将发起一个递归查询。它会向根域名服务器发送请求,询问该域名的顶级域(例如.com、.net)的DNS服务器的地址。

  4. 根域名服务器响应:根域名服务器收到请求后,会返回顶级域的DNS服务器的地址给本地DNS服务器。

  5. 顶级域DNS服务器响应:本地DNS服务器接收到顶级域DNS服务器的地址后,会向顶级域DNS服务器发送请求,询问该域名的权威域名服务器的地址。

  6. 权威域名服务器响应:本地DNS服务器继续向权威域名服务器发送请求,询问域名的IP地址。

  7. 返回解析结果:权威域名服务器收到请求后,会返回域名对应的IP地址给本地DNS服务器。

  8. 本地DNS服务器缓存结果:本地DNS服务器在返回IP地址给操作系统之前,会将解析结果保存在缓存中,以便下次查询时能够快速响应。

  9. 返回IP地址:最后,本地DNS服务器将解析得到的IP地址返回给操作系统,操作系统再将其提供给浏览器或应用程序,以建立与目标服务器的连接。

2. 常用的网络协议

常用的网络协议主要包括以下几种:

  1. 应用层协议:

    • HTTP(HyperText Transfer Protocol):用于在客户端和服务器之间传输超文本的协议,常用于网页浏览、数据传输等。
    • FTP(File Transfer Protocol):用于在客户端和服务器之间进行文件传输的协议。
    • SMTP(Simple Mail Transfer Protocol):用于发送电子邮件的协议。
    • DNS(Domain Name System):用于将域名解析为对应的IP地址的协议。
    • DHCP(Dynamic Host Configuration Protocol):用于自动分配IP地址和其他网络配置信息给客户端设备的协议。
  2. 传输层协议:

    • TCP(Transmission Control Protocol):提供面向连接的可靠数据传输服务,确保数据的可靠性、完整性和顺序性。
    • UDP(User Datagram Protocol):提供无连接的不可靠数据传输服务,适用于对实时性要求较高的应用,如音频、视频等。
  3. 网络层协议:

    • IP(Internet Protocol):负责定义在网络中传输数据的格式和规则,实现数据包的路由和寻址。
    • ICMP(Internet Control Message Protocol):用于在IP网络中进行错误报告和网络状况探测的协议。
    • ARP(Address Resolution Protocol):用于将IP地址解析为对应的物理MAC地址的协议。
  4. 数据链路层协议:

    • Ethernet:一种常用的有线局域网(LAN)协议,用于在局域网上进行数据传输。
    • Wi-Fi(Wireless Fidelity):用于在无线局域网(WLAN)上进行数据传输的协议。

      PPP(Point-to-Point Protocol):用于在点对点连接中进行数据传输的协议,如拨号上网。

3. cookie ,session,token 区别

Cookie:

  • Cookie是在客户端(浏览器)存储少量数据的一种机制。
  • 由服务器发送给浏览器,并存储在浏览器的本地文件中。
  • 每次浏览器向服务器发送请求时,会自动携带相应的Cookie。
  • 主要用于跟踪用户会话、存储用户偏好设置等。
  • Cookie可以设置过期时间,可以是会话级别的(浏览器关闭即失效)或具有持久性(在一段时间内有效)。

Session:

  • Session是在服务器端存储用户状态的一种机制。
  • 服务器为每个会话(用户访问)创建一个唯一的Session ID。
  • Session ID 通常以Cookie的形式发送给浏览器。
  • 浏览器每次请求时,会携带Session ID,服务器通过Session ID 来识别用户。
  • 服务器上的Session数据可以存储在内存中,数据库中或其他持久化的存储介质中。
  • 通常用于存储用户的登录状态、购物车信息等敏感数据。
  • Session会在一段时间内保持活动状态,超过一定时间的不活动会话会被服务器终止。

Token:

  • Token是一种代表用户身份认证信息的令牌。
  • 通常是一个长字符串,由服务器生成并发送给客户端。
  • 客户端在每次请求时将Token放在请求头或请求参数中发送给服务器。
  • 服务器通过验证Token的有效性来确定用户的身份和权限。
  • Token可以存储在客户端的本地存储(如LocalStorage、SessionStorage)中,也可以存储在Cookie中。
  • 由于Token自包含了用户信息和认证状态,服务器不需要维护会话状态,使得系统更容易扩展和分布。

4. TCP 保证可靠传输的手段有哪些

    1. 序列号和确认机制:
      TCP将数据分割成多个小的数据段,并为每个数据段分配一个序列号。接收方通过发送确认(ACK)消息来告知发送方已经成功接收到数据段,并确认下一个期望接收的数据段序列号。如果发送方在一段时间内未收到确认消息,会重新发送相应的数据段,以确保数据的可靠传输。

    2. 数据段的超时重传:
      当发送方发送数据段后,会启动一个定时器。如果在一定时间内未收到接收方的确认消息,发送方会重新发送该数据段。这种超时重传机制确保了即使数据段在传输过程中丢失或损坏,发送方仍会持续尝试发送,直到接收到确认消息。

    3. 流量控制:
      TCP使用滑动窗口机制来进行流量控制。每个数据段都有一个与之关联的接收窗口大小,在发送数据时,发送方会根据接收方的接收窗口大小来控制发送速率,避免发送过多的数据导致接收方无法处理。接收方可以通过调整接收窗口大小来控制发送方的发送速率,以适应自己的处理能力。

    4. 拥塞控制:
      TCP使用拥塞控制算法来避免网络拥塞。通过监控网络的拥塞情况,TCP会动态调整发送方的发送速率,以避免过多的数据拥塞网络,导致丢包和延迟。拥塞控制算法包括慢启动、拥塞避免和快速重传等,通过这些算法,TCP可以在网络拥塞时降低发送速率,并在网络状况好转时逐渐增加发送速率。

      5. 数据校验和错误检测:
        TCP在每个数据段中使用校验和字段,接收方在接收到数据段后会计算校验和,如果校验和与发送方发送的值不一致,说明数据段在传输过程中发生了错误,接收方会丢弃该                                     数据段并要求发送方进行重传。

5. TCP 拥塞控制有那4种方法

    1. 慢启动(Slow Start):
      慢启动是TCP连接刚开始发送数据时的一种机制。发送方在开始时将拥塞窗口(Congestion Window)设置为一个较小的值,然后随着时间的推移逐渐增加拥塞窗口的大小。具体来说,每当发送方成功收到一个确认消息(ACK),拥塞窗口大小就会加倍,这样发送方的发送速率就会逐渐增加。慢启动能够在连接刚开始时逐渐探测网络的容量,并且在网络拥塞之前适当地增加发送速率。

    2. 拥塞避免(Congestion Avoidance):
      拥塞避免是TCP在慢启动阶段之后采取的一种拥塞控制方法。一旦拥塞窗口达到一个阈值(通常是慢启动阶段的一半),发送方就会以线性方式增加拥塞窗口的大小,而不是指数增加。这样做是为了避免突然发送大量数据导致网络拥塞。拥塞避免通过逐渐增加发送速率来维持网络的稳定性。

    3. 快速重传(Fast Retransmit):
      快速重传是一种TCP拥塞控制的机制,用于快速重新发送丢失的数据段。当发送方连续接收到三个相同的确认消息(ACK),即收到了重复的ACK,就会认为某个数据段丢失并立即进行重传,而无需等待超时计时器的触发。这样可以更快地恢复丢失的数据段,提高传输的效率。

      4. 快速恢复(Fast Recovery):
       快速恢复是与快速重传相关的一种机制。当发送方进行快速重传时,它将把拥塞窗口减半,然后继续进行拥塞避免。但是,与完全进入慢启动阶段不同,快速恢复允许发送方继                       续以线性方式增加拥塞窗口的大小,而不是重新开始慢启动。这样可以更快地恢复发送速率,以避免网络拥塞。

6. TCP/UDP 协议的区别

  1. 连接导向 vs 无连接:
    TCP是一种面向连接的协议,它在通信之前需要先建立连接,然后进行可靠的数据传输,最后再释放连接。UDP是一种无连接的协议,通信双方之间不需要建立连接,可以直接发送数据包。TCP提供了可靠的数据传输,确保数据的完整性和顺序性,而UDP则更加轻量级,没有连接的建立和断开过程,适用于实时性要求较高的应用场景。

  2. 可靠性 vs 实时性:
    TCP通过序列号、确认机制、重传机制等手段实现可靠传输,确保数据的完整性和可靠性。它会自动处理丢失的数据包、重复的数据包和乱序的数据包,确保数据按正确的顺序到达。UDP不提供可靠传输机制,传输的数据包可能会丢失、重复或者乱序,不保证数据的可靠性。但正因为如此,UDP具有更低的延迟和更高的实时性,适用于对实时性要求较高、对数据完整性要求较低的应用,如实时音视频流传输、在线游戏等。

  3. 流式传输 vs 面向数据报:
    TCP提供的是面向流的传输,应用程序向TCP发送连续的数据流,TCP将其分割成合适的数据块进行传输。TCP保证数据的顺序和完整性,但是无法保证数据包的边界,因此接收方收到的数据是按照顺序组装后的连续数据流。UDP则是面向数据报的传输,应用程序将数据划分为数据报(Datagram)并发送,每个数据报是独立的实体,具有自己的边界。接收方收到的数据报与发送方发送的数据报一一对应,不会发生数据包的合并或拆分。

  4. 拥塞控制:
    TCP具有拥塞控制机制,通过慢启动、拥塞避免、快速重传和快速恢复等算法来避免网络拥塞和保持网络的稳定性。它会根据网络的拥塞状况动态调整发送速率。UDP没有内置的拥塞控制机制,它将所有数据包都发送出去,无论网络状况如何。这意味着在网络拥塞时,UDP可能会导致丢包和延迟增加。

综上所述,TCP提供可靠的、有序的、面向连接的数据传输,适用于对数据完整性要求较高的应用,如文件传输、网页浏览等。UDP提供无连接的、不可靠的、实时性较高的数据传输,适用于对实时性要求较高、对数据完整性要求较低的应用,如音视频传输、实时游戏等