一、对路由表的介绍

1、例如, TCP 模块告知的目标 IP 地址为 192.168.1.21, 那么就对应图 2.18 中的第 6 行, 因为它和 192.168.1 的部分相匹配。

      如果目标 IP 地址为 10.10.1.166, 那么就和 10.10.1 的部分相匹配, 所以对应第 3 行。 以此类推, 我们需要找到与 IP 地址左边部分相匹配的条目

2、 右起第 2 列, 也就是Interface 列, 表示网卡等网络接口, 这些网络接口可以将包发送给通信对象【判断出应该使用哪块网卡来发送包 】。

3、 右起第 3 列, 即 Gateway 列表示下一个路由器的 IP 地址【Gateway(网关)在 TCP/IP 的世界里就是路由器的意思 】, 将包发给这个 IP 地址,该地址对应的路由器 A 就会将包转发到目标地址

4、 如果 Gateway 和 Interface 列的 IP 地址相同,就表示不需要路由器进行转发,可以直接将包发给接收方的 IP 地址

5、目标地址和子网掩码 A 都是 0.0.0.0, 这表示默认网关, 如果其他所有条目都无法匹配, 就会自动匹配这一行

网络是怎样连接的 读书笔记_端口号

 

如果 Gateway 和 Interface 列的 IP 地址相同,就表示不需要路由器进行转发,可以直接将包发给接收方的 IP 地址

 二、网卡的介绍

1、不同厂商和型号的网卡在结构上有所不同,因此网卡驱动程序也是厂商开发的专用程序 。主要厂商的网卡驱动程序已经内置在操作系统中了
2、网卡的 ROM 中保存着全世界唯一的 MAC 地址, 这是在生产网卡时 。写入的, 将这个值读出之后就可以对 MAC 模块进行设置, MAC 模块就知道自己对应的 MAC 地址了。

【网卡中保存的 MAC 地址会由网卡驱动程序读取并分配给 MAC 模块】

3、也有一些特殊的方法, 比如从命令或者配置文件中读取 MAC 地址并分配给 MAC 模块 。 这种情况下, 网卡会忽略ROM 中的 MAC 地址

三、将数字信息转换为电信号的速率就是网络的传输速率, 例如每秒将 10 Mbit 的数字信息转换为电信号发送出去, 则速率就是 10 Mbit/s
四、 交换机的介绍

1、会自行更新或删除地址表中的记录, 不需要手动维护 。当地址表的内容出现异常时, 只要重启一下交换机就可以重置地址表, 也不需要手动进行维护
2、当交换机发现一个包要发回到原端口时, 就会直接丢弃这个包
3、交换机无法判断应该把包转发到哪个端口, 只能将包转发到除了源端口之外的所有端口上, 无论该设备连接在哪个端口上都能收到这个包。

发送了包之后目标设备会作出响应, 只要返回了响应包, 交换机就可以将它的地址写入地址表, 下次也就不需要把包发到所有端口了。
4、全双工模式是交换机特有的工作模式, 它可以同时进行发送和接收操作, 集线器不具备这样的特性

五、以太网设备的网线接口周围有一个绿色的 LED 指示灯, 它表示是否检测到正常的脉冲信号。 如果绿灯亮, 说明 PHY(MAU)模块以及网线连接正常
六、路由器介绍
1、路由器的端口具有 MAC 地址 , 因此它就能够成为以太网的发送方和接收方 。 端口还具有 IP 地址, 从这个意义上来说, 它和计算机的网卡是一样的。

【路由器的各个端口都具有 MAC 地址和 IP 地址 】

这一点和交换机是不同的, 交换机只是将进来的包转发出去而已, 它自己并不会成为发送方或者接收方

交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的, 而路由器则是根据 IP 头部中的 IP 地址来判断的
2、交换机在地址表中只匹配完全一致的记录, 而路由器则会忽略主机号部分, 只匹配网络号部分。
3、我们也可以将某台具体计算机的地址写入路由表中, 这时的子网掩码为 255.255.255.255
4、路由表的子网掩码列只表示在匹配网络包目标地址时需要对比的比特数量

