计算机网络整理面试题

不定时会更新

1. 浏览器从输入一个URL到响应过程

  1. 输入url
  2. DNS域名解析:域名解析为IP地址(分别从浏览器缓存,本地host文件,本地DNS服务器,根DNS服务器)
  3. 建立TCP连接:三次握手
  4. 客户端发送请求
  5. 服务器响应请求
  6. 客户端浏览器显示页面
  7. 关闭TCP连接:四次挥手

2. HTTPS 怎么建立请求

HTTPS = HTTP + SSL(Secure Sockets Layer, 安全套接字层) / TLS(Transport Layer Security,传输层安全协议)

  1. 客户端向服务器发起HTTPS请求
  2. 服务器端返回证书(公开**)
  3. 客户端验证证书的有效性,如果有效,则生成共享**并使用公开**加密然后发送到服务器端;若无效,停止HTTPS请求
  4. 服务器端使用私有**解密数据,并使用收到的共享**加密数据,发送到客户端
  5. 客户端使用共享**解密数据,整个HTTPS传输完成

3.TCP / UDP

TCP:传输控制协议,是一种面向连接的可靠传输协议。TCP为应用程序提供一种面向连接的、可靠的服务。(面向连接:传输前进行沟通和协商,确保互相可以/愿意发送数据)

UDP:用户数据报协议,是一种非面向连接的不可靠传输协议。(非面向连接:发送数据,收不收无所谓,eg:IPTV,网络电视,接收就看,不接收就不看,但必须发送。如何保证面向连接:TCP三次握手)

4. TCP 三次握手 四次挥手

为什么需要三次握手和四次挥手

三次握手建立连接

  1. 客户端发送syn包到服务器
  2. 服务器收到syn包,确认客户的syn包并且自己也发送一个syn包
  3. 客户端收到后确认服务器的syn包,连接建立。

四次挥手断开连接

  1. 客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
  2. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
  3. 服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
  4. 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

5. 为什么是三次握手、四次挥手

TCP的三次握手(建立连接)和四次挥手(关闭连接)详解
为什么建立连接协议是三次握手
这是因为服务端当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。

关闭连接却是四次握手呢?
关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以先回复一个ACK报文,等服务端数据发送完之后,再发送FIN报文给对方来表示现在可以关闭连接了。

6. SYN_RECV、TIME_WAIT

计算机网络整理面试题

LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-SENT -在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
CLOSING -等待远程TCP对连接中断的确认;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;

MSL maximum segment lifetime (最大分节生命期)

客户端接收到服务器的FIN报文后进入TIME_WAIT状态而不是CLOSED,还需要等待2MSL,理由: 确保最后一个确认报文能够到达。如果server端没收到client端发来的确认报文,那么就会重新发送连接释放请求报文。为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。