鸟哥的 Linux 私房菜(服务器) 第二章 网络基础概念

鸟哥的 Linux 私房菜(服务器)

@(学习笔记)[Linux|Markdown|笔记]

[TOC]


第二章 网络基础概念

2.1 网络是个什么玩意儿

OSI 七层协定

分层 负责内容
Layer 1
物理层Physical Layer
由于网络媒体只能传送 0 与 1 这种位串,因此物理层必须定义所使用的媒体设备之电压与讯号等, 同时还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串。
Layer 2
数据链结层Data-Link Layer
这一层是比较特殊的一个阶层,因为底下是实体的定义,而上层则是软件封装的定义。因此第二层又分两个子层在进行数据的转换动作。 在偏硬件媒体部分,主要负责的是 MAC (Media Access Control) ,我们称这个数据报裹为 MAC 讯框 (frame), MAC 是网络媒体所能处理的主要数据报裹,这也是最终被物理层编码成位串的数据。MAC 必须要经由通讯协议来取得媒体的使用权, 目前最常使用的则是 IEEE 802.3 的以太网络协议。详细的 MAC 与以太网络请参考下节说明。
至于偏向软件的部分则是由逻辑链接层 (logical link control, LLC) 所控制,主要在多任务处理来自上层的封包数据 (packet) 并转成 MAC 的格式, 负责的工作包括讯息交换、流量控制、失误问题的处理等等。
Layer 3
网络层 Network Layer
这一层是我们最感兴趣的啰,因为我们提及的 IP (Internet Protocol) 就是在这一层定义的。 同时也定义出计算机之间的联机建立、终止与维持等,数据封包的传输路径选择等等,因此这个层级当中最重要的除了 IP 之外,就是封包能否到达目的地的路由 (route) 概念了!
Layer 4
传送层Transport Layer
这一个分层定义了发送端与接收端的联机技术(如 TCP, UDP 技术), 同时包括该技术的封包格式,数据封包的传送、流程的控制、传输过程的侦测检查与复原重新传送等等, 以确保各个数据封包可以正确无误的到达目的端。
Layer 5
会谈层Session Layer
在这个层级当中主要定义了两个地址之间的联机信道之连接与挂断,此外,亦可建立应用程序之对谈、 提供其他加强型服务如网络管理、签到签退、对谈之控制等等。如果说传送层是在判断资料封包是否可以正确的到达目标, 那么会谈层则是在确定网络服务建立联机的确认。
Layer 6
表现层Presentation Layer
我们在应用程序上面所制作出来的数据格式不一定符合网络传输的标准编码格式的! 所以,在这个层级当中,主要的动作就是:将来自本地端应用程序的数据格式转换(或者是重新编码)成为网络的标准格式, 然后再交给底下传送层等的协议来进行处理。所以,在这个层级上面主要定义的是网络服务(或程序)之间的数据格式的转换, 包括数据的加解密也是在这个分层上面处理。
Layer 7
应用层Application Layer
应用层本身并不属于应用程序所有,而是在定义应用程序如何进入此层的沟通接口,以将数据接收或传送给应用程序,最终展示给用户。

TCP/IP 协议

那 TCP/IP 是如何运作的呢?我们就拿妳常常连上的 Yahoo 入口网站来做个说明好了,整个联机的状态可以这样看:

  1. 应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter]。此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层;
  2. 应用层:由应用层提供的 HTTP 通讯协议,将来自浏览器的数据报起来,并给予一个应用层表头,再向传送层丢去;
    传送层:由于 HTTP 为可靠联机,因此将该数据丢入 TCP 封包内,并给予一个 TCP 封包的表头,向网络层丢去;
  3. 网络层:将 TCP 包裹包进 IP 封包内,再给予一个 IP 表头 (主要就是来源与目标的 IP 啰),向链结层丢去;
  4. 链结层:如果使用以太网络时,此时 IP 会依据 CSMA/CD 的标准,包裹到 MAC 讯框中,并给予 MAC 表头,再转成位串后, 利用传输媒体传送到远程主机上。

2.2 TCP/IP 的链结层相关协议

