这篇文章相对来说就是自己复习总结了,可能知识点就不是特别成体系,想到哪补哪吧。
- 协议相关
- 应用层协议
- HTTP/HTTPS协议:前者占用的80端口,后者是443端口;后者采用SSL(安全套接字层),以及加密算法/证书来保护安全性,相对来说在传输上花费的时间更长。SSL能用于所有基于TCP的应用上,因此二者都采用了TCP作为支撑。
- SMTP协议:(1)端口号:25 (2)用途:7位ASCII码,用于邮件传输 (3)SMTP协议是一个推协议,即专注于传输,而取回邮件需要靠POP3(第三版邮局协议-Post Office Protocol-Version 3)
- FTP协议: (1)端口号:21 (2)用途:文件传输 (3)特点:带外传输,即有两条并行的TCP连接,一条是控制连接用于传输在主机间传输控制信息;另一条是数据连接,用于实际传输一个文件的数据信息。
- HTTP协议: (1)HTTP还是一个无状态协议。 (2)可以选择持续连接和非持续连接;持续连接可以一个接一个的发送请求而不必等待回答。 (3)是带内控制协议,因为它不像FTP有一条独立的控制连接用于传输控制信息。 (4)HTTP是拉协议
- HTTPS建立过程:1)客户端发起 https 请求(就是用户在浏览器里输入一个 https 网址,然后连接到 server的 443 端口) 2)服务端的配置(采用 https 协议的服务器必须要有一塔数字证书,可以自己制作,也可以向组织申请,这套证书就是一对公钥和私钥)。 3)传输证书(这个证书就是公钥,只是包含了很多信息) 4)客户端解析证书(由客户端 tls 完成,首先验证公钥是否有效,若发现异常,则弹出一个警示框,提示证书存在问题,若无问题,则生成一个随机值,然后用证书对随机值进行加密) 5)传输加密信息(这里传输的是加密后的随机值,目的是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密了) 6)服务端解密信息(服务端用私钥解密后得到了客户端传来的随机值,then 把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全) 7)传输加密的信息8)客户端解密信息,用随机数来解。
- 传输层协议
- TCP协议和UDP协议的区别
- TCP提供可靠传输服务;UDP不提供不必要的服务
- TCP提供吞吐量(最小传输带宽)/定时服务(游戏方面),流控制(即发送方不会淹没接收方)
- 安全性,如前面提到的SSL,就是运行在TCP上面的。
- TCP报头固定长度为20字节,UDP报头为8字节(源/目的端口号、长度、检验和)
- TCP提供流量控制,通过滑动窗口协议对双方维护一个接收窗口,使得发送方同时发送的分组数量受限于窗口 大小,而窗口大小受限于接收方缓存大小;这种传递依赖关系使得发送方不会淹没接收方。
- TCP提供拥塞控制,是端到端拥塞控制。有两个主要版本Tahoe/Reno;共同点是它们在遇到超时的情况下都是将窗口大小置为1,阈值置为1/2;区别是Reno在冗余ACK的情况下,将窗口大小置为窗口大小的一半+3MSS,即CWND=SSh/2+3mss。
- UDP提供差错检验但不提供差错恢复。
- 传输层是端到端传输,即比如我上百度,是我的端系统(主机),到百度服务器之一的端,忽略了中途经过的其他路由啊,CDN啥的,是一种逻辑抽象。端到端是建立在网络层点到点上面的。
- TCP协议三次握手
- 为啥不是两次?TCP是可靠传输,而且是全双工的。两次只能保证客户端到服务端是通的,但不能保证服务端到客户端是可靠的。形象化就是:客户端:你好了没;服务端:我好了,你好了没。——此时客户端因为只有两次握手,所以不会应答,则不能保证是通的。
- 为啥不是四次? 因为三次就能保证,在两次的基础上是全双工而且是可靠的,多来一次纯属浪费- -
- ACK和Seq,ACK是确认号,发过去就是下一次握手Seq号,同时也是上一次传过来的Seq+1;Seq=ACK。
- TCP协议四次挥手:
- 同样的,因为是全双工,所以要两条路径的传输都关闭;客户机和服务机都可以提出关闭请求。
- 开始是一方提出关闭,发出Fin,另一方回传ack,表示收到关闭请求,这时候发送方到接收方的路径已经关闭不再传输资源;这已经是两次握手了。接下来是继续由接收方传送未传输完的数据,在传输完成后,接收方向发送方发出FIN,表示我这里传完了;发送方发出ACK,表示收到,并会定时等待2个MSS(最大报文长度)的时间,到时间后如果没有重传要求,那么TCP连接就在经历四次握手后顺利关闭。
- 定时关闭:为什么要等待2个MSS?因为TCP有差错恢复,就是回退N步和选择重传的结合;一个MSS是最坏情况(超时),那么重新发送;这一来一回就需要两个MSS保证ACK被对方正确收到,这样才能完全关闭。
- 网络层协议
- 主要就是和IP相关的,比如IP/IPX/ICMP等等。。。
- IP协议:尽力而为的服务,实际上还是不可靠的。
- 子网划分:这个基本都是一些计算题,就不单列出来了。有几个子网,看向主机位借了几位,比如是一个C类地址,/28,那就是28-24=4位,借来了4位主机位;子网=2^4=16个子网,主机数=256/16-2=14个主机地址(广播不能用)。
- NAT协议,从私有地址转换为公网地址;DHCP动态主机配置,这个不用多说。
- ICMP,控制报文协议,主要用于差错报告和回显请求。
- 链路层协议
- MAC协议:注意以太网帧是含有目的MAC地址的
- 多路访问协议:(1)信道划分协议 (2)随机接入协议 (3)轮流协议
- 信道划分协议:(1)频分多路复用 (2)时分多路复用 (3)CDMA 码分多址 信道划分协议的前两者的缺点是:受限于R/N的平均速率,还有就是假设多个节点中仅有少量一两个节点需要传输分组,表现很差。 优点:避免了冲突碰撞
- 随机接入协议:(1)纯ALOHA协议 (2)时隙ALOHA (3)载波侦听 CSMA (4)带碰撞检测的载波侦听 (CSMA/CD)最常用 优点:单点通信效果好,多了就效率下降。
- 时隙ALOHA和纯ALOHA的区别:(1)纯ALOHA是有帧就传,碰撞就重传,说白了就刚。 (2)时隙ALOHA比较文雅,有帧先不急着传,等下一帧开始传;如果下一帧没有碰撞,就成功传出去;否则继续等待下一帧,以概率p进行重传。 (3)共同点:对信道划分协议不擅长的——单点通信情况表现良好。
- CSMA/CD:特点,更加文雅,传之前先侦听信道,有没有要传的,没有的情况再传。如果传到一半,发现诶,有其他人要传,立即停止传输。
- 轮流协议:(1)轮询协议 (2)令牌传递协议
- 轮询协议:指定一个为主节点,由主节点轮询其他节点,它能传输的最大帧数量。消除了随机接入协议的碰撞和空时隙;缺点是如果出现主节点单点故障,全部拉闸,还有就是单点通信性能不行。
- 令牌协议:谁拿到令牌(虎符),谁就能调兵遣将。
- 算法相关
- 可靠传输RDT3.0流水线协议:
- 流水线差错恢复两种基本方法:回退N步和选择重传
- 个人觉得这种区别有些像串中的普通解法和KMP算法的区别,一个是会回溯,另外一个是会利用已知条件,总是在增长。
- 回退N步:又被称为“滑动窗口协议”,即限制已发送和未发送的分组数量为N,原因之一是TCP还提供流量控制,发送方不会淹没接收方。 从失序后的分组全部会被丢弃并重新发送。
- 选择重传:并不是万金油,如果窗口长度太大,在某些失序情况下,不能判断究竟是重传还是后面分组的初次传输。
- TCP采用的是回退N步和选择重传的混合。
- 触发重传有两种可能:超时、触发三个冗余ACK;前者性质更恶劣一些。
- 拥塞控制原理
- 拥塞控制有两种方法:端到端拥塞控制、网络辅助的拥塞控制(异步传输方式ATM中的可用比特率(ABR))