应用层:向应用程序提供通信服务,如 http、ftp、smtp、DNS等
表示层:格式化数据、加密、解密等,如FTP允许你选择以二进制或ASCII格式传输
会话层:管理会话,控制会话的开始与结束
运输层:高层与低层的衔接,数据传输的单位是报文,报文过长时将其分割然后交给网络层,TCP/UDP
网络层:负责将数据从源送到目的地
数据链路层:控制网络层与物理层的通信,以帧为单位
物理层:以二进制数据的形式在物理媒体上传输
七层协议模型是一个理论模型,在实际应用中数据传输多变,因此该模型仅做参考作用
有时候会出现三次挥手的情况,是因为第二次挥手和第三次挥手合并了,因为服务端没有数据继续传输,如
至于五次挥手,想多了。。。没有的,如果抓包挥手过程中出现5个报文,那么那个多出来的ACK报文一定是前面某个报文的确认报文,一般就是挥手第一个FIN报文的前一个报文的ack
摘要算法是不可逆的,无论多长的数据都会在经过摘要算法后生成一个短短的字符串,只要数据变了一丢丢,生成的字符串都是不相同的。因此,摘要算法经常用来签名,检验数据的完整性,或者也可用来加密不需要逆转的数据,如用户密码等 。常见的摘要算法有MD5、SHA1、SHA2、MAC等。
双方使用相同的密匙对数据进行加密解密,常见的对称加密算法有DES、3DES、AES
双方使用不同的密钥对数据进行加密解密,密钥是成对存在的,一个叫公钥,可以提供给别人;一个叫私钥,自己保存,不能泄漏,一旦泄漏要及时更换密钥对。关键点是私钥加密的数据只有公钥能解密,公钥加密的数据只有私钥能解密。常见的算法有RSA、DSA
参考:https://blog.csdn.net/LAf_HUAZAI/article/details/107093295
注:cwnd -----由发送方维持的拥塞窗口大小,控制网络中的流量,rwnd-----接收窗口大小
ssthresh-----拥塞窗口门限
慢启动-----试探,慢慢增加cwnd(指数增长,一般为2倍数)拥塞避免-----当cwnd > ssthresh时,改用拥塞避免算法,cwnd呈线性增长(cwnd++)无论是在慢开始还是拥塞避免中,一旦出现网络拥堵(没有按时收到ACK)就会将ssthresh置为原来的一半(实际上有精确的算法来计算),cwnd置为 1,然后重新开始慢启动,以迅速降低网络拥堵
快速重传-----尽早重传未被确认的报文段,例如接收方收到了m2,m4,m5,m6,m7,没有收到m3,那么接收方会在收到m4,m5,m6—的时候重复发送m2的重复ACK。按规定,发送方连续收到三个重复确认(4个ACK)就不必等待m3超时重传,而是立即重传m3,这个方法能提高网络吞吐量约20%注意此时发送方会认为网络很可能没有堵塞,因为收到重复ACK表明发送的报文顺利到达接收方
快速恢复-----当连续收到三个重复ACK时,快速重传生效后,将ssthresh减半,cwnd变为ssthresh减半后的数值,然后执行拥塞避免算法实际上的cwnd还有一个上限rwnd,即cwnd不会超过rwnd
注:New Reno 算法有变化,Reno算法只考虑了丢失一个报文,若在一次网络拥塞中丢失了多个报文,会多次将cwnd和ssthresh减半,甚至cwnd < 3以致没有足够的ACK,只能等待超时重传,超时后cwnd会被置 1,ssthresh=cwnd/2,进入慢启动 ,大大降低了TCP传输效率。