OSI七层模型分为:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
计算机网络是一个复杂的系统,为了能简化操作,增强通用性,所以将其分为七层。
TCP/IP协议是四层协议(应用层,传输层,网络层,数据链路层),是对OSI七层协议的简化。OSI七层模型始终是一个理想的分层模型,是一个标准,但是在实际的应用中,用到最多的还是TCP/IP四层模型。
应用层常用的协议有:HTTP超文本传输协议,HTTPS安全的超文本传输协议,SMTP邮件发送协议,FTP文件传输协议。
传输层常用的协议有TCP、UDP协议。
TCP三次握手主要是为了建立可靠的连接,三次握手主要是:
1.发送方向接收方发送一个建立连接的数据包,SYN=1,ACK=0;
2.接收方向发送方发送确认建立连接的数据包,SYN=1,ACK=1;
3.发送方再次向接收方发送确认的数据包,ACK=0,SYN=0;
三次握手是为了建立一个可靠的连接,两次握手说明了网络连通没有问题,假如有如下情况:
客户端第一次向服务器发送建立连接的数据包,由于网络的原因,客户端迟迟没有收到接受方的确认建立连接的数据包,由于超出了设定的时间,客户端又发送了一个建立连接的数据包,服务器收到后,发送了确认建立连接的数据包...。这时已经建立连接,服务器与客户端开始传输数据,而客户端第一次发送的数据包到达了服务器,服务器以为是再次建立连接,于是又发送了一个确认数据包,由于客户端已经建立连接,会忽略这次服务器发来的数据包,但是服务器发送出去数据包一直等待回复,导致了服务器的无效等待,造成资源浪费,如果过于频繁会导致服务器停止响应。所有要三次握手。2次不行。当然,四次握手也可以,但是三次握手最节省性能。
1.发送方向接收方发送断开连接的数据包,FIN=1,ACK=0;
2.接收方向发送方 发送确认的数据包,FIN=0,ACK=1;
3.接收方向发送方传输完数据后,确认断开连接,FIN=1,ACK=1;
4.发送方确认,ACK=1;
流量控制就是指,控制发送方的发送数据的速率。
接受方通过TCP头部的窗口(占2个字节),来告知发送方降低发送的速率。来达到流量控制的效果。
发送方通过滑动窗口的来实现对数据包发送速率的实现。
滑动窗口是实现TCP协议流量控制的机制。
发送方与接收方都维护了自己的缓冲区,缓冲区就是窗口,发送方的滑动窗口由接受方发送的TCP头部中的窗口定义。
发送方的窗口有:已发送并确认,发送未确认,未发送未确认,未发送未确认超出滑动窗口。
发送方通过拥塞窗口来控制每次发送数据包的个数。数据包的个数影响着拥塞,可以通过设置拥塞控制的大小来对拥塞进行控制。
拥塞控制包含以下四个算法:
1.慢启动:拥塞窗口的大小随着发送次数呈指数级上涨。
2.拥塞避免:当拥塞窗口的大小达到了慢启动门限,拥塞窗口呈线性增长。
3.拥塞发生:当拥塞发生时,会有两种数据重传机制
超时重传:将慢启动门限设置为拥塞窗口的一半。
将拥塞控制的大小设置为1。
重新开始慢启动。
快速重传:将慢启动门限设置为拥塞窗口的一半。
将拥塞窗口大小设置为慢启动门限。
4.快速恢复:快速恢复一半与快速重传一起使用。
将拥塞窗口的大小+3;
TCP:传输控制协议,属于传输层的一个面向连接、基于字节流的可靠性协议。
TCP具有可靠性传输,流量控制,拥塞控制等特点。
UDP:一个无连接,不保证可靠性的传输层协议。
TCP协议具有可靠性,而UDP协议不具备可靠性。
TCP面向连接,一对一,而UDP无连接,可以一对多。
TCP传输效率慢,需要额外的资源开销,而UDP传输效率高。
TCP协议的首部需要20-60个字节,UDP协议需要8个字节。