校招面试之——网络相关

最近校招季,特把本身面试中遇到的问题整理整理,以巩固本身的知识。web

对于网络这块,面试官通常喜欢问的是ISO/OSI参考模型和TCP/IP协议族方面的知识,下面咱们就来看看吧。面试

首先,咱们先给出它们的结构图服务器

OSI,TCP/IP参考模型图


OSI,TCP/IP参考模型图

注意:图中有一个Hardware层,图中显示它和OSI模型中的物理层(Physical)相对应,其实严格意义上说,它是不属于TCP/IP协议族中的一员的,这个层次包括网线的制式,网卡的定义,负责网络的传输。网络


OSI

Open System Interconnection,即开放式系统互联。OSI先有模型,后有协议,先有标准,后进行实践。且OSI只是一种理想的模型,并无真正使用。tcp

TCP/IP

TCP/IP则是先有协议和应用再提出了模型,且是参照的OSI模型。TCP/IP现已被普遍使用,已成为网络互联实际上的标准。svg

TCP:Transmission Control Protocol,传输控制协议
IP:Internet Protocol Address,网际协议地址
UDP:User Datagram Protocol,用户数据报协议xml

TCP/IP协议中各个层次的功能

  • 应用层:为用户提供各类须要的服务,例如FTP,Telnet,DNS,SMTP。
  • 传输层:为应用层实体提供端到端的通讯功能。该层定义了两种主要的协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供的是一种可靠的、面向链接的数据传输服务,UDP提供的是不可靠的、无链接的数据传输服务。
  • 网际互联层:主要解决主机到主机的通讯问题。其中最重要的一个协议是IP协议(网际协议),它提供的是一种不可靠、无链接的数据报传输服务。
  • 网络接口层:与OSI模型中的数据链路层和物理层相对应。

TCP和UDP的区别

TCP提供了一种可靠的数据传输服务,TCP是面向链接的。利用TCP通讯的两台主机首先要经历一个“拨打电话”的过程,等到通讯准备结束后才开始传输数据,最后结束通话。UDP是直接把数据发出去,而无论对方是否是在收信,就算是UDP没法送达,也不会产生ICMP差错报文。排序

一个TCP数据的发送过程

  1. 双方创建链接。
  2. 发送方给给接收方TCP数据报,而后等待对方的确认TCP数据报。若是在必定的时间内没有收到确认数据报,就从新发送刚才发送的数据报;若是收到了,就发送下一个数据报。
  3. 接收方等待发送方的数据报,若是获得数据报并检验无误,就发送ACK(确认)数据报,并等待下一个TCP数据报的到来,直到接收到FIN数据报(发送完成数据报)。
  4. 终止链接。

TCP链接的创建和终止

  1. 链接的创建接口

    在创建链接的时候,客户端首先向服务器申请打开某一端口,而后服务端发回一个ACK报文通知客户端请求报文收到,客户端收到确认报文后再次发出确认报文确认刚才服务端发出的确认报文本身收到。至此,链接的创建完成,这也叫作“三次握手”。ip

  2. 结束链接

    TCP有一个特别的概念叫作half-close,这个意思是说TCP的链接是全双工链接(能够同时发送和接收)。所以在关闭链接的时候,必须关闭传和送两个方向上的链接。当要结束链接的时候,客户端给服务器一个FIN为1的TCP报文,而后服务器返回给客户端一个确认ACK报文,而且发送一个FIN报文,当客户端回复ACK报文后,链接就结束了。这就是“四次握手”。

TCP协议是如何保证传输的可靠性的

  1. 将数据截取为合理的长度

    应用数据被分割成TCP认为最适合发送的数据块,应用数据产生的数据报长度将保持不变。

  2. 超时重发

    当TCP发出一个报文后,它会启动一个定时器,等待目的端的确认报文发回。若是在定时器时间内没有收到确认报文,那它就会从新发送这个报文。

  3. 目的端对于收到的报文,作出确认响应

    当目的端收到报文后,它将发送一个确认报文。这个确认不是当即发送,通常会延迟几分之一秒(要对包做完整校验)。

  4. 目的端检验出包有错,丢弃报文段,不给出确认响应,等待重传。

    目的端收到报文后,会对报文的完整性做校验(主要是防止传输过程当中数据的丢失或更改),若是检验有差错,TCP就会舍弃此报文段,而且不会作出确认响应,等待另外一端的重传。

  5. 对失序数据进行重排交给应用层。

    由于TCP报文是做为IP数据报(IP提供的是不可靠传输)来传送的,而IP报的的到达顺序可能会失序。所以TCP将对收到的数据进行从新排序而后才交给应用层。

  6. 对于重复数据,丢弃重复数据

    因为IP数据报可能会重复,TCP必须丢弃重复的数据。

  7. TCP能够进行流量控制,防止较快主机导致较慢主机的缓冲区溢出

    TCP链接的每一方都有固定大小的缓冲区,TCP接收端只容许另外一端发送接收端缓冲区能接纳的数据。(流量控制协议:可变大小的滑动窗口协议)

相关文章
相关标签/搜索