【好书推荐】计算机网络:自顶向下方法(第七版)

news2025/2/26 23:16:42

人生的美妙之处在于迷上一样东西。人生苦短,少做些虚无缥缈的事。

– 刘慈欣-《三体》

image-20221127002257598

推荐理由

自计算机网络诞生以来,经过数十年的发展,计算机的体系已经非常庞大,同时计算机网络也大大促进了人类社会的发展。无数大佬前赴后继,这个苍天大树般的领域依旧生机勃勃,发展态势丝毫没有减缓。

对于我们这种计算机小白来说,如何入门这个领域,是一个值得探索的问题。排除那种不少人使用的学到哪用到哪的散修体系,成体系的方法无非两种。

其一是从下到上,从基础网络物理层的构建一步步延伸到我们生活中比较能感受到的应用层。

其二就是这本书的要讲的内容,采用自顶向下的方法,从熟悉的应用层开始,不断向下拓展。

无论好坏对错,适合的才是最好的。不过确实挺多人从这本书中成功一窥计算机网络的一点玄机,毕竟豆瓣 9.4 的高分呢。

至于我,则是误入歧途,走进了散修体系。

笔记

  • link-layer switch 链路层交换机,也叫二层交换机。

  • router 路由器,也叫三层交换机。

  • 一个packet从发送端到到接收端(会经过路由器等)的整个路径称为route。

  • 网络协议就是设备间为了有限交流而使用的一套约定俗成的规则,包括格式,发送或者接收到报文所采取的动作。

  • 数据以源 ip 为起始地址,以目标 ip 为最终地址很像邮局寄信。邮局就像路由器,不断发往下一个地址。

  • traceroute 程序可以跟踪所有源到你计算机的路由。图形化的软件有 pingplotter

  • 因特网尽最大努力以实时的方式交付分组,但是不做保证。

  • 丢包的原因是存储空间不够(具体地定位到时哪个模块不够给力),当流量大时最容易出现.

  • 互联网的协议是采用的五层模型:应用层,传输层,网络层,数据链路层,物理层。

  • 因特网最初是基于“一群互相信任的用户连接到一个透明的网络上”这样的模型设计的。所以注定会有很多安全问题(充满的善意构建的体系经不住小小恶意的一击)。

  • 套接字是应用层到传输层的接口,发送端的应用将报文放入套接字,然后交给操作系统去发送。

  • 应用层只能选择两个传输层的协议之一:tcpudp

  • tcp 提供面向连接的服务和可靠传输。

  • 许多防火墙被配置成阻挡(大多数类型的)udp 流量,所以有些 udp 会失败。(还没有深刻理解)

  • 端口号是区分套接字的关键。

  • udp 通过端口号来对应不同的 socket,端口号分为源端口和目标端口,大小 0 - 655350 - 1023 已经被特殊用途使用,不能再使用。

  • 只要拥有目的 ip 和目的端口号,就能唯一定位一个 udp 套接字,即使源 ip 或者源端口号不同。源 ip 和源端口号只是为了回复信息。
    tcp 的套接字是四元组标识,源和目标 ip(端口。)需要满足四个一样才能定位唯一的套接字。原因在于 tcp 是要握手通信的。

  • tcp 在握手成功后,服务端都会生成一个新的套接字用于连接。

  • 三态的内容可寻址寄存器 TCAM,一个 32bitip 地址可以实现在常数时间内找到对应转发表的内容。

  • ip 数据流第一段为版本号,版本号不同,路由器的解释也不同

  • TTL time to live字段确保不会永远在网络中传播,行为经过一个路由就 -1,为 0 时就要被丢弃。

  • DHCP 动态主机配置协议,用于路由器动态学习,ipport 口。

  • NAT 协议路由器从外部看来就像一个单 ip 的设备,所有从这个路由器出来的都是同样的源 ip,别的 ip 发往这个路由器内的设备也是用这个 ip 作为目标 ip。数据进入后会目标 ip 会根据 nat 转换表转换为本地ip。转换表是用端口号来实现映射的。

  • 数据链路层的差错纠错之所以选择 crc 校验的原因是有使用专用的硬件实现。

  • mac 的广播地址是 48 个连续 1 组成的字符串。

  • 地址解析协议(ARP)用于获取目标 ipmac 地址。所以发送 ip 报文时,首先会发 arp 报文获取对应的 mac 才能进行接下来的操作。arp 只在同一个子网中工作。

  • arp 表:ipmac 的映射关系,也有 ttl(寿命值)。这个表通常在主机和路由中存在。如果主机 arp表有对应的映射关系,那么就不需要增加 arp 报文了。

  • arp建立于数据链路层,有链路层地址字段,但是也有网络层地址,所以该协议不符合简单的分层协议,属于两者的边界。

  • 和以前的总线拓扑的以太网不同,交换以太网现在应用更广泛。switch 的链路属于交换以太网的范畴。

  • 交换机的任务是将接收到的链路层帧转发出去,交换机对于子网中的主机和路由是透明的,也就是说端口不应该感觉到交换机的存在。

  • 过滤和转发是交换机比较重要的两个功能。

  • 交换机表是很关键的一个东西。

  • 如果一个帧的目的地址和对应端口的映射关系存在,那么这个帧只会转发到目的端口。如果不存在,则转发到所有其他端口(就是常说的泛洪)。

  • 交换机的自学习实现:进入该表的帧,交换机都会学习其源地址和对应端口。存在一个老化时间,老化时间一到,该表项就会被删除。

  • 交换机的优点:消除碰撞,提供不同的介质链路的接入,便于管理,更安全。

  • 一种攻击交换机的方式,交换机毒化。一台设备通过向交换机发送大量伪造的源 mac 地址帧,让交换机的mac 表被填满,那么交换机接收到正常的数据(mac不在表里)时,就会用泛洪的方式去广播,攻击者从而能够嗅探到本来拿不到的数据。

  • vlan 起到了隔离数据流的作用。多扩展了四字节VLAN标签的扩展以太网帧帧格式为 802.1.Q,四个字节包括 2 个字节的标签协议标识符,12bitvlan 字段,3bit 的优先级。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python量化】将Informer用于股价预测

