TCP的三次握手和四次挥手结合室友的北京字节面试
室友在今天再次经历了字节跳动的面试,面试我全程助攻,对于面试过程以及面试官的态度和问题也都有听到,当面试官再次问道tcp的握手过程时,我不禁感叹这个东西我要是不会是真不行啊!所以背着室友在这里总结他的面试经历。 面试官是由TCP和UDP区别开始问起的, 然后问到TCP的三次握手过程: 这里首先讲解什么是三次握手? 三次握手就是在客户端和服务端进行TCP连接时需要发送三个包,目的是确定客户端和服务端的发送能力和接收能力都没有问题、实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换 TCP窗口大小 信息。 三次握手的过程: 第一次握手:客户端向服务端发送SYN报文段,并指明客户端的初始化序列号 ISN。 第二次握手:服务端收到客户端发送的SYN报文段,向客户端发送SYN报文,同时确定自己的ISN初始化序列号。 第三次握手:客户端向服务端发送ACK报文来建立TCP连接。 握手为什么要三次,两次行不行? 三次握手主要是为了确定客户端以及服务端的接收能力和发送能力都没问题 第一次握手:客户端发送报文,服务端接收报文,确认了客户端的发送能力以及服务端的接收能力都没问题; 第二次握手:服务端发送报文,客户端接收报文,客户端确认了自己的发送能力和接收能力和服务端的接收能力以及发送能力没问题,但是服务端没法确认客户端的接收能力是否正常。 第三次握手