5、路由器的端口都具有 MAC 地址,只接收与自身地址匹配的包,遇到不匹配的包则直接丢弃

6、例如, 图 3.13 的第 3行, 子网掩码列为 255.255.255.0, 就表示需要匹配从左起 24 个比特。 网络
包的接收方 IP 地址和路由表中的目标地址左起 24 个比特的内容都是192.168.1, 因此两者是匹配的, 该行记录就是候选转发目标之一
7、路由器首先寻找网络号比特数最长的一条记录 C。 网络号比特数越长, 说明主机号比特数越短, 也就意味着该子网
内可分配的主机数量越少, 即子网中可能存在的主机数量越少, 这一规则的目的是尽量缩小范围
8、跃点计数越小说明该路由越近, 因此应选择跃点计数较小的记录。
9、如果在路由表中无法找到匹配的记录, 路由器会丢弃这个包 。遇到不知道应该转发到哪里的包, 交换机可以将包发送到所有的端口上。

子网掩码 0.0.0.0 的意思是网络包接收方 IP 地址和路由表目标地址的匹配中需要匹配的比特数为 0。只要将子网掩码设置为 0.0.0.0, 那么无论任何地址都能匹配到这一条记录, 这
样就不会发生不知道要转发到哪里的问题了。

路由表中子网掩码为 0.0.0.0 的记录表示“默认路由”。

10、最大包长度是由端口类型决定的, 用这个最大长度减掉头部的长度就是 MTU
11、

网络是怎样连接的 读书笔记_端口号_02

12、实际的路由器有内置交换机功能的, 比如用于连接互联网的家用路由器就属于这一种
13、路由器的附加功能 :地址转换和包过滤
14、地址转换设备会随机选择一个空闲的端口【在对外只能使用一个公有地址的情况下,可以用不同的端口号来区别内网中的不同终端 】

网络是怎样连接的 读书笔记_端口号_03

当数据收发结束, 进入断开阶段, 访问互联网的操作全部完成后, 对应表中的记录就会被删除
15、包过滤就 是在对包进行转发时, 根据 MAC 头部、 IP 头部、 TCP 头部的内容

==========第5章

1、除了在服务器端部署缓存服务器之外【反向代理】, 在客户端也可以部署缓存服务器【正向代理】, 缓存服务器有各种用法
2、防火墙的基本思路刚才已经介绍过了, 即只允许发往特定服务器中的特定应用程序的包通过, 然后屏蔽其他的包

1)当我们要限定某个应用程序时, 可以在判断条件中加上 TCP 头部或者UDP 头部中的端口号
2)TCP 在执行连接操作时需要收发 3 个包 B,其中第一个包 的 TCP 控制位中 SYN 为 1, 而 ACK 为 0。 其他的包中这些值都不同, 因此只要按照这个规则就能够过滤到 TCP 连接的第一个包

可以通过阻止TCP第一个包发送出去,从而实现web服务器不能访问互联网

3)通过接收方 IP 地址、 发送方 IP 地址、 接收方端口号、 发送方端口号、TCP 控制位这些条件, 我们可以判断出通信的起点和终点、 应用程序种类, 以及访问的方向 

4)UDP 与 TCP 不同, 它没有连接操作, 因此无法像 TCP 一样根据控制位来判断访问方向
3、包过滤方式的防火墙不仅可以允许或者阻止网络包的通过, 还具备地址转换功能
当使用地址转换时, 默认状态下是无法从互联网访问公司内网的, 因此我们不需要再设置一条包过滤规则来阻止从互联网访问公司内网
4、在防火墙允许包通过之后, 就没有什么特别的机制了, 只不过当判断规则比较复杂时, 通过路由器的命令难以维护这些规则, 而且对阻止的包进行记录对于路由器来说负
担也比较大, 因此才出现了 防火墙
5、包过滤方式的防火墙可根据接收方 IP 地址、发送方 IP 地址、接收方端口号、发送方端口号、控制位等信息来判断是否允许某个包通过

