/@TOC
1. 长连接优缺点
优点:省去较多的TCP建立和关闭的操作,较少浪费,节约时间,对于频繁请求的客户端比较适用。例如数据库的连接,网络游戏
缺点:维护链接浪费资源,在大量长连接连接的情况下,服务器负载过大
2. UDP比TCP快的原因
无需建立和维护连接,没有流量控制和拥塞控制,没有超时重传机制,不需要回应
UDP多用于:视频聊天,广播,直播
TCP:面向连接,提供可靠交付,有流量控制,拥塞控制,面向字节流,提供全双工通信,每一条连接是一对一;
UDP:无连接的,面向报文,支持一对一,一对多,多对多通信
3. 网络的7层协议(5层)
①物理层,考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异
②链路层,网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧
③网络层,为主机提供数据传输服务。而传输层协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段或者用户数据报封装成分组
④传输层,为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务
⑤应用层,为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文
4. 三次握手(建立连接)
原因:为了防止失效的连接请求到达服务器,让服务器错误打开连接
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。有了第三次握手,客户端会忽略掉超时的那个连接
过程:
①首先客户端发送连接请求syn,携带随机数x
②服务端返回请求ack,x + 1,说明服务端对x进行了回复
③客户端返回请求ack,y,说明接受到了信息并且开始传输数据,起始数据为y
5. 四次挥手(断开连接)
过程:
①客户端请求断开连接,发送fin请求
②服务端返回ack,进入close_wait状态,继续处理需要处理的数据,tcp变为半关闭
③服务端返回fin,将处理完的数据发到客户端,表明自己已经关闭
④客户端进入TIME_WAIT状态,客户端发最后一个ack到服务端,如果服务端已关闭则无反应,客户端经过2MSL(报文最大存活时间)后释放连接,确认服务端断开
⑤服务端接收确认后释放连接
TIME_WAIT作用:
①服务端需要可靠地终止连接,如果最后一次客户端发给服务端的ack报文丢失,则服务端会再发一次fin,此时客户端不应该关闭
②保证迟来的tcp报文有时间被丢弃,因为2MSL里超时抵达的报文都会被丢弃,