「面试」-网络相关整理ing

141 阅读6分钟

最近有约一些面试,但是由于自己的侥幸心态,觉得HTTP、网络原理不重要,根本没有针对去看。结果真的问到这里,尴了大尬(后悔大学时不好好听😂)。

本篇整理一些自己在各种博客上看到的,供自己复习使用。

OSI

OSI全称为开放式系统互联通讯参考模型。OSI将计算机网络体系结构划分为7层。

  1. 物理层
  • 功能:以'0','1'代表电压的高低、灯光的闪灭,界定连接器和网络的规格;也就是比特流和电子信号之间的切换。
  • 设备:中继器。
  • 对应TCP/IP分层模型:硬件层,设备驱动程序与网络接口。
  1. 数据链路层
  • 功能:互连设备之间传送的识别数据帧,即数据帧和比特流之间的转换。
  • 对应的TCP/IP分层模型:网卡层(网络接口层),设备驱动程序与网络接口。
  1. 网络层
  • 协议:
    • IP
    • DNS:域名->IP
    • ARP:以IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。
      • 借助ARP请求与ARP响应两种类型的包确定MAC地址。

    • NAT:私有地址->全局地址
  1. 传输层:把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息,例如:传输控制协议(TCP)等。
  2. 会话层:负责在数据传输中设置和维护计算机网络中两台计算机之间的通讯连接。
  3. 表示层:将数据转化为能与接收者的系统格式兼容并适合传输的格式。
  4. 应用层:提供为应用软件而设的接口,以设置与另一软件之间的通信。例如:HTTP、HTTPS、FTP、TELNET、POP3、SMTP、SSH等。

TCP/IP四层模型由OSI7层模型简化而来,是一个应用的具体实现。

image.png

TCP/IP

链路层

又名数据链路层,网络接口层。用来处理网络连接的硬件部分。

网络层

又名网络互联层。用来处理在网络上流动的数据包。

传输层

对应用层提供处于网络连接中两台计算机的数据传输。网络层是主机到主机之间的通信,而传输层是建立端口到端口的通信。代表:UDP、TCP。

image.png

三次握手

  • 客户端发送带有SYN标志的数据包给服务端。
  • 服务端发送带有SYN/ACK标志的数据包给客户端。
  • 客户端发送带有ACK标志的数据包给服务端。

为什么要有三次握手?

三次握手的目的是建立可靠的通信信道,简单来说就是数据的发送与接受,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

第一次握手:Client什么都不能确认;Server确认了对方发送正常,自己接收正常。 第二次握手:Client确认了,自己发送、接收正常,对方发送、接收正常;Server确认了,对方发送正常,自己接收正常。 第三次握手:Client确认了,自己发送、接收正常,对方发送、接收正常;Server确认了,自己发送、接收正常,对方发送、接收正常。

为什么要传回SYN

接收端传回发送端所发送的SYN是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。

SYN是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。

四次挥手

image.png

断开一个TCP连接则需要“四次挥手”:

  • 客户端发送一个FIN,用来关闭客户端到服务器的数据传送。
  • 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
  • 服务器关闭与客户端的连接,发送一个FIN给客户端。
  • 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

为什么要四次挥手

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。

TCP和UDP区别

image.png

UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等。

TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这一难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。

应用层

就是平时接触最多的一层,比如HTTP,DNS,FTP。

以 HTTP 为例,为了传输方便在传输层(TCP协议)把从应用层收到的数据(HTTP报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。

在网络层(IP协议),增加作为通讯目的地的 MAC 地址后转发给链路层。

接收端的服务器在链路层收到数据,按序往上层发送,一直到应用层。

image.png