B0004 计算机网络从底层到顶层
网络三部曲合集:
网络是怎么传输的?
网络是怎么可靠的?
网络是怎么安全的?
网络是怎么传输的?(前三层:物理层,数据链路层,网络层)
多个计算机两两互联,理论可行,成本太高,连线太乱。
集线器(物理层):
把一个计算机的数据包无脑转发到所有计算机。问题:两个计算机的数据包被所有人看到。
交换机(数据链路层):
内部维护一张MAC地址表,记录某个设备对应的端口。a发给b数据包(带上mac地址头)只能发两个人,不会所有端口全发。问题:交互机a与交换机b连接后,a要维护的MAC地址表要把端口号与b中的所有mac地址对上,维护成本太高。
路由器(网络层):
每个端口都有独立的mac地址,交换机a的端口只要多一个路由器端口的mac地址就行了。交换机的mac表维护简化了。问题:交换机a可以把发给交互机b的数据先全部发给路由器,但是如何区分发给交换机b的数据尼,总不能又回到原来把所有交换机b上的电脑mac地址都记下来吧。
IP地址:区分交换机a与交换机b上的计算机。网段(子网)不同就是不同的交换机下的设备。a发b的数据包(带上ip地址头)
路由器可以连接不同的子网,默认网关就是指路由器,当计算机a发现数据包不是发给自己网内的计算机时,就发给默认网关其实就是发给路由器。计算机a中有一个ARP表记录mac地址与IP地址对应关系。
路由器中有路由表,不同端口对应不同网段的IP子网。
路由器中也有ARP表,记录IP与mac地址的对应。
网络是怎么可靠的?(网络层)
前面是网络的前三层(物理层,数据链路层,网络层),但是计算机b中有很多进程到底发给哪个进程的尼?
开始进行可靠设计,形成传输层。
进程端口号:给计算机b中的每个进程一个端口号,区分不同进程。
停止等待协议:没有回复就重传,有回复才发下一个包。
累计应答:流水线发送,流水线应答。可能包的顺序会乱。
滑动窗口:两边发送自己的数据处理能力,调整发送接收速度。
拥塞窗口:计算机a测试网络处理包的能力。
三次握手:确认两边的状态。
数据包如何理解?(应用层)
- 对应 OSI: 应用层 + 表示层 + 会话层
- 核心职责: 直接面向用户和应用程序。它定义了软件之间交流的“语言”和格式,比如网页怎么排版、邮件怎么写、文件怎么下载。
- 代表技术/协议: HTTP/HTTPS(网页浏览)、DNS(域名解析)、FTP(文件传输)、SMTP(发邮件)。
- 通俗比喻: 你写的“信件内容”,以及你使用的语言格式。
网络是怎么安全的?(应用层的https协议)
对称加密:一把钥匙M对一把锁m。问题:钥匙怎么传递尼?
非对称加密:
两把钥匙一把锁,A钥匙加锁,只能B钥匙解锁,反之亦然。计算机a有A(私钥),B(公钥)两个钥匙,先把钥匙B(公钥)给计算机b,中间钥匙B(公钥)被人偷了没关系,b发的数据只有A(私钥)能解锁。总结:谁拿到我的公钥,谁就能安全的发数据给我。
中间人攻击:用非对称加密传对称加密的钥匙,很好。问题:第一次发送公钥时,中间人发扣留公钥,伪造一个自己的公钥,骗两边尼?
签名:在传输私钥A的公钥B前,再用一套私公钥C/D。用私钥C加密传输(公钥B)也就是签名。对方用公钥D解出公钥B也就是验证签名。之后再用私公钥A/B传输对称加密的钥匙M。问题:公钥D变成公开之后,又怎么办尼?
可信第三方:用来加密解密的C/D钥匙放在第三方。CA:证书颁发机构。


