什么是TCP/IP?
TCP建立连接为什么要三次握手?断开连接为什么要四次挥手?
SSL/TSL握手过程?
1、网络分层模型
OSI:全称叫Open System Interconnection (开放式系统互联),是国际标准化组织ISO制定的理论模型
TCP/IP四层模型:基于OSI建立的实际实现的模型
TCP/IP协议各层:
应用层:我们平时常用的TCP/IP的应用层协议就是HTTP协议
传输层:TCP、UDP协议都是TCP/IP传输层协议,传输层顾名思义,就是用来进行数据传输的,用来收发数据。
网络层:IP协议属于网络层。网络层的作用是用来寻址,比如我们要跟一台服务器建立连接,那么我们如何知道这个服务器的地址?这个就是网络层的功能。我们每台电脑都有一个IP,这个IP就是用来标记你主机的地址的,服务器只要知道了你的IP,就可以和你的主机建立连接,从而进行通信。
网络接口层:这一层其实是一套理论,在软件中不太可能会接触到它。它是用来定义一些硬件设备的标准的。
面试问题:TCP三次握手与四次挥手?
TCP的握手与挥手是建立连接和断开连接的时候需要经过的一个过程。
第一次握手:客户端与服务端建立连接,由客户端向服务端发送一次数据,这是第一次握手。
第二次握手:服务端收到客户端的数据后,发给客户端响应数据,这是第二次握手。
第三次握手:客户端收到服务端的响应数据后,再响应给服务端一次数据,这是第三次握手。
HR提问:为什么TCP建立连接需要三次握手呢?
三次握手是为了保证客户端与服务端双方的数据收发能力都没有任何问题。具体说:
第一次握手,是客户端向服务端发数据,如果服务端接收到了客户端发来的数据,那么就说明,服务端确定了客户端的发送能力没问题。
第二次握手,是服务端响应给客户端数据,如果客户端接收到了服务端的响应数据,说明客户端确定了服务端的接收和发送能力都没问题。
现在,经过两次握手,我们确定了客户端的发送能力没问题,服务端的发送和接受能力没问题,但是我们还是不知道客户端的接收能力是否OK,因为服务端并不知道客户端是否收到了他发过去的响应数据。所以,还要进行第三次握手。
第三次握手:客户端向服务端发送响应数据,如果服务端接收到了这个响应数据,那么就确定了客户端的接收能力没有问题。
HR继续问:TCP为什么握手要三次,而挥手要四次呢?
目的是为了让服务端在客户端想主动断开之后还能够给客户端发送一些数据。具体说:
第一次挥手 (FIN),客户端要断开连接,首先要发给服务端一个finish的包,这个finish的包代表客户端不会再给服务端写数据了。
第二次挥手 (ACK),服务端收到了这个finish包后,就知道客户端想要和它断开连接了,但是服务端可能还有一些数据要发给客户端,所以服务端先发送给客户端一个包,告诉客户端我知道了,但是我还有些数据要发给你,所以你先等一等。
第三次挥手 (FIN ACK),是服务器把该发给客户端的数据都发完了,然后发给客户端一个包,告诉它,我这边数据发完了,你现在可以断开了。
第四次挥手 (ACK),客户端收到了第三次挥手的数据,正式通知服务端准备断开了。
其实,四次挥手和三次握手很相似,实际上就是把第二次握手的数据分成了两次来发送。
HTTP协议: