人生的美妙之处在于迷上一样东西。人生苦短,少做些虚无缥缈的事。
– 刘慈欣-《三体》
自计算机网络诞生以来,经过数十年的发展,计算机的体系已经非常庞大,同时计算机网络也大大促进了人类社会的发展。无数大佬前赴后继,这个苍天大树般的领域依旧生机勃勃,发展态势丝毫没有减缓。
对于我们这种计算机小白来说,如何入门这个领域,是一个值得探索的问题。排除那种不少人使用的学到哪用到哪的散修体系,成体系的方法无非两种。
其一是从下到上,从基础网络物理层的构建一步步延伸到我们生活中比较能感受到的应用层。
其二就是这本书的要讲的内容,采用自顶向下的方法,从熟悉的应用层开始,不断向下拓展。
无论好坏对错,适合的才是最好的。不过确实挺多人从这本书中成功一窥计算机网络的一点玄机,毕竟豆瓣 9.4
的高分呢。
至于我,则是误入歧途,走进了散修体系。
link-layer switch 链路层交换机,也叫二层交换机。
router 路由器,也叫三层交换机。
一个packet从发送端到到接收端(会经过路由器等)的整个路径称为route。
网络协议就是设备间为了有限交流而使用的一套约定俗成的规则,包括格式,发送或者接收到报文所采取的动作。
数据以源 ip
为起始地址,以目标 ip
为最终地址很像邮局寄信。邮局就像路由器,不断发往下一个地址。
traceroute
程序可以跟踪所有源到你计算机的路由。图形化的软件有 pingplotter
。
因特网尽最大努力以实时的方式交付分组,但是不做保证。
丢包的原因是存储空间不够(具体地定位到时哪个模块不够给力),当流量大时最容易出现.
互联网的协议是采用的五层模型:应用层,传输层,网络层,数据链路层,物理层。
因特网最初是基于“一群互相信任的用户连接到一个透明的网络上”这样的模型设计的。所以注定会有很多安全问题(充满的善意构建的体系经不住小小恶意的一击)。
套接字是应用层到传输层的接口,发送端的应用将报文放入套接字,然后交给操作系统去发送。
应用层只能选择两个传输层的协议之一:tcp
和 udp
。
tcp
提供面向连接的服务和可靠传输。
许多防火墙被配置成阻挡(大多数类型的)udp
流量,所以有些 udp
会失败。(还没有深刻理解)
端口号是区分套接字的关键。
udp
通过端口号来对应不同的 socket
,端口号分为源端口和目标端口,大小 0 - 65535
,0 - 1023
已经被特殊用途使用,不能再使用。
只要拥有目的 ip
和目的端口号,就能唯一定位一个 udp
套接字,即使源 ip
或者源端口号不同。源 ip
和源端口号只是为了回复信息。
而 tcp
的套接字是四元组标识,源和目标 ip
(端口。)需要满足四个一样才能定位唯一的套接字。原因在于 tcp
是要握手通信的。
tcp
在握手成功后,服务端都会生成一个新的套接字用于连接。
三态的内容可寻址寄存器 TCAM
,一个 32bit
的 ip
地址可以实现在常数时间内找到对应转发表的内容。
ip
数据流第一段为版本号,版本号不同,路由器的解释也不同
TTL time to live
字段确保不会永远在网络中传播,行为经过一个路由就 -1
,为 0
时就要被丢弃。
DHCP
动态主机配置协议,用于路由器动态学习,ip
与 port
口。
NAT
协议路由器从外部看来就像一个单 ip
的设备,所有从这个路由器出来的都是同样的源 ip
,别的 ip
发往这个路由器内的设备也是用这个 ip
作为目标 ip
。数据进入后会目标 ip
会根据 nat
转换表转换为本地ip
。转换表是用端口号来实现映射的。
数据链路层的差错纠错之所以选择 crc
校验的原因是有使用专用的硬件实现。
mac
的广播地址是 48
个连续 1
组成的字符串。
地址解析协议(ARP
)用于获取目标 ip
的 mac
地址。所以发送 ip
报文时,首先会发 arp
报文获取对应的 mac
才能进行接下来的操作。arp
只在同一个子网中工作。
arp
表:ip
与 mac
的映射关系,也有 ttl
(寿命值)。这个表通常在主机和路由中存在。如果主机 arp
表有对应的映射关系,那么就不需要增加 arp
报文了。
arp
建立于数据链路层,有链路层地址字段,但是也有网络层地址,所以该协议不符合简单的分层协议,属于两者的边界。
和以前的总线拓扑的以太网不同,交换以太网现在应用更广泛。switch
的链路属于交换以太网的范畴。
交换机的任务是将接收到的链路层帧转发出去,交换机对于子网中的主机和路由是透明的,也就是说端口不应该感觉到交换机的存在。
过滤和转发是交换机比较重要的两个功能。
交换机表是很关键的一个东西。
如果一个帧的目的地址和对应端口的映射关系存在,那么这个帧只会转发到目的端口。如果不存在,则转发到所有其他端口(就是常说的泛洪)。
交换机的自学习实现:进入该表的帧,交换机都会学习其源地址和对应端口。存在一个老化时间,老化时间一到,该表项就会被删除。
交换机的优点:消除碰撞,提供不同的介质链路的接入,便于管理,更安全。
一种攻击交换机的方式,交换机毒化。一台设备通过向交换机发送大量伪造的源 mac
地址帧,让交换机的mac
表被填满,那么交换机接收到正常的数据(mac
不在表里)时,就会用泛洪的方式去广播,攻击者从而能够嗅探到本来拿不到的数据。
vlan
起到了隔离数据流的作用。多扩展了四字节VLAN标签的扩展以太网帧帧格式为 802.1.Q
,四个字节包括 2
个字节的标签协议标识符,12bit
的 vlan
字段,3bit
的优先级。