广域网使用的设备

  • 传统电话拨接:透过 ppp 协议
  • 整合服务数字网络 (Integrated Services Digital Network, ISDN)
  • 非对称数位用路回路 (Asymmetric Digital Subscriber Line, ADSL):透过 pppoe 协定
  • 电缆调制解调器 (Cable modem)

局域网络使用的设备-以太网络

由于网络的传输信息就是 0 与 1 ,因此,数据传输的单位为每秒多少 bit , 亦即是 M bits/second, Mbps 的意思。

我们看到的网络提供者 (Internet Services Provider, ISP) 所宣称他们的 ADSL 传输速度可以达到 下行/上行 2Mbps/128Kbps (Kbits per second) 时,那个 Kb 指的可不是 bytes 而是 bits 喔!所以 2M/128K 在实际的档案大小传输速度上面,最大理论的传输为 256KBps/16 KBps(KBytes per second),所以正常下载的速度约在每秒 100~200 KBytes 之间吶! 同样的道理,在网络卡或者是一些网络媒体的广告上面,他们都会宣称自己的产品可以自动辨识传输速度为 10/100 Mbps ( Mega-bits per second),呵呵!该数值还是得再除以 8 才是我们一般常用的档案容量计算的单位 bytes 喔

名称 速度 网络线等级
以太网络(Ethernet) 10Mbps -
高速以太网络(Fast Ethernet) 100Mbps CAT 5
超高速以太网络(Gigabit Ethernet) 1000Mbps CAT 5e/CAT 6

以太网络的传输协议:CSMA/CD

MAC (Media Access Control)

MAC 的封装格式

  • 以太网络的 MAC 讯框

MTU 最大传输单位

通过上面 MAC 封装的定义,现在我们知道标准以太网络讯框所能传送的数据量最大可以到达 1500 bytes , 这个数值就被我们称为 MTU (Maximum Transmission Unit, 最大传输单位)。

集线器、交换器与相关机制

交换器与集线器最大的差异,在于交换器内有一个特别的内存, 这个内存可以记录每个 switch port 与其连接的 PC 的 MAC 地址,所以,当来自 switch 两端的 PC 要互传数据时,每个讯框将直接透过交换器的内存数据而传送到目标主机上! 所以 switch 不是共享媒体,且 switch 的每个埠口 (port) 都具有独立的带宽喔!

switch 已经克服了封包碰撞的问题,因为他有个 switch port 对应 MAC 的相关功能

2.3 TCP/IP 的网络层相关封包与数据

IP 封包的封装

IP 地址的组成与分级

192.168.0.0~192.168.0.255 这个 Class C 的说明:
11000000.10101000.00000000.00000000
11000000.10101000.00000000.11111111
|----------Net_ID---------|-host--|
- 在上面的范例当中,前面三组数字 (192.168.0) 就是网域号码,最后面一组数字则称为主机号码。 至于同一个网域的定义是『在同一个物理网段内,主机的 IP 具有相同的 Net_ID ,并且具有独特的 Host_ID』,那么这些 IP 群就是同一个网域内的 IP 网段啦!

  • Net_ID 与 Host_ID 的限制:
    在同一个网段内,Net_ID 是不变的,而 Host_ID 则是不可重复,此外,Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 ,因为全为 0 表示整个网段的地址 (Network IP),而全为 1 则表示为广播的地址 (Broadcast IP)。例如上面的例子当中,192.168.0.0 (Host_ID 全部为 0)以及 192.168.0.255 (Host_ID 全部为 1) 不可用来作为网段内主机的 IP 设定,也就是说,这个网段内可用来设定主机的 IP 是由 192.168.0.1 到 192.168.0.254
  • 设定不同区网在同物理网段的情况
    在同一个物理网段之内,如果两部主机设定成不同的 IP 网段,则由于广播地址的不同,导致无法透过广播的方式来进行联机。 此时得要透过路由器 (router) 来进行沟通才能将两个网域连结在一起。
  • IP 的分级
    五种分级在十进制的表示:

    Class A : 0.xx.xx.xx ~ 127.xx.xx.xx
    Class B : 128.xx.xx.xx ~ 191.xx.xx.xx
    Class C : 192.xx.xx.xx ~ 223.xx.xx.xx
    Class D : 224.xx.xx.xx ~ 239.xx.xx.xx
    Class E : 240.xx.xx.xx ~ 255.xx.xx.xx

