计算机网络概论小记

98 阅读6分钟

个人前言,从大学一年级起,到今年研二,多多少少和代码打了几年交道,因为专业是自动化的缘故,代码是必须要知道的,但是多以应用为主,调式成功就行,因此对代码的学习都没很深入,还有一个原因就是,见识了C语言、C++语言、Python语言和Matlab语言后,觉得没什么兴趣,研二大家都在自学代码,以C++和java居多,但感觉也不是我的菜,倒是对页面设计这些啥的感觉还有点意思,因此准备系统学习一下,一开始是跟着B站的视频学,逐渐学习了HTML、CSS、JavaScript和React等知识,觉得还是挺有趣的,学了一段时间后也想着看看自己有没有能力吃前端这碗饭,于是准备找一个实习试一试,但看了一眼市场,在武汉的前端岗位确实不多,一次偶然的机会看到了字节前端训练营,觉得挺不错的,里面的一些知识也正是我所需要的,于是开始了这趟学习之旅,对想要掌握的内容做了一些笔记,如下,其中的一些记录可能不全,有些是按自己的想法记录的,但尽量维持主讲老师的原意。

前言&课程介绍小记

01 前言&课程介绍 自底向上 自项向下

02 蟹堡王帝国 蟹堡王顾客:客户端 蟹堡王分店:服务端 小区转发点和蟹堡王城市转发分店:路由器 转发表格:网络协议

03计算机网络基础 网络组成部分 主机:客户端和服务端 路由器 网络协议 网络结构:网络的网络 信息交换方式:电路交换&分组交换 网络分层:分清职责,物理层、链路层、网络层、运输层和应用层 协议:协议的存在依赖于连接 网络协议:标头和载荷 HTTP协议实例:链路层——本地帧头部、IP协议头部、 运输层——TCP协议头部 应用层——HTTP协议头部 TCP协议格式

04 Web中的网络 HTTP 协议 HTTP 连接模型 HTTP1.1:无法多路复用 HTTP2:帧 前三个字节:载荷长度 第四个字节:类型 第五个字节:类型对应的Flags 第六到第九字节: 第1位:保留位 第2-32位:流ID HTTP2: 帧带来的额外好处: 调整响应传输的优先级 头部压缩 Server Push HTTP2:队头堵塞,但是在TCP上 Web应用 TCP包0:包含了(包含了style.css的第一行内容)的HTTP2的帧 TCP包1:包含了(包含了main.js的全部内容)的HTTP2的帧 TCP包2:包含了(包含了style.css的第2行内容)的HTTP2的帧 TCP包3:包含了(包含了style.css的第3行内容)的HTTP2的帧 HTTP2:3RTT启动 HTTP客户端:我要和大哥说话 TCP客户端默默对HTTP客户端说,我 你 急 ,但 急 TCP服务端:嗨!服务端,你在吗? TCP客户端:嗨!客户端,我在,你在吗? TLS客户端:hello!能给我把钥匙吗? TLS服务端:hello,拿走,快~ HTTP客户端:终于到我啦,快,快给我index.html! HTTP3:QUIC quick UDP internet Connection 现存网络设备对TCP和UDP支持已经僵化 UDP不靠谱,QUIC靠谱 QUIC可以为除HTTP协议以为的应用层协议提供支持 HTTP3:QUIC-1RTT 第一次访问 HTTP客户端:我要和大哥说话 QUIC客户端:嗨!服务端,在不,能给我把钥匙吗? QUIC服务端:诺,给你钥匙 HTTP客户端:too 快,我要index.html QUIC服务端(偷偷告诉客户端):这还有一把钥匙,下次直接问,不要吵我啦 第二次访问 HTTP客户端:我要和大哥说话 QUIC客户端:服务端你在吗,那小子又来了,你懂的 QUIC客户端:index.html是吧,给你 HTTP客户端:? CDN:你无法突破物理极限的(http3慢) 你的钱包够鼓吗(http3要流量多,资源浪费) 你,够强大吗?(服务器少(1台),抗流量上限低(100G)无法应对爆满峰流(双11) ) CDN:DNS 劫持 域名解析一般由网站自己处理 要加速的域名则重定向到CDN厂商的域名解析服务处理 CDN厂商根据来源确定最近的CDN服务器IP 用户直接访问最近的CDN服务器 CDN: 拉策略 默认情况下什么也不做,谁需要了先看仓库有没有,有就直接给 没有,你先等等,我去买个橘子 过了几天,这都啥啊,丢了(主打一个翻脸不认人) 推策略 大哥说今天你存哪些,明天再存哪些 谁需要了先看仓库有没有,有就直接给,没有就去买橘子 大哥说这个、这个还有那个,被狗吃了 WebSocket 有状态的持久连接 服务端可以主动推送消息 用WebSocket发送消息延迟比HTTP低 从HTTP协议升级而来

05 网络安全 网络安全三要素 机密性:攻击者无法获知通信内容(加密需要加密算法和密钥等消息) 完整性:攻击者对内容进行篡改时能被发现 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信(完整性和身份验证相互关联) 对称加密:加密、解密同样的密钥 非对称加密:加密、解密不同的密钥(公钥和私钥),而且公钥加密只能私钥解,私钥加密反之 密码散列函数(哈希函数) 输入:任意长度的内容 输出:固定长度的哈希值 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的 网络是明文的,如果双方可以通过明文通信商量出密码消息,那么攻击者也可以 所以想要通过明文通信交换秘密消息,通信双方需要先有秘密信息 想要实现完整性及身份验证,通信双方需要先有秘密信息 签名:用于鉴别身份和防止伪造 数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥解密 数字签名(指纹)=私钥加密(密码散列函数(原文)) 消息=原文+数字签名 网络安全:HTTPS HTTPS=HTTP+TLS TLS=身份验证+解密,身份验证靠PKI 服务端身份验证靠PKI,客户端身份验证靠HTTP协议