鸟哥的 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

[root@www ~]# route [-n]

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

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

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

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

[root@www ~]# ifconfig eth0

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

[root@www ~]# arp -[nd] hostname

[root@www ~]# arp -s hostname(IP) Hardware_address

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

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

[root@www ~]# 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 表格中

[root@www ~]# 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 这个档案里面

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。