计算机网络面试高频考点
1.TCP三次握手过程
①首先握手过程是建立在被动方处于监听状态。 ②客户端发送syn报文并随机一个序列号发送给服务器,此时客户端为syn_send状态, ③服务器收到syn报文后,发送给客户端一个syn+ack报文,并随机一个序列号,确认序号为syn序号+1,发送后服务器会将这个连接添加到半连接队列,并处于syn_recv状态 ④客户端收到服务器发来的syn+ack报文后,返回一个ack确认报文,序列号为syn的确认序列号,确认号为syn序列号+1,客户端处于established状态 ⑤服务器收到客户端的确认报文后将对应的连接从半连接队列中取出放到全连接队列,此时服务器处于established状态,双方三次握手完成,可以正常传递数据。
1.1为什么不是两次?
握手过程是为了建立可靠的连接,可靠的是通过交换起始序号,后续的数据传输通过序号判断数据是否被对方接收到,如果是两次我收的话,那就不能保证客户端接收到服务器的序号,也就没有后续的可靠性传输。而且,不保证可靠性传输的同时,也会出现大量无效连接,浪费系统资源。
2.TCP四次挥手过程
客户端和服务器都处于established状态。 ①客户端发送FIN报文,进入FIN_WAIT1状态 ②服务器收到FIN报文,关闭读通道,并发送ACK确认报文,进入CLOSE_WAIT状态 ③客户端收到ACK报文后,关闭写通道,进入FIN_WAIT2状态 ④服务器发送FIN报文,进入LAST_ACK状态 ⑤客户端收到FIN报文,发送ACK报文,关闭读通道,进入TIME_WAIT状态 ⑥服务器收到ACK报文,关闭写通道
2.1为什么最后客户端还要等待2*MSL的时间呢?
1.防止最后一个ACK报文丢失;如果超时,服务器会重发上次FIN+ACK报文。 2.耗尽本次连接的所有报文。这样新的连接中就不会出现旧连接的请求报文。
2.2为什么建立连接是三次握手,关闭连接确是四次挥手呢?
建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。 而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
3.TCP如何保证的可靠性
校验和、序列号、连接管理 确认应答、超时重传 流量控制、拥塞控制
4.TCP保证性能的机制
滑动窗口、快速重传、延迟应答、捎带应答
5.TCP和UDP区别
TCP是一对一的、面向连接的、可靠的流式协议 UDP是一对一、一对多、多对多的、面向非连接的、不可靠的报文式协议
6.组播与广播
广播禁止在internet中传输,不能提供个性化服务,可能产生广播风暴 组播可在internet中传输,加入一个组播就能接受这个组中的信息,组播地址是D类地址
7.OSI七层模型及用途
①物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输 ②数据链路层:通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,数据链路层的目的是解决同一网络内节点之间的通信 ③网络层:将数据设法从源端经过若干个中间节点传送到目的端(点到点),从而向传输层提供最基本的端到端的数据传输服务,网络层主要解决不同子网间的通信 ④传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输 ⑤会话层:组织和协调两个会话进程之间的通信 ,并对数据交换进行管理 ⑥表示层:处理用户信息的表示问题,如编码、数据格式转换和加密解密等 ⑦应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作
8.在浏览器输入网址的全过程
1、在地址栏输入网站的url地址。 2、输入url地址后,浏览器会查找浏览器缓存、系统缓存、路由缓存。如果有缓存就可以直接显示(在Cache—Control的max_age字段中有缓存的有效时间),如果没有就下一步。 3、通过DNS获取url对应的ip地址。通过本机的host文件中查找是否有url对应的ip地址,如果没有就请求DNS进行ip地址的获取。 4、建立TCP连接。通过TCP三次握手建立连接。 5、浏览器向web服务器发送请求。 6、浏览器给web服务器发送请求头信息。如果是POST还要发送请求体。 7、web服务器进行响应。 8、web服务器发送响应头消息。 9、web服务器发送数据。以响应头里面的content-type描述的格式发送数据。 10、web服务器关闭连接。web服务器向浏览器发送了应答数据之后,就要关闭tcp连接(TCP四次握手关闭连接),如果添加了connection:keep-alive就继续保持连接。 11.浏览器解析HTML
|