计算机网络常见面试题

1 TCP三次握手和四次挥手

答:第一次握手,建立连接时,客户端发送SYN:同步序列编号(Synchronize Sequence Numbers)包(SYN=j)给服务器,并进入SYN_SENT状态
第二次握手,服务器收到SYN包时,必须确认客户的SYN包,(ACK=j+1),并给客户端发送自己的SYN包(SYN=k),即发送ACK+SYN包给客户端,此时服务器进入SYN_RECV状态
第三次握手,客户端收到服务器发送的ACK+SYN包后,向服务器发送ACK包(ACK=k+1),此包发送完毕后,服务器和客户端进入ESTABLISHED状态(TCP连接成功)

断开连接时需要四次挥手
第一次挥手,客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(u等于前面已经传送过来的最后一个数据的序号加1),此时客户端进入FIN-WAIT-1(终止等待1)状态。TCP协议规定,FIN报文段即使不携带数据,也要消耗一个序号
第二次挥手,服务器收到连接释放报文,发出确认报文。ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务器就进入了CLOSE_WAIT(关闭等待)状态。TCP服务器通知高层次的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭的状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接收。
第三次挥手,客户端收到服务器的确认请求后,客户端进入FIN_WAIT_2状态(终止等待2)状态,等待服务发送连接释放报文(在这之前还需要接收服务器发送的最后的数据)。服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态下可能服务器又发送了一些数据,还需要发送seq=W,此时服务器就进入了LAST_ACK(最后确认)状态,等待客户端的确认
第四次挥手,客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,seq=u+1,此时,客户端进入TIME_WAIT(时间等待)状态。此时,TCP连接还没有释放,必须经过2**MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCP后,才进入CLOSED状态。
服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

2 TCP,UDP协议的区别

3 TCP协议如何保证可靠传输

4 在浏览器中输入URL地址到显示主页的过程

5 状态码

6 各种协议与http协议之间的关系

7 HTTP的长连接和短连接

8 HTTP是不保存状态的协议,如何保存用户的信息

9 Cookie的作用是什么?和Session有什么区别?

10 HTTP 1.0和HTTP 1.1的主要区别是什么?

11 URI和URL的区别是什么?

12 HTTP和HTTPS的区别?

posted @ 2021-04-20 21:12  陌上的忧伤的个人博客  阅读(94)  评论(0编辑  收藏  举报