时间证明,学了《通信网》这门课带来的帮助远不止接路由器。写一篇博客整理一下各种零碎的知识点。

bit,比特,二进制位;Byte,字节,处理的基本单位;1Byte=8bit。网速用 b,硬盘用 B。

分层模型

OSI Model

互联网协议入门(一)——阮一峰的网络日志 http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html 互联网协议入门(二)——阮一峰的网络日志 http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html 小白也能看懂的网络基础 03 | OSI 模型是如何工作的(HTTP 请求范例) https://sspai.com/post/64659

Physical 物理层

发送和接受原始比特流(0 和 1),定义了网络设备机械特性(光缆/电缆、引脚数量)、电气特性(电压大小)、传输方式(全双工)、信道复用。

单纯的 0 和 1 没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?这就是链接层的功能,它确定了 0 和 1 的分组方式——帧,即标头(Head)+数据(Data)。

标头中包含的地址是 MAC 地址,实现在同一个子网下面的广播(物理寻址)

差错控制(检测比特错误,奇偶校验、CRC 校验)(纠错由传输层解决)

流量控制(针对发送方,停等、Go-Back-N、选择重传)

Network 网络层

规划 IP 地址(ipv4 和 ipv6 变化只会影响网络层),区分不同的计算机是否属于同一个子网。解决不同子网传输,就是逻辑寻址,确定最佳的数据传输路径(路由)。

ARP 协议、DHCP 协议

Transport 传输层

负责端到端通讯,“端口”(port),给每一个使用网卡的程序分配编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

TCP/UDP 协议、流量控制(大文件分块)、差错控制(端到端)

Session 会话层

会话层接收到表示层传来的数据信息后,负责在数据传输中设置和维护两台计算机之间的通信连接,以保证这段连接不会因中断而造成不必要的麻烦。

Presentation 表示层

将来自应用层的数据转换成所有计算机都通用的标准格式,并对数据进行压缩、加密。

Application 应用层

应用层即用户和计算机交流的场所,直接为用户的应用进程(例如电子邮件、文件传输和终端仿真)提供服务,如 HTTP、SMTP、FTP、DNS 等。

网络设备

入网指南 01 | 一文读懂你身边的「网络」 https://sspai.com/post/64074 入网指南 03 | 交换机在交换什么? https://sspai.com/post/64302

先来看看路由器,路由器是连接两个网络的硬件设备,是网络的大门,同时也承担寻路功能,因此,路由器又叫做网关设备。它帮助我们将数据运送到互联网上,然后互联网中的无数台路由器又帮助我们将信息运送到目的地。

交换机是用于数据转发交换的设备。通常用于路由器和各终端直接的连接,可将交换机视为路由器接口的拓展。随着网络的发展,也出现了三层交换机来承载部分内网寻路的工作,但是请大家记住,交换机的本职工作还是内网交换,在大型网络寻路中还是要通过路由器来实现;同样的,路由器的工作是不同网络之间的寻路,请不要将路由器作为交换机使用,尤其是终端较多的情况下。

AP 是用于无线网络的交换机,用来接入无线终端,是无线网络中的核心设备。

大家家里应该都会有无线路由器这种东西,AP 的功能和无线路由器上的天线是一样的,都用作无线终端的接入。咱们的无线路由器上通常还会标有 LAN 和 WAN,LAN 口一般都是交换口,也就是一个小交换机,WAN 承担的就是路由功能啦。

2019 王道考研 计算机网络 https://www.bilibili.com/video/BV19E411D78Q?p=37


集线器(Hub)可以扩展以太网,但是集线器会无脑将一个设备的所有消息转发到集线器所连的所有设备,故会将所连接的所有设备变成一个大的冲突域,同时只能有两台设备进行通信,且设备越多,冲突越多。

使用网桥(Bridge)时,由于网桥会根据 mac 地址进行过滤,所以不会形成冲突域。网桥接口越来越多,网桥就变成了交换机

P2P

浅析 C/S、B/S 与 P2P 架构 https://blog.csdn.net/Enchanted_ZhouH/article/details/76094308