IP 的种类与取得方式

  • 私有 IP (Private IP)

    Class A:10.0.0.0 - 10.255.255.255
    Class B:172.16.0.0 - 172.31.255.255
    Class C:192.168.0.0 - 192.168.255.255

  • 特殊的 loopback IP 网段

    这个网段在 127.0.0.0/8 这个 Class A,而且默认的主机 (localhost) 的 IP 是 127.0.0.1

  • IP 的取得方式
    • 直接手动设定(static)
    • 透过拨接取得
    • 自动取得网络参数 (DHCP)

2.3.4 Netmask, 子网与 CIDR (Classless Interdomain Routing)

Netmask, 或称为 Subnet mask (子网掩码)

  • Netmask: 255.255.255.0 <==网域定义中,最重要的参数
  • Network: 192.168.0.0 <==第一个 IP
  • Broadcast: 192.168.0.255 <==最后一个 IP
    可用以设定成为主机的 IP 数:
    192.168.0.1 ~ 192.168.0.254

子网切分

原本的 C Class 的 Net_ID 与 Host_ID 的分别
11000000.10101000.00000000.00000000 Network: 192.168.0.0
11000000.10101000.00000000.11111111 Broadcast: 192.168.0.255
|----------Net_ID---------|-host--|

切成两个子网之后的 Net_ID 与 Host_ID 为何?
11000000.10101000.00000000.0 0000000 多了一个 Net_ID 了, 为 0 (第一个子网)
11000000.10101000.00000000.1 0000000 多了一个 Net_ID 了, 为 1 (第二个子网)
|----------Net_ID-----------|-host--|

第一个子网
Network: 11000000.10101000.00000000.0 0000000 192.168.0.0
Broadcast: 11000000.10101000.00000000.0 1111111 192.168.0.127
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000 255.255.255.128

第二个子网
Network: 11000000.10101000.00000000.1 0000000 192.168.0.128
Broadcast: 11000000.10101000.00000000.1 1111111 192.168.0.255
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000 255.255.255.128

例题:
试着计算出 172.16.0.0,但 Net_ID 占用 23 个位时,这个网域的 Netmask, Network, Broadcast 等参数
答:
由于 172.16.xxx.xxx 是在 Class B 的等级当中,亦即 Net_ID 是 16 位才对。不过题目给的 Net_ID 占用了 23 个位喔! 等于是向 Host_ID 借了 (23-16) 7 个位用在 Net_ID 当中。所以整个 IP 的地址会变成这样:
预设: 172 . 16 .0000000 0.00000000
|----Net_ID--------------|--Host---|
Network: 172 . 16 .0000000 0.00000000 172.16.0.0
Broadcast: 172 . 16 .0000000 1.11111111 172.16.1.255
Netmask: 11111111.11111111.1111111 0.00000000 255.255.254.0

路由概念

  1. 查询 IP 封包的目标 IP 地址:
    当 PC01 有 IP 封包需要传送时,主机会查阅 IP 封包表头的目标 IP 地址;
  2. 查询是否位于本机所在的网域之路由设定:
    PC01 主机会分析自己的路由表,当发现目标 IP 与本机 IP 的 Net_ID 相同时(同一网域),则 PC01 会直接透过区网功能,将数据直接传送给目的地主机。
  3. 查询预设路由 (default gateway):
    但在本案例中, PC01 与 PC11 并非同一网域,因此 PC01 会分析路由表当中是否有其他相符合的路由设定, 如果没有的话,就直接将该 IP 封包送到预设路由器 (default gateway) 上头去,在本案例当中 default gateway 则是 Server A 这一部。
  4. 送出封包至 gateway 后,不理会封包流向:
    当 IP 由 PC01 送给 Server A 之后, PC01 就不理会接下来的工作。而 Server A 接收到这个封包后, 会依据上述的流程,也分析自己的路由信息,然后向后继续传输到正确的目的地主机上头。

