1、三次握手的过程
第一次握手:
客户端向服务器端发送一个连接请求,表示自己需要进行连接
第二次握手:
服务器端收到了客户端发来的请求之后,就返回一个确认信号,表示自己已经收到了你的请求,我也进入准备连接状态;
第三次握手:
客户端收到了服务器端的确认信息之后,则继续发送一个确认信号告诉服务器端我也收到了您发送过来的信息了。
2、为什么握手不能两次或更少
假设连接只需要两次就能完成,我们模拟一个特殊的场景。当某一次准备建立连接的时候,假设客户端发送了连接请求,但是由于网络的原因请求到达服务端的时间需要很长,此时客户端由于长时间没有得到服务器端的答复,以为连接出问题了,则重新发送了一次请求连接。这时第一次的请求已经到达了服务器,服务器收到第一次的请求连接之后发送了确认信号给客户端,然后建立连接成功,开始进行数据传输。当数据传输结束之后,断开了连接,此时客户端发送的第二次请求连接到达了服务器,服务器以为是新发起的连接请求,则又一次的开启了连接,但是客户端并没有准备和此时的服务器建立连接,因此出现了问题。服务器一直保持着开启连接,而客户端并没有对应的开启连接。
三次握手形象与两个人进行交流的时候的场景:
A说:你好啊,B,收到请回复
B收到说:你也好啊,A,收到请回复
A收到说:收到啦
3、四次挥手的过程
第一次挥手:
客户端发起关闭连接信号,表示自己不再向服务器发送请求,客户端进入等待连接状态;
第二次挥手:
服务器收到客户端的关闭连接信号之后,先立即返回一个确认信号给客户端,表示自己不再接受客户端的请求,但是此时的服务器可能还在处理之前发送的请求;
第三次挥手:
等到服务器处理完所有的请求之后,则再发送一个信号表示自己也不再响应数据给客户端;
第四次挥手:
客户端收到了服务器的所有响应数据之后,向服务器发送确认信号,自身完成关闭连接,服务器收到信号之后也完成了关闭连接
4、四次挥手中谁先完成断开连接
服务器先完成断开
这是因为客户端发送最后一次挥手信号的时候,还需要等待2MSL才会断开连接,原因是1MSL代表的是客户端到服务器端的距离,为了防止客户端发送最后一次挥手信号的时候信号被阻碍了,于是服务器以为自己之前发送的SYN对方没有收到,则需要再向客户端发送一次SYN,客户端收到之后则会重置计数2MSL。
5、什么是UDP
UDP协议是一个简单的面向数据报的通信协议,位于传输层;UDP是不可靠的,他只会尽自己最大的能力向你传输数据,对于丢包的数据,他并不会重传等操作;数据一旦发送出去,就不会保留数据备份。
UDP协议分为两部分,一部分为首部、一部分为数据部分;首部有8个字节,一共有4个字段:源端口、目标端口、长度、检验和
6、TCP和UDP的区别
- tcp是面向字节的,而udp是面向报文的;
- tcp是可靠的,而udp是不可靠的;
- tcp是面向连接的,而udp是面向无连接的;
- tcp收到拥塞控制的限制,而udp不受限制;
- tcp最小的首部字段也要有20个字节,而udp最少只需要8个字节。