负载均衡

1、使用负载均衡器时, 首先要用负载均衡器的 IP 地址代替 Web 服务器的实际地址注册到 DNS 服务器上。
2、当操作跨多个页面时, 则不考虑 Web 服务器的负载, 而是必须将请求发送到同一台 Web 服务器上
代理:一种介于客户端与 Web 服务器之间,对访问操作进行中转的机制

==========第6章
由于可以通过端口号来区分服务器上的应用程序,所以一台服务器上可以同时运行多个服务器程序,不仅限于 Web 和邮件。

用 bind 将端口号写入套接字中(图 6.2(2-1))。 在客户端发起连接的操作中, 需要指定服务器端的端口号, 这个端口号也就是在这一步设置的。
通过客户端 IP 地址、 客户端端口号、 服务器 IP 地址、 服务器端口号这 4 种信息可以确定某个套接字

在服务器端, 可能有多个已连接的套接字对应同一个端口号, 因此仅根据接收方端口号无法找到特定的套接字。 这时我们需要根据 IP 头部中的发送方 IP 地址和接
收方 IP 地址, 以及 TCP 头部中的接收方端口号和发送方端口号共 4 种信息, 找到上述 4 种信息全部匹配的套接字


无论哪种情况, 当断开操作完成后, 套接字会在经过一段时间后被删除

==========第三章
1、交换机是基于以太网规格工作的设备, 而路由器是基于 IP 工作的

2、我们家里用的路由器已经集成了集线器和交换机的功能

3、网卡负责将包转换成电信号
4、网线越长, 信号衰减就越严重
5、“双绞”是为了抑制噪声
6、集线器将信号发往所有线路 (集线器只是原封不动地将信号广播出去 )
7、交换机的设计是将网络包原样转发到目的地 【交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口 】

交换机会自行更新或删除地址表中的记录, 不需要手动维护
当地址表的内容出现异常时, 只要重启一下交换机就可以重置地址表, 也不需要手动进行维护
8、当交换机发现一个包要发回到原端口时, 就会直接丢弃这个包
9、地址表中找不到指定的 MAC 地址 时,交换机无法判断应该把包转发到哪个端口, 只能将包转发到除了源端口之外的所有端
口上, 无论该设备连接在哪个端口上都能收到这个包。 这样做不会产生什么问题。发送了包之后目标设备会作出响应, 只要返回
了响应包, 交换机就可以将它的地址写入地址表, 下次也就不需要把包发到所有端口了
10、全双工模式是交换机特有的工作模式, 它可以同时进行发送和接收操作, 集线器不具备这样的特性 【用集线器可能会发生信号碰撞,所以集线器不能全双工】
11、交换机只将包转发到具有特定 MAC 地址的设备连接的端口, 其他端口都是空闲的 其他端口都处于空闲状态, 这些端口可以传输其他的包, 因
此交换机可以同时转发多个包

集线器会将输入的信号广播到所有的端口, 如果同时输入多个信号就会发生碰撞, 无法同时传输多路信号, 因此从设备整体的转发能
力来看, 交换机要高于集线器
12、路由器的端口具有 MAC 地址 , 因此它就能够成为以太网的发送方和接收方,端口还具有 IP 地址, 从这个意义上来说, 它和计算机的网卡是一样
的。 交换机只是将进来的包转发出去而已, 它自己并不会成为发送方或者接收方
13、交换机是通过 MAC 头部中的接收方 MAC 地址来判断转发目标的, 而路由器则是根据 IP 头部中的 IP 地址来判断的
14、交换机在地址表中只匹配完全一致的记录, 而路由器则会忽略主机号部分, 只匹配网络号部分
15、
============第二章
1、套接字的实体就是通信控制信息
2、在 Windows 中可以用 netstat 命令显示套接字内容(图 2.2)。图中每一行相当于一个套接字, 当创建套接字时, 就会在这里增加一行新
的控制信息