Tips:
Gateway / Router :网关/路由器的功能就是在负责不同网域之间的封包转递 (IP Forwarding),由于路由器具有 IP Forwarding 的功能,并且具有管理路由的能力, 所以可以将来自不同网域之间的封包进行转递的功能。此外,你的主机与你主机设定的 Gateway 必定是在同一个网段内喔!

观察主机路由: route

[[email protected] ~]# route [-n]

选项与参数:
-n : 将主机名以 IP 的方式显示

IP 与 MAC:链结层的 ARP 与 RARP 协定

ARP (Address Resolution Protocol, 网络地址解析) 协议
RARP (Revers ARP, 反向网络地址解析)

如何取得自己本机的网卡卡号 (MAC):

[[email protected] ~]# ifconfig eth0

取得本机的 ARP 表格内的 IP/MAC 对应数据

[[email protected] ~]# arp -[nd] hostname

[[email protected] ~]# arp -s hostname(IP) Hardware_address

选项与参数:
-n :将主机名以 IP 的型态显示
-d :将 hostname 的 hardware_address 由 ARP table 当中删除掉
-s :设定某个 IP 或 hostname 的 MAC 到 ARP table 当中

范例一:列出目前主机上面记载的 IP/MAC 对应的 ARP 表格

[[email protected] ~]# arp -n

Address HWtype HWaddress Flags Mask Iface
192.168.1.100 ether 00:01:03:01:02:03 C eth0
192.168.1.240 ether 00:01:03:01:DE:0A C eth0
192.168.1.254 ether 00:01:03:55:74:AB C eth0

范例二:将 192.168.1.100 那部主机的网卡卡号直接写入 ARP 表格中

[[email protected] ~]# arp -s 192.168.1.100 01:00:2D:23:A1:0E

这个指令的目的在建立静态 ARP

ICMP 协定

ICMP 的全名是『 Internet Control Message Protocol, 因特网讯息控制协议 』

那么我们是如何利用 ICMP 来检验网络的状态呢?最简单的指令就是 ping 与 traceroute 了, 这两个指令可以透过 ICMP 封包的辅助来确认与回报网络主机的状态。

2.4 TCP/IP 的传输层相关封包与数据

传送层有两个重点, 一个是连接导向的 TCP 封包,一个是非连接导向的 UDP 封包

可靠联机的 TCP 协议


各封包之间的相关性

TCP 的三向交握

非连接导向的 UDP 协议

UDP 的全名是:『User Datagram Protocol, 用户数据流协议』,UDP 与 TCP 不一样, UDP 不提供可靠的传输模式,因为他不是面向连接的一个机制,这是因为在 UDP 的传送过程中,接受端在接受到封包之后,不会回复响应封包 (ACK) 给发送端,所以封包并没有像 TCP 封包有较为严密的检查机制。

网络防火墙与 OSI 七层协定

2.5 连上 Internet 前的准备事项

用 IP 上网?主机名上网?DNS 系统?

这个主机名 (Hostname) 对应 IP 的系统,就是鼎鼎有名的 Domain Name System (DNS) 咯!
在 Linux 里面,DNS 主机 IP 的设定就是在 /etc/resolv.conf 这个档案里面

时间: 2024-07-31 14:24:12

鸟哥的 Linux 私房菜(服务器) 第二章 网络基础概念的相关文章

鸟哥的 Linux 私房菜(服务器) 第三章 局域网络架构简介 第四章 连上 Internet

鸟哥的 Linux 私房菜(服务器) 第三章 局域网络架构简介 第四章 连上 Internet [TOC] 3.1 局域网络的联机 3.1.1 局域网络的布线规划 3.1.1-1 Linux 直接联网-与 PC 同地位 3.1.1-2 Linux 直接联网-与一般 PC 分开网域 3.1.1-3 Linux 直接联网-让 Linux 直接管理 LAN 3.1.1-4 Linux 放在防火墙后-让 Linux 使用 Private IP 3.2 本书使用的内部联机网络参数与通讯协议 3.2.1 联

