面试整理——网络

网络

第一节 综合

问:浏览器输入url发生了什么?细说,包括每一层涉及到的协议

  1. 浏览器解析URL:根据不同协议,浏览器理解并拆分URL。
  2. 根据网址含义生成HTTP请求信息。
  3. 向DNS服务器查询域名对应IP地址。
  4. 浏览器委托操作系统向Web服务器发送请求。
  • 浏览器解析URL
  • DNS域名解析
  • 建立TCP连接
  • 发送HTTP请求,服务器处理,并返回响应结果
  • 关闭TCP连接
  • 浏览器渲染

问:OSI 七层模型?五层协议?TCP/IP?

五层协议:

  • 应用层 :为特定应用程序提供数据传输服务,例如 HTTPDNS 等协议。数据单位为报文。
  • 传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:
    • 传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;
    • 用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。
    • TCP 主要提供完整性服务,UDP 主要提供及时性服务。
  • 网络层 :为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组。
  • 数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
  • 物理层 :考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

OSI七层模型:

  • 应用层
  • 表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
  • 会话层 :建立及管理会话。
  • 运输层
  • 网路层
  • 数据链路层
  • 物理层

五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。

TCP/IP:

它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。

TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。

问:举例网络协议,都在哪个层?

问:网络层和传输层如何区分?

  • 网络层负责ip数据报的产生以及ip数据包在逻辑网络上的路由转发。传输层提供端到端通信服务层次,提供可靠及非可靠连接。
  • 网络层只是根据网络地址将源结点发出的数据包传送到目的结点(点到点),其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
  • 传输层则负责将数据可靠地传送到相应的端口(端到端),传输层提供了主机应用程序进程之间的端到端的服务。传输层利用网络层提供的服务,并通过传输层地址提供给高层用户传输数据的通信端口,使高层用户看到的只是在两个传输实体间的一条端到端的、可由用户控制和设定的、可靠的数据通路。

问:讲一下物理层的三种通信方式?

  • 单工通信:单向传输
  • 半双工通信:双向交替传输
  • 全双工通信:双向同时传输

问:讲一下信道复用技术?

信道分类:

  1. 广播信道:一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到。

    所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。

    主要有两种控制方法进行协调,一个是使用信道复用技术,一是使用 CSMA/CD 协议。

  2. 点对点信道:一对一通信。

    因为不会发生碰撞,因此也比较简单,使用 PPP 协议进行控制。

信道复用技术:

  1. 频分复用:频分复用的所有主机在相同的时间占用不同的频率带宽资源。

  2. 时分复用:时分复用的所有主机在不同的时间占用相同的频率带宽资源。

    • 使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。
  3. 统计时分复用:是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。

  4. 波分复用:光的频分复用。由于光的频率很高,因此习惯上用波长而不是频率来表示所使用的光载波。

  5. 码分复用:为每个用户分配 m bit 的码片,并且所有的码片正交,对于任意两个码片 imgimg

    img

    为了讨论方便,取 m=8,设码片 img 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。

    在计算时将 00011011 记作 (-1 -1 -1 +1 +1 -1 +1 +1),可以得到

    img

    img

    其中 imgimg 的反码。

    利用上面的式子我们知道,当接收端使用码片 img 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是用户发送的比特 1,结果为 -1 的是用户发送的比特 0。

    码分复用需要发送的数据量为原先的 m 倍。

问:路由器是如何工作的?

路由器主要工作在OSI网络模型的网络层,路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要传输层和应用层。

问:MAC地址长度?如何保证每台机器地址不同?

MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。

一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。

IEEE 会根据设备的制造商分配地址段,48 位 MAC 地址的前 24 位是设备制造商的标识符,也就是组织唯一标识符(Organizationally Unique Identifier,OUI),后面的 24 位是序列号;如果每个设备制造商都能保证在同一个命名空间中的全部 MAC 地址唯一,那么全世界所有的 MAC 地址就可以保证唯一。

问:长连接和短连接,连接池适合长连接还是短连接?

HTTP长连接和短连接

菜鸟学网络之 —— 长连接和短连接

