01 前言&课程介绍
- 本课程笔记来自掘金字节内部课-前端初级训练营
- 计算机网络概论 - 掘金 (juejin.cn)
- 字节前端训练营 - 计算机网络概论.pptx - 飞书云文档 (feishu.cn)
目标
计算机网络的整体认知,各种概念的初步了解
- 计算机网络的整体认识
- 网络分层协议认知
- HTTP 1 2 3的关系
- CDN运行的基本原理
分析方法
-
自底向上
- 从简单开始逐步复杂
- 从模块拼凑网络
-
自顶向下
- 从复杂到简单
- 分解模块
02 蟹堡王帝国
三步走战略
- 在比奇堡开通外卖服务,增加额外收入
- 在其它城市开分店
- 在全国开分店并开通外卖服务
通信 -> 蟹老板:我要知道所有店铺的盈收怎么样
外卖
- 通过电话 -> 如果同时打电话可能导致线路会堵(顾客体验不是很良好),章鱼哥经过分析发现,电话内容几乎都是:谁吃?吃什么?送到哪里?如果客户把这些问题的答案,发给蟹堡王就可以解决线路拥堵的问题,于是章鱼哥找到森迪发明了传真,客户通过传真把订单发到蟹堡王
- 通过传真 -> 目标明确且不会拥堵
其它城市开启分店
-
分店
- 北京方恒蟹堡王
- 上海科技绿洲蟹堡王
-
通信线路(收集分店销售数据)
- 赚了多少钱
- 确定原料数量
- 是否需要新分店
- 促销信息
-
新的分店
- 中航蟹堡王
- 紫金蟹堡王
- 大钟寺蟹堡王
- 通信线路怎么办?
这些分店的线路连接到北京方恒分店,再通过北京方恒分店转发至蟹堡王总店,促销活动也是通过北京方恒分店转发至北京的其它分店(北京方恒分店相当于北京分店的总分店)
通过转发但是发现顾客不知道北京其它分店到底在哪儿(中航也不知道,所以又问章鱼哥,每次都是这样),为了解放章鱼哥,每次创建新的分店时,每个分店都有一份相关分店的详细地址
蟹堡王全国外卖
- 比奇堡居民居住分散
- 城市中的小区密度较高
- 小区中每家都直连蟹堡王成本太高
如果每个都直连蟹堡王的话,成本太高了,于是你就创建一个转发点,通过转发点直连蟹堡王从而降低了成本,全国的分店都需要考虑线路重复的问题。
分析可得线路图:
小结
- 蟹堡王顾客:客户端
- 蟹堡王分店:服务端
- 小区转发点和蟹堡王城市转发分店:路由器
- 转发表格:网络协议
03 计算机网络基础
网络组成部分
- 主机:客户端和服务端,提供信息和接收信息
- 路由器:转发主机之间的信息
- 网络协议:负责提供统一的格式,方便路由器或主机这类信息进行编码和解码
网络结构
网络的网络
- 比奇堡和小区网络:本地网络
- 北京和上海分店 + 比奇堡:三个本地网络节点的网络
- 全国通信网络:本地网络的网络
- 区域网络、城域网络和广域网(外卖)
信息交换方式
-
电路交换
-
分组交换
-
区别:
- 分组交换,把每个信息拆分成很小的报文,有新的信息会加入到分组队列中,如果队列满了会把新的分组丢弃--丢包
- 电路交换,每次都要建立连接,即使不通信也会占用资源,资源利用率低
网络分层
-
快递员不关心包裹内容
-
卡车司机不关心车厢里拉的是什么
-
高速公路不关心开的什么车
-
具体分层(OSI)
-
物理层
- 建立、维护、断开物理连接(由底层网络定义协议)
-
数据链路层
- 建立逻辑连接、进行硬件地址寻址、差错检验等功能(由底层网络定义协议)
- 将比特组合成字节进而组合成帧,用 MAC 地址访问介质,错误发现但不能纠正
-
网络层
-
进行逻辑地址寻址,实现不同网络之间的路径选择
-
协议有:
-
ICMP(Internet Control Message Protocol) :Internet 控制报文协议,它是 TCP/IP协议簇 的一个子协议,用于在 IP主机、路由器之间传递控制消息
-
IGMP(Internet Group Management Protocol) :Internet 组管理协议,是因特网协议家族中的一个 组播协议,该协议运行在主机和组播路由器之间,有三个版本(v1、v2、v3)
-
IP(Internet Protocol)
:网际互连协议,是TCP/IP体系中的网络层协议
- IPV4(Internet Protocol Version 4) :又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。
- IPV6(Internet Protocol Version 6) :是互联网工程任务组(IETF)设计的用于替代 IPV4 的下一代 IP 协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。
-
-
-
传输层
-
定义传输数据的协议端口号,以及流控和差错校验
-
协议有:
- 数据包一旦离开网卡即进入网络传输层
- TCP(Transmission Control Protocol) :是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793定义
- UDP(User Datagram Protocol) :用户数据报协议,Internet 协议集支持一个无连接的传输协议,UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。
-
-
会话层
- 建立、管理、终止会话(在五层模型里面已经合并到了应用层)
- 对应主机进程,指本地主机与远程主机正在进行的会话
-
表示层
- 数据的表示、安全、压缩(在五层模型里面已经合并到了应用层)
- 格式有,JPEG、ASCII、EBCDIC、加密格式等
-
应用层
- 网络服务与最终用户的一个接口
- 协议有:
- HTTP(Hypertext Transfer Protocol) :超文本传输协议,是一个简单的请求-响应协议,它通常运行在 TCP 之上,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
- FTP(File Transfer Protocol) :文件传输协议,是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层(应用层),TCP 模型的第四次,使用 TCP 传输而不是 UDP,客户在和服务器建立连接前要经过一个“三次握手”的过程,保证客户与服务器之间的连接是可靠的,而且是面向连接,为数据传输提供可靠保证
- TFTP(Trivial File Transfer Protocol) :简单文件传输协议,是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务
- SMTP(Simple Mail Transfer Protocol) :是一种提供可靠且有效的简单邮件传输协议,SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。
- SNMP(Simple Network Management Prptocol) :简单网络管理协议的原来名字叫做简单网关监控协议(Simple Gateway Monitoring Protocol)最早是 IETF 的研究小组提出来的,在 SGMP 协议的基础之上,加上新的管理信息结构和管理信息库,从而让 SGMP 更加全面
- DNS(Domain Name System) :域名系统是互联网的一项服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
- TELNET:Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登录服务的标准协议和主要方式,它为用户提供了在本地计算机上完成远程主机工作的能力。
- HTTPS(Hypertext Transfer Protocol Secure) :是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。
- POP3(Post Office Protocol - Version 3) :邮局协议版本3,是 TCP/IP 协议族中的一员,本协议主要用于支持使用客户端远程管理在服务器上的电子邮件
- DHCP(Dynamic Host Configuration Protocol) :动态主机配置协议是一个局域网的网络协议,指的是由服务器控制一段 IP 地址范围,客户机登录服务器时就可以自动获得服务器分配的 IP 地址和子网掩码。
-
04 Web中的网络
HTTP协议
HTTP 1.1
无法多路复用
HTTP 2
将多个HTTP请求拆分到帧中,每个帧可以携带
解决了多路复用问题
队头堵塞,但是在TCP上
启动一个HTTPS连接需要3RTT
建议TCP连接1RTT 建立TLS连接2RTT
HTTP3 (QUIC Quick UDP Internet Connection)
UDP不可靠,但是QUIC可靠
QUIC可以为除HTTP协议以外的应用层协议提供支持
QUIC实现首次连接 1RTT(相当于组合了TCP与TSL的握手)
QUIC的再次访问 0RTT
CDN
CDN(Content Delivery Network,内容分发网络)是一种分布式的网络架构
-
CDN:DNS劫持
域名解析一般由网站自己处理
要加速的域名则重定向到DNS厂商的域名解析服务器
CDN厂商根据来源确定最近的CDN服务器的IP
用户直接访问最近的CDN服务器
Web Socket
WebSocket是一种基于TCP协议的网络通信协议,提供了在单个TCP连接上进行全双工通信的能力,可以实现客户端和服务器之间的实时数据传输。
有状态的持久连接
服务端可以主动推送消息
用WebSocket发送消息延迟比HTTP低
WebSocket协议由HTTP协议升级而来,因此,建立WebSocket协议必须先建立HTTP连接。
小结
- HTTP 1 2 3 的演化历史
- CDN解决了HTTP协议以外的问题
- WebSocker从HTTP协议升级而来