网络基础概念

整理自鸟哥的Linux私房菜-网络基础概念

https协议参考:大型网站的 HTTPS 实践(1):HTTPS 协议和原理

什么是网络

      为了解决网络硬件整合功能,所以在 1960 年代末期美国国防部就开始研究一个可以在这些不同的网络硬件上面运作的软件技术, 使得不同公司的计算机或数据可以透过这个软件来达成数据沟通。这个研究由美国国防部尖端研究企画署 (Defense Advanced Research Project Agency, DARPA) 负责,他们将该网络系统称为 ARPANET, 这个咚咚就是目前熟知的 TCP/IP 技术的雏形了!在 1975 年左右, ARPANET 已可以在常见的 Ethernet 与 Token-Ring 等硬件平台底下互通数据了。DARPA 在 1980 年正式推出 TCP/IP 技术后, 由于想要推展此项技术,因此与柏克莱 (Berkeley) 大学合作,将 TCP/IP 植入著名的 BSD Unix 系统内, 由于大学乃是未来人才数据库的培养处,所以, TCP/IP 这项技术便吸引越来越多使用者的投入, 而这种连接网络的技术也被称之为 Internet。

  以太网络最初是由全录公司 (Xerox PARC) 所建构出来的,而后透过 DEC, Intel 与 Xerox 合作将以太网络标准化。 再经由 IEEE (Institute of Electrical and Electronic Engineers 注3) 这个国际著名的专业组织利用一个 802 的项目制定出标准,之后有 19 家公司宣布支持 IEEE 所发布的 802.3 标准, 并且到了 1989 年国际标准化组织 ISO (International Organization for Standard) 将以太网络编入 IS88023 标准.

网络大小范围:局域网络 (Local Area Network, LAN)、广域网 (Wide Area Network, WAN)

OSI 七层协定 (Open System Interconnection) 

我们可以将整个网络连接过程分成数个阶层 (layer),每个阶层都有特别的独立的功能, 而且每个阶层的程序代码可以独立撰写,因为每个阶层之间的功能并不会互相干扰的。 如此一来,当某个小环节出现问题时,只要将该层级的程序代码重新撰写即可。

网络基础概念

不论是接收端还是发送端,每个一阶层只认识对方的同一阶层数据。 我们透过应用程序将数据放入第七层的包裹,再将第七层的包裹放到第六层的包裹内, 依序一直放到第一层的最大的包裹内,然后传送出去给接收端。接收端的主机就得由第一个包裹开始,依序将每个包裹拆开, 然后一个一个交给对应负责的阶层来视察!

网络基础概念

      OSI 七层协议只是一个参考的模型 (model),目前的网络社会并没有什么很知名的操作系统在使用 OSI 七层协定的联网程序代码。那...讲这么多干嘛?这是因为 OSI 所定义出来的七层协议在解释网络传输的情况来说, 可以解释的非常棒,因此大家都拿 OSI 七层协议来做为网络的教学与概念的理解。至于实际的联网程序代码,那就交给 TCP/IP 这个玩意儿吧!

       TCP/IP 是由 OSI 七层协议简化而来

网络基础概念


交换器 (switch) 等级非常多,我们这里仅探讨支持 OSI 第二层的交换器。交换器与集线器最大的差异,在于交换器内有一个特别的内存, 这个内存可以记录每个 switch port 与其连接的 PC 的 MAC 地址,所以,当来自 switch 两端的 PC 要互传数据时,每个讯框将直接透过交换器的内存数据而传送到目标主机上! 所以 switch 不是共享媒体,且 switch 的每个埠口 (port) 都具有独立的带宽喔!switch 已经克服了封包碰撞的问题:

网络基础概念

Time To Live(TTL, 存活时间)

表示这个 IP 封包的存活时间,范围为 0-255。当这个 IP 封包通过一个路由器时, TTL 就会减一,当 TTL 为 0 时,这个封包将会被直接丢弃。说实在的,要让 IP 封包通过 255 个路由器,还挺难的~ ^_^

IP封包:

网络基础概念

IP 的分级:

网络基础概念

  • Public IP : 公共 IP ,经由 INTERNIC 所统一规划的 IP,有这种 IP 才可以连上 Internet ;

  • Private IP : 私有 IP 或保留 IP,不能直接连上 Internet 的 IP , 主要用于局域网络内的主机联机规划。

早在 IPv4 规划的时候就担心 IP 会有不足的情况,而且为了应付某些企业内部的网络设定,于是就有了私有 IP (Private 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

由于这三段 Class 的 IP 是预留使用的,所以并不能直接作为 Internet 上面的连接之用,不然的话,到处就都有相同的 IP 啰!那怎么行!网络岂不混乱?所以啰,这三个 IP 网段就只做为内部私有网域的 IP 沟通之用。简单的说,他有底下的几个限制:

  • 私有 IP 的路由信息不能对外散播 (只能存在内部网络);
  • 使用私有 IP 作为来源或目的地址的封包,不能透过 Internet 来转送 (不然网络会混乱);
  • 关于私有 IP 的参考纪录(如 DNS),只能限于内部网络使用 (一样的原理啦)
内部循环网络 IP 是 127.0.0.1

如何将网域切的更细呢:Netmask, 或称为 Subnet mask (子网掩码)

无层级 IP: CIDR (Classless Interdomain Routing)

Network/Netmask
192.168.0.0/255.255.255.0
192.168.0.0/24    <==因为 Net_ID 共有 24 个 bits
事实上,由于网络细分的情况太严重,为了担心路由信息过于庞大导致网络效能不佳,因此,某些特殊情况下, 我们反而是将 Net_ID 借用来作为 Host_ID 的情况!这样就能够将多个网域写成一个啦!举例来说,我们将 256 个 Class C 的私有 IP (192.168.0.0~192.168.255.255) 写成一个路由信息的话,那么这个网段的写法就会变成: 192.168.0.0/16,反而将 192 开头的 Class C 变成 class B 的样子了! 这种打破原本 IP 代表等级的方式 (透过 Netmask 的规范) 就被称为无等级网域间路由 (CIDR) 啰!

路由概念

我们知道在同一个区网里面,可以透过 IP 广播的方式来达到资料传递的目的。

ICMP 的全名是『 Internet Control Message Protocol, 因特网讯息控制协议 』。 基本上,ICMP 是一个错误侦测与回报的机制,最大的功能就是可以确保我们网络的联机状态与联机的正确性! ICMP 也是网络层的重要封包之一,不过,这个封包并非独立存在,而是纳入到 IP 的封包中!也就是说, ICMP 同样是透过 IP 封包来进行数据传送的啦!因为在 Internet 上面有传输能力的就是 IP 封包啊!

网络基础概念

client 端都是主动向 server 端要数据, 所以 client 端的 port number 就使用随机取一个大于 1024 以上且没有在用的 port number。

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

TCP 封包确实是比较可靠的,因为通过三向交握嘛!不过,也由于三向交握的缘故, TCP 封包的传输速度会较慢。 至于 UDP 封包由于不需要确认对方是否有正确的收到数据,故表头数据较少,所以 UDP 就可以在 Data 处填入更多的资料了。同时 UDP 比较适合需要实时反应的一些数据流,例如影像实时传送软件等, 就可以使用这类的封包传送。也就是说, UDP 传输协议并不考虑联机要求、联机终止与流量控制等特性, 所以使用的时机是当数据的正确性不很重要的情况,例如网络摄影机!