计算机网络面试内容

1.简述TCP三次握手过程?

握手:发生在通信建立之后,在信息传递之前。为双方达成统一的协议和传递信息做准备。
SYN是Synchronize(同步的缩写),ACK全称是(Acknowledge character的缩写)确认字符,seq的全称是Sequence(序列的缩写),established被建立

第一次握手:建立连接时,客户端返送SYK包(SYN=1,seq=x同步设置为1,序号设置为x)到服务器,并进入SYN_SEND状态,等待服务端的确认。
第二次握手:服务器收到SYN包必须确认客户端的SYN和seq,同时自己也发送一个SYN报文(SYN=1,ACK=1,seq=y,ack=x+1加一是因为刚才消耗了一个序号)服务端进入SYN-RECV状态
第三次握手:客户端向服务器发送报文(ack=y+1因为第二次握手的时候服务器发送的序号为y所以确认的时候加一也是消耗掉一个序号,seq=x+1第二次握手中服务器传来的是x+1,ACK=1)客户端转变为estadlish被建立状态,服务器接收到报文也转变为被建立状态。
计算机网络面试内容_第1张图片计算机网络面试内容_第2张图片
2.简述TCP的四次挥手
第一次挥手:客户端向服务器发送报文(FIN=1,seq=u最后一个发送的序列号)客户端进入FIN_WAIT-1
第二次挥手:服务器向客户端发送报文(ACK=1,seq=v序列号,ack=u+1确认字符)服务器进入CLOSE-WAIT状态(因为客户端已经发送信息完毕了,但是服务器还有信息没有发送给客户端所以才有这个CLOSE-WAIT)
第三次挥手服务器向客户端发送报文(ACK=1,seq=w,ack=u+1)服务器变为LAST_ACK状态。因为是半关闭的状态。
第四次挥手客户端向服务器发送报文(ACK=1,seq=u+1,ack=w+1)之后客户端经过一个TIME_WAIT之后客户端转为关闭态,服务器接收到报文之后转变为关闭状态。
计算机网络面试内容_第3张图片
3.为什么会有TIME_WAIT?
①为了能够确保服务器接收到ACK进行关闭。因为TCP是全双工的通信,要想去终止这样的连接,必须服务器在接收到确认报文的时候才能实现,如果服务器没有收到确认报文的时候,这个时间正好可以去重传ACK
②如果没有TIME_WAIT时,在客户端再次重新连接这个一样的端口时,会导致新旧连接混淆。有了TIME_WAIT就可以让旧的连接数据消失,从而不会混淆。
4.为什么需要四次挥手才能断开连接?
因为UCP是全双工通信,双方都需要FIN,ACK报文,所以需要四次。
5.服务器为什么会出现大量的close_wait?
①对方的socket连接关闭
②我方忙于写或是读
③没有及时的关闭连接(比如没有及时关闭数据库的连接)
6.UDP和UTP的区别
计算机网络面试内容_第4张图片
7.GET和POST的请求
GET请求参数放在地址中POST的请求参数放在body中
get的请求是有限制的而在POST的body中是没有限制的
POST相比Get请求更加的安全,因为Get的请求参数在地址中是可见的而POST的参数是不可见的
8.HTTP和HTTPS区别
计算机网络面试内容_第5张图片
9.Cookie和Session区别
    ①Cookie是把数据存放在浏览器中的而session数据是存放在服务器中的,但是session对于cookie是有着依赖的关系
    ②Cookie是存放在浏览器中的,所以其他人可以通过分析cookie进行cookie的欺骗,考虑到安全性能需要用session
    ③session是存在服务器中的,当session过多时,会影响服务器的性能,考虑到服务器的性能时,需要使用cookie
10.在浏览器地址栏中输入URL,按下回车经历的流程
    ①DNS的解析
    ②TCP的三次握手
    ③发送HTTP请求
    ④服务器处理请求并返回报文
    ⑤浏览器解析报文并渲染页面
    ⑥连接结束
11.RTT和RTO的全称
每次 TCP 握手过程都会启动一个定时器, 如果在定时器时间内没有收到, 则进行重传.而重传的超时时间 则成为 RTO (Retransmission TimeOut)
基于 TCP 单次握手的往返时间. 连接的往返时间成为 RTT (Round Trip Time)

你可能感兴趣的:(面试笔记,计算机网路面试,java)