写在前面Informer模型来自发表于AAAI21的一篇best paper《Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting》。Informer模型针对Transformer存在的一系列问题,如二次时间复杂度、高内存使用率以及Encoder-Decoder的结构限制&…

后台管理不可忽视,华为云会议最新支持管理员分权分域

如今,跨地域, 跨组织,需要随时随地接入的远程沟通协作变得愈加频繁,众多企业开始纷纷建设符合自身需求的智能会议室。在会议系统的众多能力中,后台管理,这项常常被C端用户忽略的能力,B端的企业却…

真的够可以的,基于Netty实现了RPC框架

RPC全称Remote Procedure Call,即远程过程调用,对于调用者无感知这是一个远程调用功能。目前流行的开源RPC 框架有阿里的Dubbo、Google 的 gRPC、Twitter 的Finagle 等。本次RPC框架的设计主要参考的是阿里的Dubbo,这里Netty 基本上是作为架构…

1. Spring Boot 3 入门学习教程之开发第一个 Spring Boot 应用程序

Spring Boot 3 入门学习教程之开发第一个 Spring Boot 应用程序0. 前言1. Spring Boot 介绍2. 系统要求2.1 Servlet容器2.2 GraalVM Native Image(GraalVM 原生镜像)3. 安装Spring Boot 开发环境3.1 安装JDK3.2 安装Spring Boot构建工具3.2.1 方式一&…

C++标准库分析总结(九)——<仿函数/函数对象>

目录 1.functor仿函数简介 2 仿函数的分类 3 仿函数使用 4 仿函数可适配的条件 1.functor仿函数简介 仿函数是STL中最简单的部分,存在的本质就是为STL算法部分服务的,一般不单独使用。仿函数(functors)又称为函数对象&…

【InnoDB Cluster】修改已有集群实例名称及成员实例选项

【InnoDB Cluster】修改已有集群实例名称,成员实例名称和选项 文章目录【InnoDB Cluster】修改已有集群实例名称,成员实例名称和选项修改名称修改已有集群实例名称修改已有集群实例的成员实例名称修改成员服务器操作系统的主机名直接修改元数据库中的表使…

力扣(LeetCode)88. 合并两个有序数组(C++)

朴素思想 朴素思想&#xff0c;开第三个数组&#xff0c;对 nums1nums1nums1 和 nums2nums2nums2 进行二路归并。 class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {vector<int> nums3(mn);int i 0,j …

2.2 Linux启动初始化文件系统

