计算机网络面试题总结与理解1

  • OSI七层模型:

    • 物理层:底层数据传输,传输比特流
    • 数据链路层:负责数据的封和差错检测(CRC校验)
    • 网络层:定义IP编址,负责数据的路由,转发,分片,不同设备的数据转发,传输数据报
    • 传输层:端到端传输数据的基本功能(TCP,UDP),传输报文段
    • 会话层:控制应用程序之间的会话能力,如A应用的数据发给B软件
    • 表示层:数据格式标识,负责把数据转换成兼容另一个系统能识别的格式
    • 应用层:给应用程序提供统一的接口,为用户的应用程序提供网络服务,传输报文
    • 各层比较重要常见的协议:
      • 应用层:
        • DNS(域名系统):是互联网使用的命名系统,用于从域名解析出IP地址。
        • HTTP
        • FTP:文件传输协议,利用TCP实现可靠传输。
        • TFTP:文件传送协议,基于UDP,不支持交互,有自己的差错改正措施。
        • TELNET:终端仿真协议,可用来实现远程调用,在客户端运行的指令让服务器执行。
        • SMTP:基于TCP,简单邮件传输协议。
        • IMAP:可使用户在本地运行IMAP程序,与接收方的邮件服务器建立TCP连接,操纵邮件服务的邮箱。
      • 传输层:
        • TCP:提供可靠的,面向连接的运输服务,点对点的,全双工通信。
        • UDP:无连接的,不可靠的运输服务,支持多播,广播。
      • 网络层:
        • IP:ipv4和ipv6
        • ARP:地址解析协议,从网络层使用的ip地址解析出在数据链路层使用的硬件地址。在主机ARP告诉缓存中存放一张ip地址到硬件地址的映射表。
        • RARP:逆地址解析协议。
        • ICMP:更有效的转发IP数据报和提高交付成功的机会,有两种报文:ICMP差错报告报文和ICMP询问报文。当路由器在处理一个数据包的过程中发生了意外,可以通过ICMP向数据包的源端报告有关事件。
        • RIP:基于距离向量的路由选择协议,要求路由器维护它从自己到其他每一个目的网络的距离记录。
    • TCP为什么需要三次握手?四次挥手?

      • 三次握手:
      1. 客户端给服务器发送一个SYN报文(ISN初始化序列号),客户端处于SYN_SENT状态。
      2. 服务器接受SYN报文,知道客户端具有传送能力,再传送一个SYN(服务器的初始化序列号ISN)+ack(客户端的ISN+1)报文,服务器处于SYN_RCVD状态。维护半链接队列。
      3. 客户端收到SYN+ACK报文,知道服务器具有接受和发送能力,回应一个ack(服务器的ISN+1)报文,客户端处于established状态。
      4. 服务器接收到ACK,处于established状态,建立链接成功。
      5. 通过三次握手1.可以确认双方是发送接收能力。2.可以防止已经失效的请求报文段突然又传到服务器(SYN+ACK)。
      6. 补充:服务器的SYN-ACK有重传机制,可利用进行SYN攻击,可用防火墙设置超时时间,但是无法完全避免。
      • 四次挥手:
      1. 初始,客户端和服务端都处于established状态,客户端发送一个FIN报文,指定一个序列号,客户端处于FIN_WAIT1状态。
      2. 服务端收到FIN,发送ack报文(FIN+1),处于CLOSED_WAIT状态。
      3. 服务端发送一个FIN报文,指定一个序列号,表示也想断开连接,处于LAST_ACK状态。
      4. 客户端收到FIN,发送一个ack(服务端的FIN+1),处于TIME_WAIT状态,需要过一段时间确保服务端收到ack再进入CLOSED状态。
      5. 服务端收到ACK,处于CLOSED状态。
      6. 理解TIME_WAIT,当客户端的ack丢了,服务端会重新发送FIN,客户端再次收到FIN后就知道前面的ack丢了,会再次发送ack报文。TIME_WAIT时间至少是一个报文的来回时间,超过这个时间没有收到FIN,就可以处于CLOSED状态了。
      7. 客户端发送FIN之后只是表示不再发送数据了,但是还是能接收数据,服务端这个时候数据有可能没有传输完成,可以在发送FIN之前传完,当数据传完之后就可以传FIN表示服务端也可以关闭了。所以一般服务端的ack和FIN会分开传。也有FIN+ack一起传的。
    • TCP和UDP的区别及各自的应用场景:

      • 区别:
      1. TCP是可靠传输,UDP不是
      2. TCP面向连接,UDP不是
      3. 传输速度TCP<UDP
      4. TCP有流量控制和拥塞控制,UDP没有
      • 对应的协议:
      1. TCP:HTTP,HTTPS,FTP,TELNET,SMTP
      2. UDP:TFTP,DNS
    • UDP如何实现可靠传输,有什么意义:

    1. 在应用层实现可靠传输。
    2. 发送数据时,生成一个随机seq=x,然后每一片按照数据大小分配seq。数据到达接收端后接收端放入缓存,并发送一个ack=x的包,表示对方已经收到了数据。发送端收到了ack包后,删除缓冲区对应的数据。时间到后,定时任务检查是否需要重传数据。
    3. 目前有如下开源程序利用udp实现了可靠的数据传输。分别为RUDP、RTP、UDT。
    4. HTTP/3使用QUIC,基于UDP。TCP协议过于重量级,效率不高,而且硬编码在操作系统中,不好优化,而UDP则很纯洁,传输效率高,可操作空间大。
  • TCP如何实现流量控制和拥塞控制:

     

    • 流量控制:如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。流量控制根本目的是防止分组丢失,它是构成TCP可靠性的一方面。
    1. 滑动窗口协议:接收方的ack中会返回接收窗口的大小
    • 拥塞控制:主要作用于网络,防止过多的数据注入到网络中,避免出现网络负载过大的情况;常用的方法就是:( 1 )慢开始、拥塞避免( 2 )快重传、快恢复。
    1. 慢开始:发送方维持一个叫做拥塞窗口cwnd,一个传输轮次所经历的时间其实就是往返时间RTT,每经过一个传输轮次(transmission round),拥塞窗口cwnd就加倍。为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。
    2. 拥塞控制:出现拥塞的判断(没有按时收到信息)
    3. 快重传要求接收方在收到一个失序的报文段后就立即发出重复确认。发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
    4. 快恢复:当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半(为了预防网络发生拥塞)。但是接下去并不执行慢开始算法
      考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh减半后的值。
  • HTTP1.0 1,1 2.0的特征:

    1. 无状态:服务器不跟踪不记录请求过的状态
    2. 无连接:浏览器每次请求都需要建立tcp连接
    3. 无状态导致的问题可以借助cookie和session机制来做身份认证和状态记录解决。
    4. Cookie和Session的区别:1.cookie存储在客户端。不可跨域。2.session存储在服务端,基于cookie实现,通过cookie中存储sessionID来实现。
    • HTTP1.1:
    1. 长连接。HTTP/1.1增加了一个Connection字段,通过设置keep-alive,可以保持连接不断开,避免了每次客户端与服务器请求都要重复建立释放TCP连接,提高了网络的利用率。如果客户端想关闭HTTP连接,可以在请求头中携带Connection:false来告知服务器关闭请求。

    2. 支持请求管道化(pipelining)服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。HTTP管道化可以让我们把先进先出队列从客户端(请求队列)迁移到服务端(响应队列)。无法避免对头阻塞(下一个请求必须在前一个请求响应到达之前才能发送)

    3. 加入缓存处理。

    • HTTP2.0:

    1. 二进制传输而非HTTP1.X的文本传输。

    2. 多路复用,支持一个TCP连接,并行交错的请求和响应。

    3. 头部压缩,HTTP1.X头部都是文本传输,而2.0使用encoder。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值