网络是怎样连接的 读书笔记_端口号_04

网络是怎样连接的 读书笔记_端口号_05

 

本地 IP 地址和远程 IP 地址都是 0.0.0.0, 这表示通信还没开始, IP 地址不确定
3、TCP 会在尝试几次重传无效之后强制结束通信, 并向应用程序报错
4、所谓滑动窗口, 就是在发送一个包之后, 不等待 ACK 号返回, 而是直接发送后续的一系列包。 这样一来, 等待 ACK 号的这段时间就被有效利用起来了

接收方需要告诉发送方自己最多能接收多少数据,然后发送方根据这个值对数据发送操作进行控制, 这就是滑动窗口方式的基本思路
能够接收的最大数据量称为窗口大小
网络是怎样连接的 读书笔记_服务器_06

网络是怎样连接的 读书笔记_服务器_07

5、套接字并不会立即被删除, 而是会等待一段时间之后再被删除。 (套接字被删除, 那么套接字中保存的控制信息也就跟着消失了, 套接字对应的端口号就会被释放出来 )
6、路由器中有一张 IP 协议的表, 可根据这张表以及 IP 头部中记录的目的地信息查出接下来应该发
往哪个路由器。 为了将包发到下一个路由器, 我们还需要查出下一个路由器的 MAC 地址, 并记录到 MAC 头部中, 大家可以理解为改写了 MAC 头部
7、在这些无需重发数据, 或者是重发了也没什么意义的情况下, 使用UDP 发送数据的效率会更高

 ==========第一章

1、浏览器是一个具备多种客户端功能的综合性客户端软件, 因此它需要一些东西来判断应该使用其中哪种功能来访问相应的数据, 而各种不同的
URL 就是用来干这个的, 比如访问 Web 服务器时用“http:”, 而访问 FTP服务器时用“ftp:”。
2、GET 方法能够发送的数据只有几百个字节,如果表单中的数据超过这一长度,则必须使用 POST 方法来发送。
网络是怎样连接的 读书笔记_端口号_08

网络是怎样连接的 读书笔记_套接字_09

网络是怎样连接的 读书笔记_套接字_10

网络是怎样连接的 读书笔记_端口号_11

 

3、由于每条请求消息中只能写 1 个 URI, 所以每次只能获取 1 个文件,如果需要获取多个文件, 必须对每个文件单独发送 1 条请求。 比如 1 个
网页中包含 3 张图片, 那么获取网页加上获取图片, 一共需要向 Web 服务器发送 4 条请求
4、在域名中, 越靠右的位置表示其层级越高, 比如 www.lab.glasscom.com 这个域名 大概就是“com 事业集团 glasscom 部 lab 科的 www”
这样。 其中, 相当于一个层级的部分称为域。 因此, com 域的下一层是glasscom 域, 再下一层是 lab 域, 再下面才是 www 这个名字
5、那就是将根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。 这样一来, 任何 DNS 服务器就都可
以找到并访问根域 DNS 服务器了。 因此, 客户端只要能够找到任意一台DNS 服务器, 就可以通过它找到根域 DNS 服务器, 然后再一路顺藤摸瓜
找到位于下层的某台目标 DNS 服务器 。
6、分配给根域 DNS 服务器的 IP 地址在全世界仅有 13 个 , 而且这些地址几乎不发生变化
7、根域DNS 服务器的相关信息已经包含在 DNS 服务器程序的配置文件中了, 因此只要安装了 DNS 服务器程序, 这些信息也就被自动配置好了。
8、套接字创建完成后, 协议栈会返回一个描述符, 应用程序会将收到的描述符存放在内存中。 描述符是用来识别不同的套接字的,
9、客户端在创建套接字时, 协议栈会为这个套接字随便分配一个端口号 。 接下来, 当协议栈执行连接操作时, 会将这个随
便分配的端口号通知给服务器
10、