为了方便了解和调试我们的Linux系统,我们需要将proc,debugfs,tmp等挂载起来,否则我们我发了解系统的进程,负载等信息,如下是未进行任何挂载时,我们无法通过ps等方法查看系统任何进程信息: 一,挂载proc fs proc是一个伪文件系统,(伪文件系统只存在内存中,而不占用存…

Node.js 入门教程 2 Node.js 简史

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Node.js 入门教程2 Node.js 简史2.1 一点历史2.2 20092.3 20102.4 20112.5 20122.6 20132.7 20142.8 20152.9 20162.10 20172.11 20182.12 2…

聊一聊微服务常见配置中心工作原理

0. 环境 nacos版本&#xff1a;1.4.1 Spring Cloud : 2020.0.2 Spring Boot &#xff1a;2.4.4 Spring Cloud alibaba: 2.2.5.RELEASE Spring Cloud openFeign 2.2.2.RELEASE 测试代码&#xff1a;github.com/hsfxuebao/s… 1. 配置中心基础 1.1 为什么要用配置中心&…

Js逆向教程-15滑块流程 极验

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程-15滑块流程 极验 一、滑块是什么&#xff1f; 区分是否是机器人。根据滑动轨迹区分是否是人操作的。 滑块肯定有滑动条 …

亚马逊云科技持续创新、领势而行,re:Invent颠覆想象

当一行行代码成为托起数字社会的基础架构&#xff0c;社会发展开始面临真正意义上的变革与重塑。作为云计算领域的探路者与引领者&#xff0c;亚马逊云科技持续创新、领势而行&#xff0c;正不断塑造并颠覆着大众关于云计算未来的想象。 2006年 开端 2006年&#xff0c;亚马逊…

【单片机基础】I2C通信-基于STC89C52RC

文章目录1、IIC总线结构2、IIC总线传输协议3、完成工程代码1、IIC总线结构 IIC总线是philips公司在八十年代初推出的一种串行、半双工总线。主要用于近距离、低速的芯片之间通信&#xff1b;IIC总线有两根双向的信号线&#xff0c;一根数据线SDA用于收发数据一根时钟线SCL用于…

Mac 使用paralles 从零搭建hadoop集群

目录 1. 虚机的安装与配置 1.1 安装parallels 1.2 安装fedora系统 1.3 fedora的配置 1.3.1 内存和硬盘配置 1.3.2 网络配置 1.3.3 共享文件夹 1.4 虚拟机克隆 与 加载 2. 免密登录 2.1 分别查看master&#xff0c; slave01&#xff0c;slave02 的ip 2.2 查看各虚机的…

关于mpy电压采集模块的那些事儿(ads1256 ads8688 ad7606)

先来个人生碎碎念&#xff0c;越狱第三次失败了&#xff0c;而且第四次也可能失败&#xff0c;没错就是这么尴尬&#xff0c;绝对越狱的事件还有917天&#xff0c;其实比较麻木了&#xff0c;越狱成功与否都无所谓了&#xff0c;其实现在出去&#xff0c;外头的疫情&#xff0c…

【学生网页设计作业源码】基于HTML+CSS+JavaScript简单的大学生书店(13个页面) 二手书店电子商务网站模板源码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

常见的数据结构基本介绍

文章目录常见的数据结构介绍栈和队列的介绍数组数据结构链表数据结构二叉树和二叉查找树平衡二叉树红黑树结构常见的数据结构介绍 数据结构是计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。 通常情况下&#xff0c;精心选择的数据结构可以带来更…

应用ceph文件系统存储(ceph-13.2.10)

记录&#xff1a;333 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;部署ceph-13.2.10集群。应用ceph文件系统(ceph file system)&#xff1b;主要是创建ceph文件系统、客户端挂载ceph文件系统等操作。 版本&#xff1a; 操作系统&#xff1a;CentOS 7.9 ceph版本&am…

JS获取音频的总时长,解决audio.duration 为 NaN || Infinity 问题

目录一、需求分析二、发现问题1.使用浏览器内置播放器<audio>无法显示时长2.获取总时长为 NaN || Infinity三、疑惑点四、解决方案一、需求分析 后端的接口中包含音频链接&#xff0c;前端需要自定义一个播放器播放音频。 二、发现问题 1.使用浏览器内置播放器<audi…

JPA 中使用 @OneToMany 、@ManyToOne 等关系映射注解

JPA 做 ORM(Object Relational Mapping&#xff0c;对象关系映射)时&#xff0c;为了开发效率&#xff0c;通常会在实体类上用 hibernate 的关系关联注解。 包括&#xff1a;OneToOne、 OneToMany 、ManyToOne 、ManyToMany 、JoinTable、以及 JoinColumn 以及 OrderBy&#xf…