鸟哥的linux私房菜——第20章 启动流程、模块管理与loader

20.1 Linux启动流程分析 Linux启动过程: 按下开机电源后计算机硬件主动读取BIOS来加载硬件信息以及硬件系统的自我测试,之后系统会主动读取第一个可启动的设备(由BIOS设置),此时就可以读入引导加载程序(boot loader)了,引导加载程序指定使用那个内核文件来启动,并实际加载内核到内存中解压缩与执行,此时内核就能够在内存中活动,并检测所有硬件信息与加载适当的驱动程序来使主机运行,等内核检测硬件与加载驱动程序完毕后,就可以登录了. 1)加载BIOS的硬件信息与进行自我测试,并依

鸟哥的linux私房菜——第12章 正则表达式与文件格式化处理

12.1什么是正则表达式 正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序. vi.grep.awk.sed支持正则表达式,而cp,ls等命令只能使用bash自身的通配符 12.2基础正则表达式 grep高级参数: grep [-A] [-B] [--color=auto]  'string'   filename -A:after的意思,除了列出该行外,后续的n行也列出来 -B:be

《鸟哥的Linux私房菜》13章shel script习题答案

因为感觉对Linux命令还没有多大的感觉,所以就专门找了鸟哥的书来看一下,折腾了几天看基础篇的shell部分,收获还是蛮大的,至少对Linux命令是有点感觉了,然后往前学习的一些知识,在理论知识方面也得到了一定的扩充了.先不多说,把习题的答案分享一下. <鸟哥的Linux私房菜>基础篇P398习题 (1)请新建一个script,当你执行该script的时候,该script可以显示你目前的身份(用whoami)和你目前所在的目录(用pwd). 这道题的答案已经直接给出了,直接上脚本: #!/bi

鸟哥的linux私房菜服务器架设篇学习记录之进修专区与架设服务器的准备工作

鸟哥的Linux私房菜第零章

CPU从主存中读取数据通过微指令集控制和进行计算.主存储器内的数据则是从输入单元所传输进来,而CPU处理完毕的数据也必须要先写回主存储器中, 最后数据才从主存储器传输到输出单元.内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成.内存的特点是存取 速度快.内存是电脑中的主要部件,它是相对于外存而言的.存储器的种类很多,按其用途可分为主存储器和辅助存储器,硬盘与光盘.U盘一样属于辅助存储器.CPU 的种类 通过指令集区分指令集主要分为精简指令集RISC和复杂指令集CISC精简指令集执行速

《鸟哥的Linux私房菜》7章 Linux文件与目录管理 习题答案

自己整理了一下,分享给大家,这些习题确实是非常经典的! 1.什么是绝对路径与相对路径? 绝对路径是相对于/目录的路径的,比如/home/user: 相对路径是相对于当前工作目录的,比如你的系统上有个/home/user/test目录,此时你在/home/user目录下,那么./test就是相对路径. 2.如何更改一个目录的名称?例如/home/test变为/home/test2. mv /home/test /home/test2 3.PATH这个环境变量的意义是什么? 这里先看一下PATH:

鸟哥的Linux私房菜笔记6------11章认识和学习bash

1.合法的shell与/etc/shells功能 shell有多个版本,有Bourne Shell(sh).C Shell.K Shell .TCSH等.通常Linux使用的是Bourne Again Shell(Bash),是sh的增强版 可以检查/etc/shells,查看有多少可用的shell. 将合法的shell写入/etc/shells文件,是为系统某些服务在运行过程中检查用户能够使用的shells. 当用户登录时就会取得一个shell来工作,这个shell记录在/etc/passwd

鸟哥的Linux私房菜 第0章 计算机概论要点

计算机的定义:"接受用户输入指令与数据,经由中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息". 计算机的五大单元包括:输入单元.输出单元.CPU内部的控制单元.算术逻辑单元与内存五大部分. 数据会流入/流出内存是CPU所发布的指令,而CPU实际要处理的数据则完全来自于内存. CPU依设计理念主要分为精简指令集(RISC)与复杂指令集(CISC)系统. 关于CPU的频率部分,外频指的是CPU与外部组件进行数据传输时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者