1.OSI参考模型及各层作用。
开放式系统互联模型的作用是为了解决异种网络互联时引起的兼容性问题,其最主要的功能是帮助不同的主机实现数据传输。最大的优点是将服务、协议、接口这三个概念明确的分开来。
1)物理层:在信道上传输原始比特流。
2)数据链路层:加强物理层传输原始比特流同能,为保证传输,从网络层接受的数据被分割成特定的可被物理层传输的帧,按顺序传送出去并处理接收方回送的确认帧。
3)网络层:将网络地址翻译成物理地址,并决定如何将数据从发送方路由到接收方(如何选择路由)(路由器是工作在网络层的网络设备)。
4)传输层:进行流量控制或是根据接收方接收数据的快慢程度控制发送速度,按照网络能处理的最大数据对较长的数据进行强制切割。
5)会话层:建立通信链接,保持通信链路通畅。
6)表示层:将数据按网络能够理解的方式进行格式化,格式化因网络类型不同而不同。
7)应用层:为用户的应用程序(如文件传输,文件管理,电子邮件等)提供服务。
2.TCP和UDP有什么区别?
TCP是传输控制协议,是面向连接的、可靠的字节流服务。当客户和服务器彼此交换数据前,先建立一条TCP连接。TCP提供超时重发、丢弃重复数据,检验数据、流量控制等功能,保证数据能从一端传到另一端。(类似打电话)
UDP是用户数据报协议,是面向数据报的传输协议,不面向连接,不提供可靠性。它只把应用程序传给网络层的数据报发送出去,但并不保证到达目的地。速度比TCP快。
3.在各层之间,数据以什么单位进行传输的?
物理层,数据基本单位是比特;数据链路层,数据的基本单位是帧;网络层,数据的基本单位是数据包;在传输层,数据的基本单位是数据段。
4.TCP握手过程。
半关闭连接:连接的一端在结束了它的发送后还能接收来自另一端数据的能力。具体体现在:发送一个FIN(文件结束符)给另一端,直到另一端发了FIN。
半打开连接:TCP连接的一方崩溃了,但是另一方不知道。
5.解释未连接队列、Backlog参数、SYN-ACK重传次数、半连接存活时间等概念。
未连接队列:在三次握手过程中,服务器维护一个未连接队列,队列为每个客户端的SYN包开设一个条目,表明服务器收到客户端的SYN包,发出SYN+ACK包,进入SYN_RCVD状态,等待客户端的确认。如果收到了客户端的确认包,则从队列中删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:未连接队列的最大容纳数目。
SYN-ACK重传次数:服务器发送完SYN-ACK后,没有收到客户端的确认包,于是进行首次重传,一段时间后还是没收到客户确认包,进行第二次重传,当重传次数超过系统规定的最大重传次数,则从未连接队列中删除该条目。
半连接存活时间:是指半连接队列中条目存活的最长时间,也即从服务器收到SYN包到确认这个包无效的最长时间,是所有重传数据包的最长等待时间的总和。
6.TCP/IP四层模型及每层功能。
链路层:通常包括操作系统的设备驱动程序和计算机中对应的网络接口卡,一起处理与电缆的物理接口细节。
网络层:将网络地址翻译成物理地址,并决定如何将数据从发送方路由到接收方(如何选择路由)。(IP)
传输层:进行流量控制或是根据接收方接收数据的快慢程度控制发送速度,按照网络能处理的最大数据对较长的数据进行强制切割。(TCP、UDP)
应用层:为用户的应用程序(如文件传输,文件管理,电子邮件等)提供服务。
7.计算机网络层次结构之两级模型。
通信子网:提供通信,即数据传输的能力。由通信控制机,通信链路以及信号变换器等构成。
资源子网:提供网上资源及访问能力。由一些资源单元构成,每个资源单元包括一台主机,若干终端设备,相关软件资源和数据资源。
8.TCP/IP模型和OSI模型异同比较。
相同点:
都有相同的4层,且功能相似。
不同点:
1)OSI模型有7层,TCP/IP只有4层。
2)OSI模型在网络层支持面向连接的TCP通信和支持无连接的UDP通信,在传输层只支持面向连接的TCP通信。
TCP/IP在网络层只有无连接的UDP通信,在传输层支持TCP和UDP通信。
9.窗口滑动机制
作用:TCP的一种流量控制方法(可靠性和流控制性)。
窗口:可以被发送者发送的一段字节序列,其连续的范围称作窗口。
滑动:指这段“可以被发送的范围”是随着发送的过程变化的,方法是按顺序滑动。
流量控制:接收方传递消息给发送方,使其不要传递数据太快,主要的方式是通过返回的ACK包中会包含自己接收窗口的大小。
零窗口:窗口左边沿到达右边沿。如果接收缓冲区已满,接收方会给发送方一个零窗口通知,此时发送方启动持续计时器,时间到则发一个1字节的探测报文,接收方会回应窗口大小,如果仍为0,则重设计数器,继续等待。
注意:
1)发送窗口是发送缓冲区的一部分,应用层需要发送的所有数据都被送到了发送者的发送缓冲区。
2)发送窗口四个相关概念:已发送并收到确认的数据(不在发送窗口和发送缓冲区之内)、发送,但未被确认的数据(在发送窗口之内)、允许发送但尚未发送的数据、不能够发送的数据(在发送窗口外,发送缓冲区内)。
窗口运动的三个术语:
1)窗口合拢:窗口左边沿向右边沿靠近。发生在数据被发送和确认时。
2)窗口张开:窗口右边沿向右运动而将允许发送更多数据时。发生在另一端的接收进程读取已经确认的数据并从接收缓存区中释放对应数据时。
3)窗口收缩:窗口右边沿向左运动。
10.PUSH标志位的作用。
发送数据放使用该标志通知接收方将所收到的数据全部交给接收进程。此数据包括已经放在接收缓冲区的数据和与PUSH一起传送的数据。
11.negle算法
流量控制除了窗口滑动,另一个重要点是流量控制中的效率。
如果传送一个字节的数据,需要加上20字节的IP首部和20字节的TCP首部,这些小分组会增加拥塞出现的可能。
negle算法要求每一个TCP连接上只有1个未被确认的未完成小分组。TCP收集这些小分组,并在确认到来时以一个分组发送出去。
对一些快响应,对延时敏感的的应用需关闭negle算法。
11.TCP拥塞控制机制
拥塞控制:防止过多的的数据注入到网络,不至于使网络中的路由器或链路过载。
常用的方法:
1)慢启动(减少主机发送到网络中的分组数,使路由器有足够的时间把队列中积压的分组处理完毕)
2)快重传,快恢复(减少因为拥塞导致数据包丢失带来的重传时间,从而避免传递无用的数据到网络)
慢启动算法:
1)慢启动为TCP发送发维护一个拥塞窗口(cwnd,以字节为单位),该窗口与接收窗口共同决定了发送者的发送窗口。
2)拥塞窗口初始化为1字节的报文段,当收到确认时,发送2字节的报文段。
3)若再收到2字节的报文,就发送4字节的报文,依次下去,当达到满开始门限时,改用拥塞避免算法。
4)发送方取拥塞窗口和接收窗口的最小值作为发送上限。
注意:拥塞窗口是发送方使用的流量控制,接收窗口是接收方使用的流量控制。
拥塞避免算法:每经过一个往返时间就把拥塞窗口加1。
当出现网络拥塞,就把慢开始门限减半,拥塞窗口置1,重新开始慢启动算法。
快重传机制:
超时重传是一段时间后没有收到该数据对应ACK,就重新发送数据。
快重传就是发送方接收到3次以上的重复ACK,就重新发送数据,而不需要等到超时。此时,发送发执行快恢复算法。
快恢复算法:
1)满开始门限减半。
2)拥塞窗口设为满开始门限值。
3)执行拥塞避免算法。
12.TCP和UDP的包头多长,包含哪些字段?
13.socket模型。
14.select和epoll区别。
15.描述一下多播协议,应用场景。
16.进程间通信方式。
1)管道:
2)信号:
3)信号量:
4)消息队列:
5)共享内存(加什么级别锁?):
6)套接字
参考:进程与线程