首页 > 其他分享 >计算机网络 基础面试第一弹

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

时间:2023-09-17 18:55:19浏览次数:48  
标签:发送 第一 TCP 计算机网络 面试 拥塞 DNS 服务器 数据

1. DNS解析过程

DNS解析(Domain Name System Resolution)是将域名转换为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提供无连接的、不可靠的、实时性较高的数据传输,适用于对实时性要求较高、对数据完整性要求较低的应用,如音视频传输、实时游戏等

 

标签:发送,第一,TCP,计算机网络,面试,拥塞,DNS,服务器,数据
From: https://www.cnblogs.com/beyond-tester/p/17709453.html

相关文章

  • 2023年icpc网络赛第一场七题代码
    A模拟题首先跑一遍,得到校排名然后对两个比赛的校排名进行合并即可#include<bits/stdc++.h>usingnamespacestd;intn,m;map<string,int>o;strings[10010];vector<string>a,b;intmain(){cin>>n>>m;for(inti=1;i<=n;i++){cin>&......
  • 如何在第一个查询没有结果时执行第二个查询 - MYSQL
    在MySQL中,您可以使用IFNULL()函数和UNION操作符来实现在第一个查询没有结果时执行第二个查询。下面是一个示例:SELECTcolumn1,column2FROMtable1WHEREconditionUNIONSELECTcolumn1,column2FROMtable2WHEREconditionANDNOTEXISTS(SELECTcolumn1,column2......
  • 认识Java及实现第一个Java应用程序
    【前言】Java是一种广泛使用的高级编程语言,具有面向对象、跨平台等特性,被广泛应用于Web开发、移动应用开发、桌面应用程序等领域。本文将介绍一个简单的Java应用程序,并对其进行代码实现和总结。【摘要】本文将展示一个简单的Java应用程序,实现了一个输出"Hello,Java!"的示例。通过......
  • CSP 20123 入门组第一轮
    2023CCF非专业级别软件能力认证第一轮,(CSP-J1)入门级C++语言试题考生注意事项:●试题纸共有10页。答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸上的一律无效。●不得使用任何电子设备(如计算器、手机、电子网费等)或查阅任何书籍资料。一、单项选择题(共15题,每......
  • pandas实现读取excel并删除第一条内容再保存
    想要实现的是,获取excel的第一条信息之后,把原excel的信息保存。再读取,再保存,这样,每次读取到的信息都是新的信息。工作需要大量的输入证件号查询信息,这样就避免了手动输入。importnumpyasnpimportpandasaspdimportopenpyxlimporttimelianxi=pd.read_excel('./练习.xl......
  • Linux常用操作指令(面试专用)
    Linux:免费开源,多用户多任务,衍生出很多附属版本,例如常用的RedHat。。。 常用指令ls    显示文件或目录   -l     列出文件详细信息l(list)   -a     列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir    创建目录......
  • 2023 JavaScript想进 BAT 的必须要面对的面试题
    2023JavaScript面试题以及答案在本文中,您将学习面试中最常见的JavaScript面试问题和答案。在继续学习JavaScript面试问题和答案之前,我们首先学习完整的JavaScript教程。JavaScript(JS)是使用最广泛的轻量级脚本和编译编程语言,具有一流的功能,由BrendenEich于1995年开发。众所周......
  • 第一周阅读笔记|人月神话
    阅读了前两章一个软件的实现,不仅仅是代码的完成,只是程序的完成还远远不够,更多的需要程序变成编程产品,这是可以被任何人运行、测试、修复和扩展的程序,它可以运行在多种操作系统平台上;同时程序还要变成编程系统,可以进行交互,并可以用来组装和搭建整个系统。最后成为编程系统产品,才是......
  • csp-s2023第一轮游记
    记录一下高二最后一次参加的初赛。2023.9.10放完半天假回学校发现这周六就初赛了,开始稍稍紧张了,不过还是踢了会球,搞点whk,下午最后一节课就直接跑机房了2023.9.11~2023.9.14白天上文化课抓紧写whk,不过因为化竞考完了,又临近信竞初赛,金导(去年国一,今年化竞省一的大佬)稍显不正常,一......
  • 《2023CSP-S第一轮(初赛)游记》2023.9.16
    菜是原罪从前有个流浪汉,他坐在那池塘旁,在一棵桉树的底下乘凉。他一边遥望一边歌唱,歌声在那池塘边上回荡,快来吧和我一起去流浪。流浪的人啊,流浪的人啊,我们一起走遍海角天涯,他一边遥望一边歌唱,歌声在那池塘边上回荡,快来吧和我一起去流浪。——《WaltzingMatilda》,澳大利亚民......