最近校招季,特把本身面试中遇到的问题整理整理,以巩固本身的知识。web
对于网络这块,面试官通常喜欢问的是ISO/OSI参考模型和TCP/IP协议族方面的知识,下面咱们就来看看吧。面试
首先,咱们先给出它们的结构图服务器
注意:图中有一个Hardware层,图中显示它和OSI模型中的物理层(Physical)相对应,其实严格意义上说,它是不属于TCP/IP协议族中的一员的,这个层次包括网线的制式,网卡的定义,负责网络的传输。网络
Open System Interconnection,即开放式系统互联。OSI先有模型,后有协议,先有标准,后进行实践。且OSI只是一种理想的模型,并无真正使用。tcp
TCP/IP则是先有协议和应用再提出了模型,且是参照的OSI模型。TCP/IP现已被普遍使用,已成为网络互联实际上的标准。svg
TCP:Transmission Control Protocol,传输控制协议
IP:Internet Protocol Address,网际协议地址
UDP:User Datagram Protocol,用户数据报协议xml
TCP提供了一种可靠的数据传输服务,TCP是面向链接的。利用TCP通讯的两台主机首先要经历一个“拨打电话”的过程,等到通讯准备结束后才开始传输数据,最后结束通话。UDP是直接把数据发出去,而无论对方是否是在收信,就算是UDP没法送达,也不会产生ICMP差错报文。排序
链接的创建接口
在创建链接的时候,客户端首先向服务器申请打开某一端口,而后服务端发回一个ACK报文通知客户端请求报文收到,客户端收到确认报文后再次发出确认报文确认刚才服务端发出的确认报文本身收到。至此,链接的创建完成,这也叫作“三次握手”。ip
结束链接
TCP有一个特别的概念叫作half-close,这个意思是说TCP的链接是全双工链接(能够同时发送和接收)。所以在关闭链接的时候,必须关闭传和送两个方向上的链接。当要结束链接的时候,客户端给服务器一个FIN为1的TCP报文,而后服务器返回给客户端一个确认ACK报文,而且发送一个FIN报文,当客户端回复ACK报文后,链接就结束了。这就是“四次握手”。
将数据截取为合理的长度
应用数据被分割成TCP认为最适合发送的数据块,应用数据产生的数据报长度将保持不变。
超时重发
当TCP发出一个报文后,它会启动一个定时器,等待目的端的确认报文发回。若是在定时器时间内没有收到确认报文,那它就会从新发送这个报文。
目的端对于收到的报文,作出确认响应
当目的端收到报文后,它将发送一个确认报文。这个确认不是当即发送,通常会延迟几分之一秒(要对包做完整校验)。
目的端检验出包有错,丢弃报文段,不给出确认响应,等待重传。
目的端收到报文后,会对报文的完整性做校验(主要是防止传输过程当中数据的丢失或更改),若是检验有差错,TCP就会舍弃此报文段,而且不会作出确认响应,等待另外一端的重传。
对失序数据进行重排交给应用层。
由于TCP报文是做为IP数据报(IP提供的是不可靠传输)来传送的,而IP报的的到达顺序可能会失序。所以TCP将对收到的数据进行从新排序而后才交给应用层。
对于重复数据,丢弃重复数据
因为IP数据报可能会重复,TCP必须丢弃重复的数据。
TCP能够进行流量控制,防止较快主机导致较慢主机的缓冲区溢出
TCP链接的每一方都有固定大小的缓冲区,TCP接收端只容许另外一端发送接收端缓冲区能接纳的数据。(流量控制协议:可变大小的滑动窗口协议)