面试小结(四)——计算机网络

  • 计算机网络基础

    • OSI网络模型
      • 面试小结(四)——计算机网络

      • TCP/IP模型则对应是物理层,数据链路层,网络层,传输层,应用层
    • IP协议工作在网络层
    • HTTPS协议
      • 简单来说就是在HTTP协议上加上了SSL+TLS加密部分。用来保证传输数据的安全,并且可以验证网站服务器的真实身份。HTTPS标准端口是443,工作在传输层。相对应的HTTP标准端口是80,工作在应用层。
    • 为什么必须是三次握手和四次挥手
      • 面试小结(四)——计算机网络

         

      • 如果只有两次,假设主机A发送的第一个请求包延时,主机A在等待一段时间后重新发送一个请求包,完成数据连接并断开。但是这个时候上次的发的请求包才到达主机B,这时主机B认为是又一次连接,因此发送一个请求包给A,但是A并没有发送新的请求因此会丢失该数据包。最后,B就一直等待A发送数据,浪费了资源。另外,3次握手也更加安全,加大了攻击的难度。如果只有两次,一个发送一个应答,那么攻击着可以采用IP欺骗,发动SYN洪水攻击,并且服务端还都是ESTABLISHED状态。

      • TCP通信是一种全双工的通信,可以进行半关闭(与半打开区别:半打开是连接后的客户端和服务端有一端异常关闭了),所谓半关闭是指可以只关闭从A到B的方向,而B到A的方向还可以继续传输。因此,在客户端和服务器端分别进行关闭。

    • 在三次握手过程中,如果服务器一直收不到客户端的ack会发生什么
      • 当客户端发送第三个ACK给服务器丢失时,在过程中服务器处于SYNC_RECV状态,在收到第三个ACK后会进入ESTABLISHED状态。再等待一段时间(3s, 6s, 12s,)后没有收到客户端ACK,服务器会重新发出SYN+ACK,来触发客户端重新发送ACK。发送一定次数(默认是5,可以修改)还未收到客户端ACK后,服务器断开连接。若客户端认为连接已经建立并发送数据,服务器会发送RTS包响应错误。
    • TCP和UDP的区别
      • TCP基于有连接,UDP基于无连接。有连接就是TCP在传输前先发送连接请求和应答包,确定双方能够正常传输后,才开始进行数据传输。无连接就是UDP在发送数据之前,并不考虑对方能否接受到,甚至目的地址可能都是无效;

      • TCP能保证可靠传输,UDP不能保证可靠传输TCP。所谓可靠就是TCP能保证把数据一定送到目的地址。为了实现可靠,TCP采用有连接的,超时重传,应答机制等。而UDP则没有这些,也不能保证数据一定能送到;

      • TCP结构复杂,消耗资源多,建立过程较慢较复杂。UDP结构简单,消耗资源少,建立过程较快;

      • TCP基于流模式,UDP是数据报模式。TCP把数据看成一连串无结构的字节流,没有边界,一段段传输构成了整个数据块。通过发送缓冲区和接受缓冲区来存储数据流。而UDP数据报模式,每一个数据报都是一个独立的对象,有着指定的大小。

      • TCP连接只能是点到点,而UDP可以一对一,一对多或者多对多。TCP只能是点到点原因很简单,因为TCP的传输前要先建立连接。因此,广播和多播只能采用UDP数据报的方式。

      • TCP有确认,重传,拥赛控制机制,UDP在没有建立连接或者对方已经退出的情况下任然会继续发送数据,导致通信流量的浪费。