主题 | 概要 |
---|---|
网络基础 | 网络知识的常用概念,常用协议,分层结构 |
编辑 | 时间 |
新建 | 20160727 |
序号 | 参考资料 |
1 | 鸟哥的linux私房菜 |
2 | 计算机网络,清华大学出版社 |
由于网络媒体只能传送 0 与 1 这种位串,因此物理层必须定义所使用的媒体设备之电压与讯号等, 同时还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串。
这一层是比较特殊的一个阶层,因为底下是实体的定义,而上层则是软件封装的定义。因此第二层又分两个子层在进行数据的转换动作。 在偏硬件媒体部分,主要负责的是 MAC (Media Access Control) ,我们称这个数据报裹为 MAC 讯框 (frame), MAC 是网络媒体所能处理的主要数据报裹,这也是最终被物理层编码成位串的数据。MAC 必须要经由通讯协议来取得媒体的使用权, 目前最常使用的则是 IEEE 802.3 的以太网络协议。详细的 MAC 与以太网络请参考下节说明。至于偏向软件的部分则是由逻辑链接层 (logical link control, LLC) 所控制,主要在多任务处理来自上层的封包数据 (packet) 并转成 MAC 的格式, 负责的工作包括讯息交换、流量控制、失误问题的处理等等。
这一层是我们最感兴趣的啰,因为我们提及的 IP (Internet Protocol) 就是在这一层定义的。 同时也定义出计算机之间的联机建立、终止与维持等,数据封包的传输路径选择等等,因此这个层级当中最重要的除了 IP 之外,就是封包能否到达目的地的路由 (route) 概念了!
这一个分层定义了发送端与接收端的联机技术(如 TCP, UDP 技术), 同时包括该技术的封包格式,数据封包的传送、流程的控制、传输过程的侦测检查与复原重新传送等等, 以确保各个数据封包可以正确无误的到达目的端。
在这个层级当中主要定义了两个地址之间的联机信道之连接与挂断,此外,亦可建立应用程序之对谈、 提供其他加强型服务如网络管理、签到签退、对谈之控制等等。如果说传送层是在判断资料封包是否可以正确的到达目标, 那么会谈层则是在确定网络服务建立联机的确认。
我们在应用程序上面所制作出来的数据格式不一定符合网络传输的标准编码格式的! 所以,在这个层级当中,主要的动作就是:将来自本地端应用程序的数据格式转换(或者是重新编码)成为网络的标准格式, 然后再交给底下传送层等的协议来进行处理。所以,在这个层级上面主要定义的是网络服务(或程序)之间的数据格式的转换, 包括数据的加解密也是在这个分层上面处理。
应用层本身并不属于应用程序所有,而是在定义应用程序如何进入此层的沟通接口,以将数据接收或传送给应用程序,最终展示给用户。
OSI 七层协议的架构非常严谨,但是也就是因为太过严谨了,因此程序撰写相当不容易,而由 ARPANET 发展而来的 TCP/IP也是使用 OSI 七层协议的观念,只是将它简化为四层,在结构上面比较没有这么严谨,程序撰写会更加容易,更广为接受。
早期网络使用的拨号协议,速度慢,但是PPP 支持 TCP/IP, NetBEUI, IPX/SPX 等通讯协议,所以使用度非常广。
透过电话线来拨接后取得 IP 的一个方法,只不过这个方式使用的是电话的高频部分,与一般讲电话的频率不同。 因此妳可以一边使用 ADSL 上网同时透过同一个电话号码来打电话聊天。由于上传/下载的带宽不同,因此才称为非对称的回路。ADSL 同样使用调制解调器,只是他透过的是 PPPoE (PPP over Ethernet) 的方法,将 PPP 仿真在以太网络卡上,因此你的主机需要透过一张网络卡来连接到调制解调器,并透过拨接程序来取得新的接口(ppp0)。
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)即带冲突检测的载波监听多路访问技术,是以太网中网卡之间传送数据的协议标准。如下图所示,由A向D发送数据的流程为:
A到D传输数据流程
a).监听媒体使用情况 (Carrier Sense):A 主机要发送网络封包前,需要先对网络媒体(Hub)进行监听,确认没有人在使用后,才能够发送出讯框。
b).多点传输 (Multiple Access):A 主机所送出的数据会被集线器复制一份,然后传送给所有连接到此集线器的主机。也就是说,A 所送出的数据,B, C, D 三部计算机都能够接收的到!但由于目标是 D 主机,因此 B 与 C 会将此讯框数据丢弃,而 D 则会抓下来处理。
c).碰撞侦测 (Collision Detection):该讯框数据附有检测能力,若其他主机例如 B 计算机也刚好在同时间发送讯框数据时, 那么 A 与 B 送出的数据碰撞在一块 (出车祸) ,此时这些讯框就是损毁,那么 A 与 B 就会各自随机等待一个时间, 然后重新透过第一步再传送一次该讯框数据。
集线器 (hub) 是网络共享媒体,可能会发生碰撞的情况。链路层上的switch(交换机)与Hub的最大差异是交换器内有一个特别的内存, 这个内存可以记录每个 switch port 与其连接的 PC 的 MAC 地址,所以,当来自 switch 两端的 PC 要互传数据时,每个讯框将直接透过交换器的内存数据而传送到目标主机上。所以 switch 不是共享媒体,且 switch 的每个埠口 (port) 都具有独立的带宽。
链路上进行传输的最小单位为帧(frame),目的地址与来源地址是网卡卡号(hardware address, 硬件地址),在MAC的传送中,它仅在局域网内生效,如果跨过不同的网域,来源与目的的硬件地址就会跟着变动。
IPv4 (Internet Protocol version 4)的表头结构至少占据20字节,如下所示:
具体每个字段的意思,暂时不用全知道,用到的时候去查就行。
IP由32位二进制组成,为了人们阅读习惯,分成四小段,每段8位,并用十进制表示。
所以 IP 最小可以由 0.0.0.0 一直到 255.255.255.255,而这一串数字又分为Net_ID (网域号码)与 Host_ID (主机号码) 两部份
注:在同一个网段内,Net_ID 是不变的,而 Host_ID 则是不可重复,此外,Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 ,因为全为 0 表示整个网段的地址 (Network IP),而全为 1 则表示为广播的地址 (Broadcast IP)。
InterNIC 将整个 IP 网段分为五种等级, 每种等级的范围主要与 IP 那 32 bits 数值的前面几个位有关,基本定义如下:
一般只掌握A B C三类,D类作为群播 (multicast) 的特殊功能,E类为网段保留。
公共 IP ,经由 INTERNIC 所统一规划的 IP,有这种 IP 才可以连上 Internet 。
私有 IP 或保留 IP,不能直接连上 Internet 的 IP,主要用于局域网络内的主机联机规划。
私有 IP 也分别在 A, B, C 三个 Class 当中各保留一段作为私有 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
我的理解:建立局域网时,如果能确认不用连上Internet就算不使用保留网段也可以,但是不够专业。
Linux主机上常见一个lo奇怪的网域,即127.0.0.0/8这个class A。这个 lo 的网络是当初被用来作为测试操作系统内部循环所用的一个网域,同时也能够提供给系统内部原本就需要使用网络接口的服务 (daemon) 所使用。简单说,如果你没有安装网络卡在的机器上面, 但是你又希望可以测试一下在你的机器上面设定的服务器环境到底可不可以顺利运作,这个时候就可以利用这个内部循环网络。默认主机地址localhost:127.0.0.1就在这个网段中。
子网掩码,用来划分子网,32位,网络段为1,主机段为0。比如,以 192.168.0.0 ~ 192.168.0.255 这个网域为范例。这个 IP 网段可以分为 Net_ID 与 Host_ID,既然 Net_ID 是不可变的,那就假设他所占据的 bits 已经被用光了 (全部为 1),而 Host_ID 是可变的,就将他想成是保留着 (全部为 0),所以, Netmask 的表示就成为:
注意:Host_ID 全部为 0 以及全部为 1 的时后该 IP 是不可以使用的,因为 Host_ID 全部为 0 的时后,表示 IP 是该网段的 Network ,至于全部为 1 的时后就表示该网段最后一个 IP ,也称为 Broadcast。
因此,一个网段的相关参数由网段、掩码和广播地址组成。
所谓子网切分,就是利用掩码把Host_ID拿来当作Net_ID。比如,继续把192.168.0.0 ~192.168.0.255这个网段细分为两个子域,就会成如下所示:
注意,两个子网的掩码一致,都用了25位表示Net_ID。但Network和Broadcast都不相同。
路由和路由器是不同的概念,路由器负责不同网域之间的封包传递,传递封包的规则是依靠路由表,整个路径搜寻的功能可以称之为路由。每部主机都有自己的路由表,由route指令查看。
网络中最重要的概念就是IP,但以太网络中帧的传输主要依靠MAC,因此IP与MAC势必有一定关联,依靠的就是ARP (Address Resolution Protocol, 网络地址解析) 协议,以及 RARP (Revers ARP, 反向网络地址解析)协议。
具体关联过程是:
我们想要了解某个 IP 其实是设定于某张以太网络卡上头时,我们的主机会对整个区网发送出 ARP 封包, 对方收到 ARP 封包后就会回传他的 MAC 给我们,我们的主机就会知道对方所在的网卡,那接下来就能够开始传递数据啰。 如果每次要传送都得要重新来一遍这个 ARP 协定那不是很烦?因此,当使用 ARP 协议取得目标 IP 与他网卡卡号后, 就会将该笔记录写入我们主机的 ARP table 中 (内存内的数据) 记录 20 分钟。
用arp –n指令查看本机的IP/MAC的关联表:
网络层之上就是传输层,传输层上最常见的是TCP封包。各封包之间的相关性,如下图所示。
TCP的表头结构,也至少包含20个字节,如下图所示。各个字段的含义,包括三次握手,详细可以参考TCP/IP详解这本书。