C/S 架构是一种典型的两层架构,全称是 Client/Server,即客户端/服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是 Socket 服务器端,服务器端的程序通过 Socket 与客户端的程序通信。

比如:微信/客户端 QQ 等是基于 C/S 架构。

P2P 是英文 Peer-to-Peer(对等)的简称,又被称为“点对点“。“对等”技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。

P2P 还是英文 Point to Point (点对点)的简称。它是下载术语,意思是在你自己下载的同时,自己的电脑还要继续做主机上传,这种下载方式,人越多速度越快但缺点是对硬盘损伤比较大(在写的同时还要读),还有对内存占用较多,影响整机速度。

P2P 架构的核心思想是每个节点既可以充当客户端(Client),又可以充当服务器端(Server)。

比如:BT/电驴下载,非法传播视频的网站等,因为每个结点既是客户端可以进行下载,又是服务器端可以继续上传资源以提供下载服务给其他人,所以找不到真正的 Server,打击非法网站也就难上加难了,所以 P2P 架构就是一种”我为人人,人人为我“的资源共享思想。如果是 C/S 架构,比如 HTTP 协议,只需单点攻击 Server,整个 C/S 架构就失去了最核心的服务器端部分,基于 C/S 架构的通信也就被攻破了。

DNS

Win10 下可以使用tracert www.taobao.com追踪路由。

这时候可以发现淘宝有一个 cdn 地址是www.tmall.com.danuoyi.tbcache.com,中文名大挪移。

【原创】关于 DNS 不得不说的一些事 https://www.cnblogs.com/rjzheng/p/11395695.html

浏览器中输入 URL 到返回页面的全过程(俗称天龙八步):

  1. 根据域名,进行 DNS 域名解析;
  2. 拿到解析的 IP 地址,建立 TCP 连接;
  3. 向 IP 地址,发送 HTTP 请求;
  4. 服务器处理请求;
  5. 返回响应结果;
  6. 关闭 TCP 连接;
  7. 浏览器解析 HTML;
  8. 浏览器布局渲染;

127.0.0.1

彻底明白 ip 地址,区分 localhost、127.0.0.1 和 0.0.0.0 https://www.jianshu.com/p/ad7cd1d5be45

首先我们要先知道一个概念,凡是以 127 开头的 IP 地址,都是回环地址(Loop back address),其所在的回环接口一般被理解为虚拟网卡,并不是真正的路由器接口。

所谓的回环地址,通俗的讲,就是我们在主机上发送给 127 开头的 IP 地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机。

小说明:正常的数据包会从 IP 层进入链路层,然后发送到网络上;而给回环地址发送数据包,数据包会直接被发送主机的 IP 层获取,后面就没有链路层他们啥事了。

而 127.0.0.1 作为{127}集合中的一员,当然也是个回环地址。只不过 127.0.0.1 经常被默认配置为 localhost 的 IP 地址。 一般会通过 ping 127.0.0.1 来测试某台机器上的网络设备是否工作正常。

NAT

入网指南 04 | IP 地址大揭秘 https://sspai.com/post/64430

为了缓解 IPv4 地址匮乏的情况,提出了 NAT(Network Address Translation,网络地址转换) 协议。NAT 的出现可以说让 IPv4 重获新生,让它在如此严峻的情况下又支撑了近二十年,直到今天我们能够向 IPv6 过渡。IPv4 地址定义了公网地址和私网地址,NAT 的核心就是公网地址和私网地址的互相转换。公网地址就是用在公网上,具有唯一性,要获得公网地址,需要向运营商申请。私网地址就是我们用在局域网内部,可重复使用,任意配置的地址。这样就意味着一个结构只需要申请很少的几个 IP 地址就可以实现在公网上的通信了,虽然需要拿出一部分用作私网地址,但是私网地址是可以重复使用的,利用率大大提高。

16.3. 一对一 NAT 与端口映射及 DMZ 的区别 http://docs.hi-spider.com/user_guide.V8/difference.html

一对一 NAT 的对外 IP 具有双向性:对于外网客户端来说其是目的地址,对于外网服务器来说其是源地址。

