【TCP面试考点】9个知识点教你怎么答

1,610 阅读5分钟
乌鸦反哺:

《本草纲目·禽部》载:
“慈乌:此鸟初生,母哺六十日,长则反哺六十日。”
大意是说,小乌鸦长大以后,老乌鸦不能飞了,不能自己找食物了,
小乌鸦会反过来找食物喂养它的母亲。

借用这个典故,我希望表达的意思是:当我们和面试官探讨相关知识的时候,能够让他从你这得到更多的理解,从而达到反哺的效果。

希望这篇文章能给你带来帮助。

1.五层协议

计算机网络中,五层协议的体系结构如下:

五层协议模型

运输层是整个网络体系结构中的关键层次之一。

网络层为主机之间提供通讯逻辑,而运输层为应用进程之间提供端到端的逻辑通信。

2.复用和分用

运输层服务于应用层。

运输层一个很重要的功能就是复用和分用。

运输层相当于一个办公室,应用层所有的应用进程都可以通过运输层传递给网络层(复用)。

运输层从网络层接受到数据后,分别交付给指明的应用进程(分用)。

不同主机的不同进程使用协议端口号(protocol port number)识别对方。

3.用户数据报协议 UDP

UDP的一些特点:

  1. UDP是无连接的,即发送数据之前不需要建立连接。
  2. UDP尽最大努力交付,但不保证可靠交付。
  3. UDP是面向报文的。
  4. UDP没有拥塞控制。
  5. UDP支持一对一、一对多、多对一和多对多的交互通信。
  6. UDP首部开销小。

总结就是:快狠准,我管你收没收到。

UDP的报文首部只有4个字段:源端口、目的端口、报文长度和检验和。

4.传输控制协议 TCP

TCP的一些特点:

  1. TCP是面向连接的,使用TCP协议之前,必须建立连接。
  2. TCP提供可靠交付的服务。无差错、不丢失、不重复、按序到达。
  3. TCP是面向字节流的。
  4. TCP有拥塞控制。
  5. TCP只能是一对一。
  6. TCP提供全双工通信。

TCP的所有特性都是为了保证可靠性。

5.超时重传

B接收M1时检测出了差错,就丢弃M1,或者是M1传输过程中丢失。在这两种情况下,B都不会发送任何信息。

只要A超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,因为重传前面发送过的分组。这就叫超时重传。

超时重传实现的原理是每发送完一个分组时设置一个超时计时器。如果未超时就销毁该计时器,否则重发分组。

下面这种确认迟到的情况A什么都不会做。

6.以字节为单位的滑动窗口

TCP的滑动窗口是以字节为单位的。接收方会把自己的接收窗口数值放在窗口字段中发送给对方,已保证A的发送窗口不会大于B的接收窗口。

发送窗口前沿通常是不断向前移动的,以下两种情况会导致发送窗口停止滑动:

  1. A发送窗口没有收到新的确认。
  2. B接收窗口接收的窗口缩小了。

7.TCP 的连接建立

TCP 建立连接的过程叫做过程,握手需要在客户合服务器之间交换三个TCP报文段。

为什么需要三次?不能两次?

现在有这么一种情况,A发送的第一个请求报文段M1在网络中滞留,B未收到。A超时未收到确认,触发超时重传。

A再次发送请求报文段M2,这之后都是正常的,A与B建立连接完成数据传输然后断开连接。

此时滞留在网络中的请求报文段M1才传送给B,若只需要两次握手就建立连接,B将请求报文段发送给A后将建立连接。

A会将这个延迟的报文丢弃掉,不会建立连接。因此导致B的许多资源就这样白白浪费了。

8.TCP的连接释放

TCP断开连接需要四次握手,是因为其全双工的特性。即客户端A与服务端B两者既能发送报文,也能接收报文。

值得注意的是,A在收到B的连接释放报文段后,发出确认报文段。之后A并没有直接关闭,而是进入TIME-WAIT(时间等待)状态。

等待的时间是2MSL,MSL叫做最长报文段寿命(Maximum Segment Lifetime),RFC793建议设为2分钟。

如果A在2MSL没收到B发送的重传报文段,则表示B已收到A发送的关闭信号。2MSL是接收B的重传报文的最长时间。

9.保活计时器(keepalive timer)

假设客户段与服务器已建立了TCP连接,但是客户端由于异常挂掉。若服务器连续发送10个探测报文后,间隔一般为75秒,客户端都没有回应则关闭连接。

10.面试常问

  1. 讲讲计算机网络的五层模型
  2. 讲讲运输层的复用与分用
  3. TCP与UDP的区别
  4. 讲讲TCP的三次握手(理解三次握手图)
  5. 讲讲TCP的四次挥手(理解四次挥手图,可讲2MSL细节)
  6. TCP为什么是可靠的(从TCP的特性出发答)
  7. TCP能两次握手建立连接吗?为什么(可以建立,但资源浪费,如上文)

ps: 如想要《计算机网络第7版》的 可留言/