0%

面试-计算机网络

https://blog.csdn.net/weiyuefei/article/details/50413543

  1. 计算机网络体系结构
    计算机网络体系结构

OSI七层模型及其包含的协议如下:
物理层: 通过媒介传输比特,确定机械及电气规范,传输单位为bit,主要包括的协议为:IEE802.3 CLOCK RJ45
数据链路层: 将比特组装成帧和点到点的传递,传输单位为帧,主要包括的协议为MAC VLAN PPP
网络层:负责数据包从源到宿的传递和网际互连,传输单位为包,主要包括的协议为IP ARP ICMP
传输层:提供端到端的可靠报文传递和错误恢复,传输单位为报文,主要包括的协议为TCP UDP
会话层:建立、管理和终止会话,传输单位为SPDU,主要包括的协议为RPC NFS
表示层: 对数据进行翻译、加密和压缩,传输单位为PPDU,主要包括的协议为JPEG ASII
应用层: 允许访问OSI环境的手段,传输单位为APDU,主要包括的协议为FTP HTTP DNS

TCP/IP 4层模型包括:
网络接口层:MAC VLAN
网络层:IP ARP ICMP
传输层:TCP UDP
应用层:HTTP DNS SMTP

  1. TCP和UDP的区别

    • TCP是面向连接的 UDP是面向无连接的
    • TCP使用的是全双工可靠的信道 UDP是不可靠信道
    • TCP只能进行一对一的单播 UDP可以进行组播和广播
    • TCP提供可靠的交付 UDP尽最大可能进行交付
    • TCP面向字节流的传输 UDP面向报文传输
  2. TCP如何保证可靠传输

    • 连接管理 保证可靠的连接
    • 校验和 确保传输无误
    • 序列号 将接收到的序号进行排序
    • 确认应答 告诉对方已经收到
    • 超时重传 保证不丢包
    • 流量控制 对网络进行适配
    • 拥塞控制 对网络进行适配
  3. TCP连接的三次握手,四次挥手

  4. 为什么要四次挥手
    因为 TCP 是全双工模式,客户端请求关闭连接后,客户端向服务端的连接关闭(一二次挥手),服务端继续传输之前没传完的数据给客户端(数据传输),服务端向客户端的连接关闭(三四次挥手)。所以 TCP 释放连接时服务器的 ACK 和 FIN 是分开发送的(中间隔着数据传输),而 TCP 建立连接时服务器的 ACK 和 SYN 是一起发送的(第二次握手),所以 TCP 建立连接需要三次,而释放连接则需要四次。

  5. 为什么客户端释放最后需要 TIME-WAIT 等待 2MSL 呢?
    为了保证客户端发送的最后一个 ACK 报文能够到达服务端。若未成功到达,则服务端超时重传 FIN+ACK 报文段,客户端再重传 ACK,并重新计时。
    防止已失效的连接请求报文段出现在本连接中。TIME-WAIT 持续 2MSL 可使本连接持续的时间内所产生的所有报文段都从网络中消失,这样可使下次连接中不会出现旧的连接报文段。

  6. DNS工作流程

  7. 请你说一说HTTP和HTTPS的不同

    • HTTP协议是以明文的方式在网络中传输数据,而HTTPS协议传输的数据则是经过TLS加密后的,HTTPS具有更高的安全性
    • HTTPS在TCP三次握手阶段之后,还需要进行SSL 的handshake,协商加密使用的对称加密密钥
    • HTTPS协议需要服务端申请证书,浏览器端安装对应的根证书
    • HTTP协议端口是80,HTTPS协议端口是443
  8. 浏览器中输入URL
    浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS服务器是基于UDP的,因此会用到UDP协议。

得到IP地址后,浏览器就要与服务器建立一个http连接。因此要用到http协议,http协议报文格式上面已经提到。http生成一个get请求报文,将该报文传给TCP层处理,所以还会用到TCP协议。如果采用https还会使用https协议先对http数据进行加密。TCP层如果有需要先将HTTP数据包分片,分片依据路径MTU和MSS。TCP的数据包然后会发送给IP层,用到IP协议。IP层通过路由选路,一跳一跳发送到目的地址。当然在一个网段内的寻址是通过以太网协议实现(也可以是其他物理层协议,比如PPP,SLIP),以太网协议需要直到目的IP地址的物理地址,有需要ARP协议。

  1. 请你说一说TCP拥塞控制
    1、慢开始
    2、拥塞避免
    3、快重传
    4、快恢复

  2. HTTP工作过程

    1. 客户端连接到Web服务器
    2. 发送HTTP请求
    3. 服务器接受请求并返回HTTP响应
    4. 释放连接TCP连接
    5. 客户端浏览器解析HTML内容
  3. 请你来说一下socket编程中服务器端和客户端主要用到哪些函数
    基于TCP的socket:
    基于UDP的socket:

accept()函数与三次握手的关系