端口映射和 DMZ 映射的对外 IP 只是作为客户端的目的地址,对于外网服务器其源地址仍为该服务器所在的局域网的路由器 WAN 口 IP 地址。

NAT、PAT、DMZ、端口映射、端口转发、UPNP https://www.cnblogs.com/cyrus0w/p/13100332.html

NAT(网络地址转换方法):

允许一个整体机构以一个公用 IP 地址出现在 Internet 上。顾名思义,它是一种把内部私有网络地址(IP 地址)NAT 转发成合法公有网络 IP 地址的技术。随着接入 Internet 的计算机数量的不断猛增,IP 地址资源也就愈加显得捉襟见肘,显然,这样少的 IP 地址根本无法满足网络用户的需求,于是也就产生了 NAT 技术。虽然 NAT 可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的。NAT 不仅能解决 IPv4 地址不足问题,还可以为私网提供了安全保障。 NAT 包括:静态 NAT、动态 NAT、ALG(应用程序级网关技术)、PAT(NAPT,即网络地址端口转换),这里着重解释下 PAT。

DMZ(隔离区):

一般为外网提供服务的服务器(如公司的对外宣传网站)很容易被黑客攻击。所以,如果把对外提供服务的服务器放到企业内网,一旦被攻陷入侵,黑客就可以利用这台机器(肉机)做跳版,通过局域网的漏洞与共享等来攻克其他内网机器。因此有必要建立一个特殊的区域,把这个区域起名为 DMZ,即隔离区,或者叫非军事化区。如果把本文中的“端口映射”看完,你会发现 DMZ 实际就是“多个端口映射组合”。那为什么不把这些对外网提供服务的机器单独弄一条线连到公网呢?因为一般中小企业都仅有一个出口。

DMZ 区要求:

  1. 内网可以访问外网:内网的用户显然需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。
  2. 内网可以访问 DMZ: 此策略是为了方便内网用户使用和管理 DMZ 中的服务器。
  3. 外网不能访问内网:很显然,内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。
  4. 外网可以访问 DMZ: DMZ 中的服务器本身就是要给外界提供服务的,所以外网必须可以访问 DMZ。同时,外网访问 DMZ 需要由防火墙完成对外地址到服务器实际地址的转换。 5.DMZ 不能访问内网:很明显,如果违背此策略,则当入侵者攻陷 DMZ 时,就可以进一步进攻到内网的重要数据。 6.DMZ 不能访问外网:此条策略也有例外,比如 DMZ 中放置邮件服务器时,就需要访问外网,否则将不能正常工作。

应用场景:

因为 DMZ 是将计算机全部公开显露在互联网上,也就是将一台内网机器所有端口全部映射出去,所以适合要映射的服务端口全部在一台内网机器上且数量较多的时候,一般用于企业服务器对外端口较多的场景。

VLAN

VLAN 基础知识 https://zhuanlan.zhihu.com/p/35616289

VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN 可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN 所指的 LAN 特指使用路由器分割的网络——也就是广播域。

DNS 缓存污染

域名服务器缓存污染 https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%BC%93%E5%AD%98%E6%B1%A1%E6%9F%93

机构会对所有经过 GFW 的在 UDP 的 53 端口上的域名查询进行 IDS 入侵检测,一经发现与黑名单关键词相匹配的域名查询请求,会马上伪装成目标域名的解析服务器返回虚假的查询结果。由于通常的域名查询没有任何认证机制,而且域名查询通常基于无连接不可靠的 UDP 协议,查询者只能接受最先到达的格式正确结果,并丢弃之后的结果。

混淆

看穿网络协议混淆 https://www.solidot.org/story?sid=45839

国家级审查者使用深度包检测系统(DPI)去探测和屏蔽翻墙工具的使用。它们是通过协议头或其它应用层网络数据包中的指纹发现此类的翻墙工具。研究人员和活动人士因此相对应的提出了混淆协议方法。协议混淆工具采用的方法包括随机化所有发送的字节,模仿未封锁的协议如 HTTP,通过未屏蔽协议的实现隧道流量。Tor 匿名网络就开发了多种协议混淆,包括 obfsprox(obfsproxy3 和 obfsproxy4)和 meek。目前它们都没有遭到 DPI 的封锁。但审查者是否可以轻易的改变和部署新的 DPI 算法去精确的探测这些协议混淆工具?威斯康星大学的研究人员发表了一篇论文《Seeing through Network-Protocol Obfuscation》(PDF),他们给出的答案是肯定的。研究人员发现,现有的协议混淆机制都能很容易的探测出,使用机器学习对流量进行分类,一个国家级的审查者能达到 99%的准确率。

