专用网络
某些部队、组织或者某些人为了满足特殊业务需求而建立起来的特殊的网络,例如军队、铁路、银行都有自己的专用网络。
二、网络历史演进
1、世界互联网发展历史演进
1)、单个网络
ARPANET,1969年美国国防部创建的一个网络,可以连接周围的计算机。
计算机直接通过交换机就可以进行信息交换。
2)、三级结构
现代互联网的雏形,也称为互联网络,可以把美国所有的大学、研究所、实验室都连接起来。
从上至下,由主干网、地区网、校园网组成。
3)、多层次 ISP
ISP(Internet Service Provider)
:网络服务提供商,例如中国电信、中国移动、中国联通等。从上之下,由主干 ISP、地区 ISP 组成。
主干 ISP
中国的主干 ISP 包括中国电信、中国移动、中国联通,它们可以连接美国和其它国家的主干 ISP。
地区 ISP
例如移动网络,在北京叫北京移动,在上海叫上海移动,这些就属于地区 ISP。地区 ISP 可以 连接公司、校园、家庭的网络
4)、了解现代国际互联网的主要线路
我们可以通过 infrapedia 网站了解国际互联网的主要线路。
上图刻画了全球的所有主干网络的线路,可以看到,中国的主干网络出口基本都是位于广东、福建等沿海地区,它们通过各自的海底电缆与位处于世界各地的主干网络相互连接,最终形成了互联网。
2、中国互联网发展历史
1)、1980 年
中国铁道部开始互联网实验。
2)、1989 年
建立并运行第一个公共网络。
3)、1994 年
接入国际互联网。
4)、至今
当今中国最大的五个公用的计算机网络:
中国电信互联网(CHINANET)中国联通互联网(UNINET)中国移动互联网(CMNET)中国教育与科研计算机网(CERNET)中国科学技术网(CSTNET)
3、中国的互联网企业
1996年,张朝阳创建搜狐。1997年,丁磊创建网易。1998年,王志东创建新浪,马化腾、张志东创建腾讯。1999年,马云创建阿里巴巴。2000年,李彦宏创建百度。三、重识网络层次结构
网络为什么要分层?
因为复杂的程序都要分层。这是一个架构设计的通用问题,不仅仅是网络协议的问题,只要涉及复杂的逻辑或软件需求需要经常变动的情况通常都会通过分层来解决。
思考🤔:设计一个计算机网络需要解决哪些问题?
1)、传输数据时需要保证数据通路顺畅。2)、需要识别目的计算机。3)、需要了解目的计算机的状态。4)、数据是否错误。总之,计算机网络需要解决的问题是繁多而复杂的,所以我们需要采用分层的设计分别去解决不同的问题,实现不同的功能。
1、层级结构设计的基本原则
1)、相互独立
每一层仅仅实现一个相对独立的功能,并且需要确保层与层之间的耦合度是非常低的。
2)、灵活性
每一层的设计需要具备很好的灵活性、扩展性,以适应未来的网络变化。
3)、耦合度
各层之间是完全解耦的,层与层之间的变化互不影响。
2、OSI 七层模型
1)、OSI 悲催的故事
1)、一开始,OSI 欲称为全球计算机都遵守的标准。2)、但是,OSI 在市场化的过程中困难重重,因为 TCP/IP 已经在全球范围成功运行。3)、最终,OSI 并没有称为广为使用的标准模型。2)、OSI 七层模型失败的原因
1)、OSI 的专家没有充分将理论与实际进行结合。2)、OSI 标准的制定周期过长,按 OSI 标准生产的设备无法及时进入市场。3)、OSI 模型的设计不合理,某些功能在多层重复出现。3、TCP/IP 四层模型
我们需要理解数据通信过程中不同设备之间协议的转换。从下图可以看到路由器仅包括网络层与网络接口层。
从协议的数量来看,TCP/IP 四层模型构成了中间窄,两端大的⏳沙漏形状。如下图所示:
四、初识现代网络拓扑
1、为什么要了解网络拓扑?
因为它有助于我们在脑海里面形成一个形象的计算机网络。
2、网络拓扑分类
1)、边缘部分
家庭
由终端机器、路由器、网关、地区 ISP组成。
企业
不同于家庭的网络拓扑,其网关细分为内部网关与统一网关。
2)、核心部分
由地区 ISP、主干 ISP、路由器、海底电缆或跨地区电缆组成。其中的通信设备(一般是华为)主要是由移动、联通所铺设的。
现代互联网的网络拓扑形成了一个树状结构。
3)、C/S 模式
由 客户端/服务端 模式组成,并可以相互进行通信。
4)、P2P 模式
不分为服务端和客户端,它们都是对等地进行连接的,优势在于可以使下载速度更快,如迅雷下载器中就应用了这种模式。
五、网络性能指标
1、速率
即 bps <==> bit/s
网络数据传输的各种单位与之对应的常见设备
为什么电信拉的 100M 光纤,测试峰值速度只有 12M 每秒?
网络常用单位为(Mbps),因此这里的 100M 指的是 100Mbps。
100 M/S = 100 Mbps = 100 Mbit/s
100 Mbit/s = (100/8)MB/s = 12.5 MB/s
2、时延
1)、发送时延
发送时延 = 数据长度(bit)/ 发送速率(bit/s)
数据长度是由用户决定的,而发送速率是由计算机网卡所决定的。
2)、传输时延
传播时延 = 传输路径距离 / 传播速率(bit/s)
传输路径距离是由用户决定的,而传播速率则受限于传输介质。
3)、排队时延
数据包在网络设备中等待被处理的时间,例如路由器需要一个一个处理完前面的数据包才能处理后面的。
4)、处理时延
数据包到达设备或者目的机器被处理所需的时间。
总时延 = 发送时延 + 排队时延 + 传播时延 + 处理时延
3、往返时间 RTT(Route-Trip Time)
评估网络质量的一项重要指标。表示数据报文在端到端通信中来回一次的时间。通常使用 ping 命令查看 RTT
1)、ping 查看当前城市中的 IP
quchao@quchaodeMacBook-Pro ~ % ping 119.29.148.149
PING 119.29.148.149 (119.29.148.149): 56 data bytes
64 bytes from 119.29.148.149: icmp_seq=0 ttl=116 time=13.210 ms
64 bytes from 119.29.148.149: icmp_seq=1 ttl=116 time=19.118 ms
64 bytes from 119.29.148.149: icmp_seq=2 ttl=116 time=34.384 ms
2)、ping 美国的 IP
quchao@quchaodeMacBook-Pro ~ % ping 191.101.238.160
PING 191.101.238.160 (191.101.238.160): 56 data bytes
64 bytes from 191.101.238.160: icmp_seq=0 ttl=52 time=191.791 ms
64 bytes from 191.101.238.160: icmp_seq=1 ttl=52 time=180.278 ms
64 bytes from 191.101.238.160: icmp_seq=2 ttl=52 time=186.399 ms
六、应用层
传输层与之下的层已经提供了完整的通信服务。而应用层是面向用户的一层。它主要是用来定义应用间通信的规则,例如应用进程的报文类型(请求报文、应答报文)、报文的语法、格式、应用进程发送数据的时机、规则等等。
1、DNS(Domain Name System) 域名系统服务
域即对应的网络号,名即对应的主机名字。
1)、功能
通过把没有规则的点分十进制 IP 地址转换为可以理解的一些域名。
2)、域名
使用域名可以帮助记忆。域名通过 DNS 服务可以被转换成 IP 地址。域名是由点、字母和数字组成的。点分割不同的域。域名可以分为顶级域、二级域、三级域…,例如: => - 三级域.二级域.顶级域。顶级域常见分类
国家cnusukca通用comnetgovorg二级域
例如:qq、aliyun、taobao、google、facebook 等等。
顶级域、二级域、三级域组成了一个树状结构。且在顶级域名服务器上面还有一个根域名服务器。
3)、域名服务器
只要有一个外网的服务器就可以搭建一个域名的服务器。
2、DHCP(Dynamic Host Configuratin Protocol) 动态主机设置协议
1)、是什么?
网络管理员只需配置一段共享的 IP 地址,每一台新接入的机器都可以通过 DHCP 来这个共享的 IP 地址里面申请 IP 地址,就可以自动配置。等用完还回去其它机器也能使用。它的特点如下所示:
1、DHCP 是一个局域网协议。2、DHCP 是应用 UDP 协议的应用层协议。
2)、功能
即插即用联网。在 IP 配置界面选中 自动获得 IP 地址、自动获得 DNS 服务器地址即可启用 DHCP 协议去获取一个临时 IP(通常是一个内网地址)。有一个租期,在租期过半时可以续租。3)、DHCP 的过程
1)、DHCP 服务器监听默认端口:67。2)、主机使用 UDP 协议广播 DHCP 发现报文。3)、DHCP 服务器发出 DHCP 提供报文。4)、主机向 DHCP 服务器发出 DHCP 请求报文。5)、DHCP 服务器回应并提供 IP 地址。4)、向 DHCP 租用的 IP 地址是有租期的,IP 地址如何实现续租呢?
客户端会在租期过去50%的时候,直接向为其提供 IP 地址的 DHCP 服务器发送 DHCP request 消息报。客户端接收到服务器回应的 DHCP ACK 消息包后,会根据消息报中提供的新的租期以及其他已经更新的 TCP/IP 参数更新自己的配置。
3、HTTP(HyperText Tranfsfer Protocol) 超文本传输协议
1)、是什么?
HyperText 即超文本、超链接,Http 是指在电脑中显示的、含有可以指向其他文本的链接文本。对于这些内容都有一个统一的路径,例如:http(s)://<主机>:<端口>/<路径>
。HTTP 协议底层是 TCP 协议,因此它是可靠的数据传输协议。2)、Web 服务器
分为硬件部分(计算机或云上的虚拟设备)和软件部分(Nginx、Apache)。
过程
1)、接受客户端连接2)、接受请求报文3)、处理请求4)、访问 Web 资源5)、构造应答6)、发送应答3)、HTTP 请求方法
GET 和 POST 的区别
1、get参数通过url传递,post放在request body中。2、get请求在url中传递的参数是有长度限制的,而post没有。3、get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。4、get请求只能进行url编码,而post支持多种编码方式。5、get请求会浏览器主动cache,而post支持多种编码方式。6、get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。7、GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。4)、HTTP 指定资源
1)、在地址中指定
/repo/100.ht…
repo/100.html 是指定的请求资源。
/?sort=0&unl…
? 后面用来指定请求参数。
2)、在请求数据中指定
5)、HTTP 请求报文
HTTP 的请求报文与响应报文都满足如下结构:
起始行 + 头部 + 空行 + 实体
其中的空行是用来区分开头部和实体的。
HTTP 请求报文的格式如下所示:
例如:
POST HTTP/1.1
Accept-Encoding:gzip
Accept-Language:zh-CN
…
{ 请求的 jsonString 内容}
6)、HTTP 应答报文
7)、HTTP 应答状态码
100~199
101:Switching Protocols,服务器同意将 HTTP 升级为 WebSocket 时发送。200~299
200:在响应体中放有数据。204:No Content,响应头后没有 body 数据。206:Partial Content,通常用于 HTTP 分块下载和断点续传,同时带上相应的响应头字段 Content-Range。300~399
301:Moved Permanently,永久重定向。302:Found,临时重定向。304:Not Modified,协商缓存命中时返回。400~499
400:Bad Request,请求出错。403:Forbidden,服务器禁止访问,原因有法律禁止、信息敏感等。404:Not Found,资源未找到。405:Method Not Allowed,请求方法不被允许。406:Not Acceptable,资源无法满足条件。408:Request Timeout,请求超时。409:Conflict,多个请求发生了冲突。413:Request Entity Too Large,请求体的数据过大。414:Request-URI Too Long,请求行里的 URI 太大。429:Too Many Request,客户端发送的请求过多。431:Request Header Fields Too Large,请求头的字段内容太大。500~599
500:Internal Server Error,服务内部出错。501:Not Implemented: 请求的功能不支持。502:Bad Gateway: 服务器自身是正常的,只是数据通道有问题。503:Service Unavailable: 服务器很忙,无法响应服务。8)、HTTP 工作结构
Web 缓存
通常遵循二八原则:一个网站的内容通常分为20%的热门内容,80%的冷门内容。因此可以优先缓存热门内容。
存储器层次结构
缓存(CPU 高速缓存)/主存(内存)/辅存(磁盘)
Web 代理
通过 Web 代理可以屏蔽服务器的部署结构。可以在 Web 代理里面设置规则,如防火墙来保证安全。Web 代理的分类
1)、正向代理:代理客户端去访问 Server。2)、反向代理:代理 Server 把数据返回给客户端。例如 Nginx、HAProxy 就是一些著名的代理软件。CDN(Content Delivery Network)内容分发网络
用于将一些大的内容在临近的服务器留一个备份。使用 CDN 可以进行多媒体内容的加速。CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应。
爬虫
用于在互联网上采集信息, 例如百度、Google的本质就是一个爬虫,它们通过把整个网络的数据给取下来,并且做一个索引,然后把这些内容提供给大家,在进行搜索时就会匹配这些内容并返回。
不好的爬虫的缺点:
增加网络拥塞。损耗服务器资源。4、HTTPS(Secure) 安全的 HTTP 协议
https://<主机>:<443>/<路径>
HTTP 是明文传输的,但是我们需要在网络中传输 账号密码、个人信息、账号金额、交易信息、敏感信息,这会导致中间人非法截取信息,导致信息泄露。
1)、加密模型
对称加密:加密与解密都使用同一个秘钥。非对称加密:公钥加密,私钥解密,并且公钥与私钥是拥有一定数学关系的一组秘钥。私钥:自己使用,不对外公开。公钥:给大家使用,对外公开。2)、数字证书 签名校验
数字证书是可信任组织颁发给特定对象的认证。而可信任组织即客户端与服务端都认为安全的组织。
数字证书格式
证书格式、版本号证书序列号签名算法有效期对象名称对象公开秘钥3)、SSL(Secure Sockets Layer)安全套接层
SSL 位于传输层与应用层之间,它是一个子层,作用主要有两点:
1)、数据安全(保证数据不会被泄漏)与数据完整(保证数据不会被篡改)。2)、对数据进行加密后传输。
HTTPS 的通信过程
1)、443 端口的 TCP 连接。2)、SSL 安全参数握手。3)、客户端发送数据。4)、服务端发送数据。SSL(Secure Sockets Layer) 安全套接层握手过程
1)、生成随机数 1、2、3 的过程
2)、双端根据随机数 1、2、3 与相同的算法生成对称秘钥进行加密通信
HTTPS 综合地运用了对称加密与非对称加密,在进行随机数校验的阶段是使用了非对称加密来进行通信的,然后等双方都确定了三个随机数之后,就可以使用相同的算法来生成对称秘钥进行加密通信了。HTTPS 的优势在于双端分别生成了秘钥,没有经过传输,减少了秘钥泄漏的可能性。
5、Http2
它的特点如下所示:
1)、头部压缩。2)、多路复用:多路复用允许同时通过单一的HTTP/2连接发送多重请求-响应信息。改善了:在http1.1中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制(连接数量),超过限制会被阻塞。3)、提升访问速度:相比 http1.1 请求资源所需时间更少,访问速度更快。4)、二进制分帧:HTTP2.0 会将所有的传输信息分割为更小的信息或者帧,并对他们进行二进制编码。5)、设置请求优先级。6)、服务端推送。
6、cookie
HTTP 是一个无状态协议,因此 Cookie 的最大的作用就是存储 sessionId 用来唯一标识用户。并且,Cookie 本质上就是浏览器里面存储的一个很小的文本文件,内部以键值对的方式来存储。
生存周期
通过 Expires 和 Max-Age 两个属性来设置:
Expires:过期时间。Max-Age:表示一段时间间隔,单位是秒,从浏览器收到报文开始计算。
作用域
我们可以使用 Domain 和 path 属性给 Cookie 绑定域名和路径。如果在发送请求之前,发现域名或者路径和这两个属性不匹配,那么就不会带上 Cookie。需要注意的是,路径中含有 / 表示域名下的任意路径都允许使用 Cookie。
安全
带上 Secure:说明只能通过 HTTPS 传输 cookie。带上 HttpOnly:说明只能通过 HTTP 协议传输。带上 SameSite:预防 CSRF 攻击。缺点
1)、安全缺陷:Cookie 很容易被非法用户截获,然后进行一系列的篡改,最后在 Cookie 的有效期内重新发送给服务器。2)、容量缺陷:体积上限只有4KB,只能用来存储少量的信息。3)、性能缺陷:Cookie 紧跟域名,因此域名下的请求都会携带上完整的 Cookie,这样随着请求数的增多,将会造成巨大的性能浪费,因为请求携带了很多不必要的内容。这里可以通过 Domain 和 Path 指定作用域去解决。7、HTTP 传输中的常见问题
1)、跨域问题2)、数据传输3)、队头阻塞七、传输层
现在,当设备 A 与 设备 B 相互通信时,我们可以认为它们就是通过一个虚拟的互连网络进行连接的。在虚拟的互连网络里面已经解决了网络拓扑、数据路由的走向等问题。在传输层重点解决的是两个设备它们直接是如何进行通信的。
1、传输层的主要功能
1)、进程与进程的通信
不同于在单个操作系统内使用的进程间通信(Unix 域套接字、共享内存),网络通信可以跨设备、跨网络进行通信。
2)、端口的概念
使用端口来标记不同的网络进程。端口使用16比特位表示(0~65535)。常见的协议端口有:
2、UDP(User Datagram Protocol)用户数据报协议
1)、功能
UDP 协议不会对数据报进行任何的处理,即不合并,也不拆分数据。
1)、跨域问题2)、数据传输3)、队头阻塞七、传输层
现在,当设备 A 与 设备 B 相互通信时,我们可以认为它们就是通过一个虚拟的互连网络进行连接的。在虚拟的互连网络里面已经解决了网络拓扑、数据路由的走向等问题。在传输层重点解决的是两个设备它们直接是如何进行通信的。
1、传输层的主要功能
1)、进程与进程的通信
不同于在单个操作系统内使用的进程间通信(Unix 域套接字、共享内存),网络通信可以跨设备、跨网络进行通信。
2)、端口的概念
使用端口来标记不同的网络进程。端口使用16比特位表示(0~65535)。常见的协议端口有:
2、UDP(User Datagram Protocol)用户数据报协议
[外链图片转存中…(img-FwyLcBVC-1643106458899)]
1)、功能
UDP 协议不会对数据报进行任何的处理,即不合并,也不拆分数据。