计算机网络重要概念记录

Posted by Reborn on October 31, 2018

1. OSI七层模型及各层设备对应?

OSI从顶至底7层分别为:应用层,表示层,会话层,传输层,网路层,数据链路层,物理层。

  • 应用层:负责确定通信对象,确保提供足够的资源用于通信。提供为应用软件而设的接口,以设置与另一应用软件之间的通信。该层协议有HTTPHTTPSFTPTELNETSSHSMTPPOP3
  • 表示层:负责把数据转换为能与接收者系统兼容并合适传输的格式。
  • 会话层:负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。
  • 传输层:把传输表头加至数据中形成数据包。该层协议有TCPUDP
  • 网络层:决定数据路径选择和转发,将网络表头添加到数据包中,以进行分组。该层协议有IP协议。
  • 数据链路层:负责网络寻址,错误侦测和改错。当表头和表尾加至数据包中,会形成帧。数据链路层的表头(DLH)是包含了物理地址和错误检测以及改错的方法。表尾(DLT)是一串指示数据包末端的字符串。分为两个子层:逻辑链路控制(logic link control,LLC)子层和介质访问控制(media access control,MAC)子层。
  • 物理层:负责管理计算机通信设备和网络媒体之间的互通。

网络连接设备

  1. 中继器(Repeater)和集线器(Hub)属于物理层设备。
  2. 网桥(Bridge)和交换机(Switch)属于数据链路层中的逻辑链路层,用于连接同一逻辑网络中、物理层规范不同的网段。
  3. 路由器(Router)属于网络层设备,用于连接不同的逻辑网络
  4. 网关(Gateway)属于应用层,用于互联网络中使用不同协议的应用程序之间的数据通信。暂无硬件实现。

IP地址分类

TCP停止等待、超时重传、滑动窗口、拥塞控制、快重传和快恢复

  • 停止等待:当发送窗口和接受窗口都等于1时,发送端给接收端发送数据,等待接收端确认回复ACK,并停止发送新的数据包,开启定时器,超时重传。停止等待协议降低了信道的利用率。
  • 超时重传:TCP发送数据后会设置一个定时器,根据这个超时重传时间(RTO),在RTO内没收到ack确认包,则会重传。

  • 拥塞控制:拥塞控制的具体过程如下:

    (1)TCP连接初始化,将拥塞窗口设置为1

    (2)执行慢开始算法,cwnd按指数规律增长,直到cwnd=ssthresh时,开始执行拥塞避免算法,cwnd按线性规律增长

    (3)当网络发生拥塞,把ssthresh值更新为拥塞前ssthresh值的一半,cwnd重新设置为1,按照步骤(2)

    ( 以上过程摘自郑学炜 的CSDN 博客

    • 快速重传:要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方),而不要等到自己发送数据时捎带确认。发送方只要一连收到3个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计数器时间到期。
    • 快速恢复:(1)当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始门限ssthresh减半。这是为了预防网络发生拥塞。请注意:接下去不执行慢开始算法。 (超时才重新执行慢开始算法)(2)由于发送方现在认为网络很可能没有发生拥塞,因此与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1),而是把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

超时的时候会启用慢启动和避免拥塞算法。

重复确认可以避免过长时间的等待,会启用快速重传和快速回复。

  • 滑动窗口和拥塞窗口:滑动窗口是接受数据端使用的窗口大小,用来告知发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制的目的,实现了流量控制。也就是发送端窗口是由接收窗口剩余大小决定的。接收方会把当前接收窗口的剩余大小写入应答报文,发送端收到应答后根据该值和当前网络拥塞情况设置发送窗口的大小,所以发送窗口的大小是不断变化的。

    对于数据的发送端就是拥塞窗口了,拥塞窗口不代表缓存,拥塞窗口指某一源端数据流在一个RTT内可以最多发送的数据包数。

关于TIME_WAIT和CLOSE_WAIT

发起TCP连接关闭的一方为Client,被动关闭的一方为Server。被动关闭的Server方接收到FIN后,未发出FIN和ACK的TCP状态为CLOSE_WAIT状态。当服务器出现大量CLOSE_WAIT时,需要好好检查一下Server端的代码了。

当Server发出FIN=1, ACK=1断开请求时,Client端会进入TIME_WAIT状态(持续2MSL),用来保证被重新分配的Socket不会受到之前残留的延迟重发的报文影响。

  • 保证TCP协议的全双工连接能够可靠关闭
  • 保证这次连接的重复数据段从网络中小时