哪些流量能被代理?

ShadowSocksR(SSR) 功能详细介绍及使用教程 https://www.quchao.net/ShadowsocksR.html

全局模式会开启系统 HTTP 代理,你的所有 HTTP 上网流量将会通过 SSR 代理。 注意:仅能代理 HTTP 流量,即浏览网页的流量——例如浏览器浏览网页,或者某些应用程序的应用内网页(比如 QQ 的群文件、群公告这些就是),或者某些比较奇葩的使用 HTTP 方式进行通信的程序(比如 Steam 版的影之诗)。 如果要代理应用程序,请详见 Windows -SSTap 教程。

SOCKS5

实现 SOCKS5 协议 https://yuerblog.cc/2019/06/09/%E5%AE%9E%E7%8E%B0socks5%E5%8D%8F%E8%AE%AE/

代理为什么需要一个协议?

假设我们是 TCP 通讯。那么 A 首先要 TCP 连接 B,B 接着 TCP 连接 C,这样就形成了一个数据的代理通路,可以双向流通数据了。但是呢,我们 A 不仅要访问 C 啊,还要访问 D、E、F 等等。作为代理的 B,怎么知道 A 要连的是 C 或 E 或 F 的哪个目标呢?因为这个原因,A 和 B 之间必须要有一个协商的过程,其核心目的:A 要告诉 B,希望连接的目标地址是什么。所以,这种 TCP 代理是需要协议的,因此 SOCKS5 就是做这个事情的,可想而知它并不是什么复杂的事情。同时我们也要意识到,SOCKS5 协议其实对应用层协议(例如 HTTP)是无感的,它是 4 层的代理协议。

SSH

彻底搞懂“公钥加密算法 RSA”的工作原理 https://www.bilibili.com/video/BV14y4y1272w?from=search&seid=16919005021128326986 RSA 算法原理(一) http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html 数字签名是什么? http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

模运算是单向函数,即 (m^e) mod n=c,已知 m、e、n 求 c 简单,已知 e、n、c 求 m 很难。 两个质数相乘容易,而将其合数分解很难,即 n=p1*p2,已知 p1、p2 求 n 简单,已知 n 求 p1、p2 困难。

SSH 原理与运用(一):远程登录 http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

SSH 之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

Git

论 git 中使用 https 和 ssh 协议的区别 https://blog.csdn.net/jfkidear/article/details/90376815

git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 git 协议。其中,本地协议由于目前大都是进行远程开发和共享代码所以一般不常用,而 git 协议由于缺乏授权机制且较难架设所以也不常用。最常用的便是 SSH 和 HTTP(S) 协议。git 关联远程仓库可以使用 http 协议或者 ssh 协议。

如何为 Git 设置代理? https://segmentfault.com/q/1010000000118837

Git 目前支持的三种协议 git://ssh://http://,其代理配置各不相同:core.gitproxy 用于 git:// 协议,http.proxy 用于 http:// 协议,ssh:// 协议的代理需要配置 ssh 的 ProxyCommand 参数。

参考资料

计算机网络笔记 Part1 概述 https://blog.csdn.net/weixin_45067603/article/details/106974036

为什么家里要有公网 IP[公网 IP 光猫设置 动态域名解析] https://cloud.tencent.com/developer/article/1483055

墙妈妈 https://www.wallmama.com/

关于 Shadowsocks 的小白常见问题 总结篇 https://doubibackup.com/6r9z6_wi-2.html

推荐一个可以在地图上显示 TraceRoute(路由追踪)路径信息的软件 https://doubibackup.com/cvdqb0y7.html

Shadowsocks 端口已被占用的错误解决办法 https://doubibackup.com/z2a4lk3l-5.html