问:讲一下半连接攻击?

问:讲一下NAT?


第二节 TCP/IP

问:TCP和UDP的区别?udp为什么要比tcp快?

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务端保存的一份关于对方的信息,如ip地址、端口号等。

问:TCP如何实现可靠连接/传输?

问:为什么要有TimeWait状态?

TimeWait的等待时长一般是多少?为什么Time_Wait中2*msl?

问:如果TCP突然接收方故障会发生什么?

TCP设有一个保活计时器,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

问:一个url从输入到访问经过了哪些过程?

问:TCP怎么计算网络延迟?

网络延迟的采样方法。

问:TCP三次握手和四次挥手?

标志位字段:

  • ACK:确认序号有效。
  • FIN:释放一个连接。
  • PSH:接收方应该尽快将这个报文交给应用层。
  • RST:重置连接。
  • SYN:发起一个新连接。
  • URG:紧急指针(urgent pointer)有效。

三次握手:

(1):客户端发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。

(2):服务端收到连接请求报文,通过SYN=1知道是连接请求,如果同意建立连接,保存序号,向客户端发送连接确认报文,SYN=1,ACK=1,确认号ack= x+1,同时也选择一个初始的序号 y。

(3):客户端收到连接确认报文后,还要向服务端发出确认,确认号为 y+1,序号为 x+1。(不携带数据的ACK报文是不占据序列号的,所以后面第一次正式发送数据时seq还是101))

TCP四次挥手

(1):客户端发送终止命令报文,FIN=1,序列号=x + 1 + n = u,此后客户端无法再发送数据,但可以接收。

(2):服务端收到后回复确认报文,ACK=1,确认号ack=u + 1,服务端处于close_wait状态,在此期间将未发送完的数据发送。

(3):服务器将最后的数据发送完毕后发送连接释放报文,FIN=1,ACK=1,序列号=w,确认号ack=u + 1,给客户端后处于last_ack状态

(4):客户端收到FIN报文后,发送确认报文,ACK=1,序列号=u+1,确认号ack=w + 1,发送ack后处于tim-wait等待2倍最大报文寿命时长而后进入closed状态,释放TCP连接。服务端收到确认报文后即进入closed状态。

问:为什么要进行第三次握手,而不是二次?

首先要考虑连接时丢包问题,如果是两次,第二次握手时确认报文丢失,而且服务端已做好接收准备(开启一些无用的连接),但客户端未收到确认所以不会发送数据。三次握手的情况,若服务端未收到确认ack报文,就会重新进行第二次握手。

  • 防止服务器端开启一些无用的连接增加服务器开销
  • 防止已失效的连接请求报文段突然又传送到了服务端

问:为什么连接时是三次,释放时却是四次?

  • 连接时没有特殊要求,而断开时需要考虑数据是否发送完全。
  • 服务端需要等待数据发送完毕再给客户端发送FIN报文,而不能一次性发布确认报文和FIN报文,所以多出了一次。

问:为什么客户端发出第四次挥手的确认报文后要等2MSL的时间才能释放TCP连接?

同样是要考虑丢包的问题,如果第四次挥手的报文丢失,服务端没收到确认ack报文就会重发第三次挥手的报文,这样报文一去一回最长时间就是2MSL,所以需要等这么长时间来确认服务端确实已经收到了。

问:TCP有哪些状态,相应状态的含义?

问:TCP和UDP的比较?

TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务。 虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为 对数据准确性要求高,速度可以相对较慢的,可以选用TCP

问:说一下dns的原理?

问:TCP拥塞控制?


第三节 HTTP

问:简单谈谈对HTTP的了解?

问:说一下post和put的数据是放在哪个字段?

问:HTTP状态码含义:503,504,505,403,200?

问:GET和POST区别?

问:知道HTTP1.0和1.1的区别么?

问:谈谈什么是HTTP的长连接和短连接?

HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。

问:cookie、session、token三者区别以及优缺点?


参考内容均来自网络中网友分享,若内容涉及侵权请及时告知,我会尽快修改和删除相关内容