面试网络总结
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个原因)
1 TCP拥塞窗口的作用?
慢启动为发送方的TCP增加了另一个窗口:拥塞窗口(congestion window),记为cwnd。当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。每收到一个ACK, 拥塞窗口就增加一个报文段(cwnd以字节为单位,但是慢启动以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗 口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。
2 TCP的三次握手,以及为什么需要三次握手?
谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”
3 TCP如何实现可靠通信?
TCP的可靠性是通过顺序编号和确认(ACK)来实现的。