面试网络总结
1 OSI七层模型和TCP/IP
2 B/S与C/S有什么区别?
C/S是客户端/服务器的缩写,在C/S架构中,服务器通常采用高性能的PC、工作站或者小型机,而且采用大型数据库系统,如SQL server 、DB2、Oracle和Sybase等。客户端需要安装专用的客户端软件。
B/S是浏览器/服务器的缩写,客户端通常只需要安装一个浏览器,服务器安装SQL server、DB2、Oracle或Sybase等数据库。
3 MVC模型结构是什么
MVC是模型(model)、视图(view)和控制(controller)这3个单词的第一个字母。它是一种目前广泛流行的应用模型。它的目的是实现web系统的职能分工。其中模型层实现系统中的业务逻辑,通常可以用JavaBean或EJB实现;视图层则用于与用户的交互,通常用JSP来实现;控制层则是模型与视图view之间沟通的桥梁,它可以把用户的请求分派并选择恰当的视图来显示它们,同时它也可以解释用户的输入并将其映射为模型层能够执行的操作。
4 交换机与路由器有什么区别?
交换机是一种基于MAC失败,能完成封装转发数据包功能的网络设备。
交换机与路由器的区别主要表现值以下3个方面:
1)工作层次不同。交换机工作在OSI模型的数据链路层,而路由器工作在网络层
2)数据转发所依据的对象不同。交换机是利用物理地址来确定转发数据的目的地址,而路由器是利用IP地址来确定数据转发的地址。
3)传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域。
4)交换机负责同一网段的通信,路由器负责不同网段的通信。
集线器与交换机的区别?
1)工作位置不同。集线器工作在OSI模型的物理层,而交换机工作在数据链路层。
2)集线器不能分割冲突域,而交换机可以分割冲突域
3)带宽不同。不管有多少个端口,集线器的所有端口都是共享一条带宽,而交换机每个端口独占带宽。
4)性能不同。交换机以MAC地址进行寻址,有一定的额外开销,集线器以广播方式传播数据。
5 TCP和UDP的区别有哪些?
UDP提供无连接的通信,不能保证数据包被发送到目的地址,典型的即时传输少量数据的应用程序通常使用UDP。TCP是一种面向连接的、可靠的、基于字节流的通信协议,它为传输大量数据或为需要接收数据许可的应用程序提供连接定向和可靠的通信。
TCP和UDP的区别主要如下:
1)TCP是面向连接的传输控制协议,而UDP提供的是无连接的数据报服务
2)TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无需等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。
3)TCP对系统资源要求较多,UDP对系统资源要求较少
4)UDP具有较好的实时性,工作效率较TCP高
5)UDP的段结构比TCP的段结构简单,因此网络开销也小
6 什么叫三次握手?什么叫四次断开
为什么要有TIME_WAIT:
1 保证可靠的实现TCP全双工连接的终止
2 允许连接中老的重复分节在网络中消逝。
为什么“三次握手,四次挥手“
6 如何使用socket编程
7 阻塞模式和非阻塞模式的区别
8 TCP通过以下方式来提供可靠性:
- 应用数据被分割成TCP任务最合适发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持长度不变。由TCP 传递给IP的信息单位称为报文段或段。
- 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
- 当TCP收到发自TCP 连接另一端的数据,它将发送一个确认。这个确认不是立即发送的,通常将推迟几分之一秒。
- TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
- 既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能失序,因此TCP报文段的达到也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
- 既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
- TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能收纳的数据。这将防止较快致使较慢主机的缓冲区溢出。
9 TCP管理4种不同的定时器:
1)重传定时器使用于当希望收到另一端的确认。(保证可靠传输)
2)坚持定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。(当接收端的窗口为0时,用来进行检测)
3)保活计时器可以检测一个空闲连接的另一端何时崩溃或重启。(用来检测服务器崩溃)
4)2MSL定时器测量一个连接处于TIME_WAIT状态的时间。(为什么要有TIME_WAIT:2个原因)