美文网首页
一、基础网络概念

一、基础网络概念

作者: 努力爬行中的蜗牛 | 来源:发表于2018-08-29 17:20 被阅读14次

    1.1 网络概念

    1.1.1 什么是网络

    以软件技术将硬件整合TCP/IP。
    Internet就是使用TCP/IP的网络连接技术串联起来的一个网络世界。
    通过网络卡和Internet就可以实现上网了。

    1.1.2 计算机网络组成组件

    计算机网络连接示意图.png
    节点:节点主要是具有网络地址(IP)的设备;
    服务器主机:一般来说,提供数据以响应用户的主机,即可成为一台服务器;
    工作站或者客户端:任何可以在计算机网络输入的设备都可以成为工作站,主动发起去连接数据的就是客户端;
    网络卡:内建或者连接在主机上面的一个设备,主要提供网络连接的卡片,目前大多使用具有RJ45接头的以太网络卡;
    网络接口:利用软件设计出来的网络接口,主要提供网络地址(IP)的任务,一张网卡至少可以搭配一个以上的网络接口;而每部主机内部其实也都拥 有一个内部的网络接口,那就是 loopback (lo) 这个循环测试接口!
    网络形态或拓朴 (topology):各个节点在网络上面的链接方式,一般讲的 是物理连接方式;
    网关 (route) 或通讯闸 (gateway):具有两个以上的网络接口, 可以连接 两个以上不同的网段的设备,例如 IP 分享器就是一个常见的网关设备;

    1.1.3 计算机网络区域范围

    局域网(LAN):网络传输距离较近,可以用较好的材料;
    广域网(WAN):网络传输距离较远,如城市之间,国家之间,可以用一般的材料;

    1.1.4 计算机网络协议:OSI七层协议

    我们可以将整个网络连接过程分成数个阶层 (layer),每个阶层 都有特别的独立的功能, 而且每个阶层的程序代码可以独立撰写,因为每个阶层之间 的功能并不会互相干扰的。 如此一来,当某个小环节出现问题时,只要将该层级的程序代码重新撰写即可。所以程序撰写也容易,整个网络概念也就更清晰! 那就是目前你常听到的 OSI 七层协议 (Open System Interconnection) 的概念啰!


    七层协议各阶层相关性.png

    依据定义来说,越接近硬件的阶层为底层 (layer 1),越接近应用程序的则是高层 (layer 7)。 不论是接收端还是发送端,每个一阶层只认识对方的同一阶层数据。


    七层一些的数据传输方式.png
    上图中仔细看每个数据报的部分,上层的包裹是放入下层的数据中,而数据前面则 是这个数据的表头。其中比较特殊的是第二层, 因为第二层 (数据链结层) 主要是位 于软件封包 (packet) 以及硬件讯框 (frame) 中间的一个阶层,他必须要将软件包装 的包裹放入到硬件能够处理的包裹中,因此这个阶层又分为两个子层在处理相对应的数 据。 因为比较特殊,所以您瞧瞧,第二层的数据格式比较不一样喔,尾端还出现一个 检查码哩~
    各层协议负责内容.png

    1.1.5 计算机网络协议:TCP/IP

    TCP/IP协议是基于OSI七层协议的概念,同样具有分层的概念,只是将其简化为四层。其关系如下图所示


    TCP与OSI的相关性.png

    TCP/IP运作过程,以访问yahoo网站为例:

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

    等到 Yahoo 收到你的包裹后,在依据相反方向拆解开来,然后交给对应的层级进 行分析,最后就让 Yahoo 的 WWW 服务器软件得到你所想要的数据,该服务器软件再根 据你的要求,取得正确的资料后,又依循上述的流程,一层一层的包装起来, 最后传 送到你的手上!

    1.2 TCP/IP的链接层相关协议

    TCP/IP最底层的连接层主要与硬件有关。

    1.2.1 广域网使用的设备

    常见设备包括:

    • 传统电话拨接:使用ppp协议
    • 整合服务数字网络
    • 非对称数位用路回路
    • 电缆调制解调器

    1.2.2 局域网络使用的设备-以太网网络,速度与标准,Rj45接头(跳线/并行线)

    在局域网络环境中,我们最长使用的是以太网络。

    以太网络速度与标准
    以太网络的流行主要是它成为国际公认的标准所致。早先 IEEE 所制订的以太网络 标准为 802.3 的 IEEE 10BASE5 ,这个标准主要的定义是:『10 代表传输速度为 10Mbps,BASE 表示采用基频信号来进行传输,至于 5 则是指每个网络节点之间最长可 达 500 公尺。』
    由于网络的传输信息就是 0 与 1 啊,因此,数据传输的单位为每秒多少 bit ,亦 即是 M bits/second, Mbps 的意思。

    以太网的网络接头
    目前在以太网络上最常见到的接头就是 RJ-45 的网络接头,共有八蕊的接头,有 点像是胖了的电话线接头

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

    以太网络的重心就是以太网络卡。以太网络的传输主要就是网络卡对网络卡之间的数据传输。
    每个以太网络卡出厂时的网络卡卡号都是唯一的,也就是MAC。
    以太网络传输协议:CSMA/CD


    CSMA:CD.png

    中间的Hub为集线器,集线器是一种共享媒体,共享媒体单一时间内只能被一台主机所使用。
    以太网络卡之间数据传递过程,以网络卡A发送数据到网络卡D为例:

    • 监听媒体使用情况:A在发送网络封包数据前,会先对网络媒体进行监听,确认没人使用网络媒体时,才会发送讯框数据;
    • 多点传输:A发送出来的数据,会被集线器复制一份,然后发送给所有连接到此集线器的主机,所以A发送的数据,B、C、也能收到,由于D才是发送的目标,因此B、C会将接收到的讯框数据丢弃掉,而D则会将数据抓取下来;
    • 讯框侦测:讯框数据具有侦测能力,如果此时B也在发送讯框数据,那么A、B同时发送的讯框数据就会碰撞在一起,发生毁损;
      标准的讯框数据在以太网络卡与其他以太网络媒体一次只能传送1500bytes,如果我们发送的数据过大,会拆分成一个个小的数据报,每个数据报在发送前,都会经过CSMA/CD机制验证

    1.2.4 MAC的封装格式

    CSMA/CD传送出去的数据就是讯框数据,讯框数据也就是MAC。MAC上面有两个重要的信息,目标与来源网络卡卡号。如下图

    以太网络的MAC讯框.png
    上图中的目的地址与来源地址指的就是网卡卡号 (hardware address, 硬件地址), 我们前面提到,每一张网卡都有一个独一无二的卡号, 那个卡号的目的就在这个讯框 的表头数据使用到啦!硬件地址最小由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF
    (16 进位法), 这 6 bytes 当中,前 3bytes 为厂商的代码,后 3bytes 则是该厂商 自行设定的装置码了。
    MAC的传送过程中,仅在局域网内有效,如果跨过不同的网络,目标与来源网络卡地址会发生改变
    讯框数据最小46bytes,最大1500bytes

    1.2.5 MTU最大传输单位

    以太网络讯框所能传送的最大数据未1500bytes,这个我们称为MTU(最大传输单位)。注意,不同的以太网络媒体的MTU可能不同,但标准定义的是1500bytes;

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

    集线器是共享媒体,而交换器是非共享媒体,交换器可以避免讯框数据发生碰撞的问题;
    交换器与集线器的最大区别:交换器内部有一个内存记录交换器(switch)port和与之相连的PC的MAC地址,所以,当交换器两段的PC要交换数据时,直接通过交换器的内存数据而传送到目标主机上;

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

    我们现在知道要有网络的话,必须要有网络相关的硬件,而目前最常见的网络硬件 接口为以太网络,包括网络线、网络卡、Hub/Switch 等等。而以太网络上面的传输使 用网络卡卡号为基准的 MAC 讯框,配合 CSMA/CD 的标准来传送讯框,这就是硬件部分。 在软件部分,我们知道 Internet 其实就是 TCP/IP 这个通讯协议的通称,Internet 是由 InterNIC(注 12) 所统一管理的, 但其实他仅是负责分配 Internet 上面的 IP 以 及提供相关的 TCP/IP 技术文件而已。

    1.3.1 IP封包的封装

    目前因特网上的IP有两种版本:一种是IPV4,另一种是IPV6,IPV4记录的地址只有32位,而IPV6有128位,目前主流媒体大多使用的IPV4;


    IP封包的表头资料.png

    只要知道 IP 表头里面含有: TTL, Protocol, 来源地址与目标地址也就够了! 而这个 IP 表头的来源与目标 IP ,以及那个判断通过多少路由器的 TTL ,就能了解 到这个 IP 将被如何传送到目的端吶。

    1.3.2 IP地址的组成与分级:网络,IP与门牌关联,分级(Class A/B/C)

    IPV4网络的IP地址是32bits,为了方便记忆,将其分成4段,每段8bits,并且将每段的二进制转换为10进制,以.隔开,这就是我们常见的IP地址格式;
    IP地址分为两部分:包括Net_ID(网络号)、Host_ID(主机号)两部分;

    同一网域的定义:在同一物理网段内,主机的IP具有相同的Net_ID,同时具有独特的Host_ID,那么这些IP群就是同一网域内的IP网段了;
    同一物理网段的定制:当所有的主机都是使用同一个网络媒体串在一 起, 这个时候这些主机在实体装置上面其实是联机在一起的,那么 就可以称为这些主机在同一个物理网段内了;

    同一个 Net_ID 内,不能具有相同的 Host_ID ,否则就会发生 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 广播传递数据
      在同物理网段的主机如果设定相同的网域 IP 范围 (不可重复),则这些主机都 可以透过 CSMA/CD 的功能直接在区网内用广播进行网络的联机,亦即可以直接 网卡对网卡传递数据 (透过 MAC 讯框)。
    • 设定不同区网在同物理网段的情况
      在同一个物理网段之内,如果两部主机设定成不同的 IP 网段,则由于广播地址 的不同,导致无法透过广播的方式来进行联机。 此时得要透过路由器 (router) 来进行沟通才能将两个网域连结在一起。
    • 网域的大小
      当 Host_ID 所占用的位越大,亦即 Host_ID 数量越多时,表示同一个网域内可 用以设定主机的 IP 数量越多。

    IP分级
    为了 IP 管理与发放注册的方便性,InterNIC 将整个 IP 网段分为五种等级, 每种等级的范围主要与 IP 那 32 bits 数值的前面几个位有关
    如下图所示:主要记住前三种即可

    IP的种等级.png

    1.3.3 IP的种类与取得方式:loopback,IP的取得方式

    IPv4只有两种IP类别:
    Public IP:公共IP,经由 INTERNIC 所统一规划的 IP,有这种 IP 才 可以连上 Internet
    Private IP:私有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

    特殊的loopback IP网段
    这个 lo 的网络 是当初被用来作为测试操作系统内部循环所用的一个网域,同时也能够提供给系统内部原本就需要使用网络接口的服务 (daemon) 所使用。

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

    IP的取得方式

    • 直接手动设定(static)
      你可以直接向你的网管询问可用的 IP 相关参数, 然后直接编辑配置文件 (或使用某些软件功能) 来设定你的网络。
    • 透过拨接取得
      向你的 ISP 申请注册,取得账号密码后,直接拨接到 ISP , 你的 ISP 会透过他们自己的设定,让你的操作系统取得正确的网络参数。
    • 自动取得网络参数 (DHCP)
      在局域网络内会有一部主机负责管理所有计算 机的网络参数,你的网络启动时就会主动向该服务器要求 IP 参数, 若取得网 络相关参数后,你的主机就能够自行设定好所有服务器给你的网络参数了。最常 使用于企业内部、IP 分享器后端、 校园网络与宿舍环境,及缆线宽带等联机方 式。

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

    网络IP分为Net_ID和Host_ID,Net_ID是不变的,Host_ID是可变的,如果把Net_ID全部置为1,Host_ID部分全部置为0,则是Netmask,即子网掩码;

    1.3.5 路由概念

    在同一个区域网里面,数据的传递是以广播的方式传递,在不同区域的网络里面,数据的传递则需要通过路由来进行传递;


    简单路由示意图.png

    不同区域网络数据传递过程大致如下:

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

    大致的情况就是这样,所以每一部主机里面都会存在着一个路由表 (Route table),数 据的传递将依据这个路由表进行传送!而一旦封包已经经由路由表的规则传送出去后, 那么主机本身就已经不再管封包的流向了,因为该封包的流向将是下一个主机 (也就是 那部 Router) 来进行传送,而 Router 在传送时,也是依据 Router 自己的路由表来 判断该封包应该经由哪里传送出去的!

    1.3.6 观察主机路由:route

    1.3.7 IP与MAC:链接层的ARP与RARP协定:arp

    网络数据传递是以以太网的,以太网传递数据主要是以太网络卡MAC,那么IP和MAC总得有个对应的关系,这个对应的关系依据ARP协议(网络地址机械协议)或者RARP(反向网络地址解析协议)来确定;

    当我们想要了解某个IP是设定于某张网络卡时,我们的主机会对整个去往发出ARP网络封包,对方收到ARP网络封包后,就会回传他们的MAC地址给我们,这样我们就可以开始传递数据了。

    当ARP协议取得目标IP与他网络卡后,就会将其写入注意的ARP table表中记录20分钟;

    1.3.8 ICMp协定

    ICMP 的全名是『 Internet Control Message Protocol, 因特网讯息控制协议 』。 基本上,ICMP 是一个错误侦测与回报的机制,最大的功能就是可以确保我们网络的联 机状态与联机的正确性!
    最简单的指令就是 ping 与 traceroute 了,这两个指令可以透过 ICMP 封包的辅助来确认与回报网络主机的状态。

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

    网络层IP封包只负责将数据传送到正确的目标主机上,但这个封包能不能被接收,或者有没有被正确的接收,就不是IP的任务了,而是传送层的任务。传送层有两个重点,一个是连接导向的TCP封包,一种是非连接导向的UDP封包。

    1.4.1 可靠联机的TCP协议:通讯端口,特权埠口

    各封包之间的相关性.png

    如图所示,IP封包是放在MAC封包内,而TCP封包是放在IP封包内的;

    TCP封包表头内容
    主要了解来源端口(source port),目标端口(destination port)以及Code即可。
    IP封包的传送主要是藉由IP地址连接两段,那么具体这个链接的通道是连接到哪里,那就是port(埠口)了。
    Code:控制标志码
    我们在进行网络连接的时候,必须说明这个联机的状态,好让接收端了解这个封包的动作。
    ACK(Acknowledge):若为 1 代表这个封包为响应封包;
    SYN(Synchronous):若为 1,表示发送端希望双方建立同步处理,也就是要求建立联机。通常带有 SYN 标志的封包表示『主动』要连接到对方的意思;

    通讯端端口
    在TCP表头中,最重要的就是那16位的来源与目标端口(分别都是16位),由于是16位,因此目标与来源端口最大可达到65535号(2的16次方)。
    网络时双向的,服务器与客户端要联机的话,两边应该有一个对应的埠口来达成联机信道,好让数据可以透过这个信道来进行沟通;

    通过程序可以启动对应的port。

    假如 IP 是网络世界的门牌,那么这 个埠口就是那个门牌号码上建筑物的楼层! 每个建筑物都有 1~65535 层楼,你需要什 么网络服务,就得要去该对应的楼层取得正确的资料。但那个楼层里面有没有人在服务你呢? 这就得要看有没有程序真的在执行啦。所以,IP 是门牌,TCP 是楼层,真正提供服务的, 是在该楼层的那个人 (程序)!

    特权埠口
    Internet上面已经有很多规范好的固定port,这些port number 通常小于1024,且是提供给许多知名的网络服务软件用的。在Linux环境,各网络服务与port number的对应默认是写在/etc/services文档内的;

    常见port与对应网络服务.png

    注意:小于 1024 以下的埠口要启动时, 启动者的身份必 须要是 root 才行,所以才叫做特权埠口嘛!这个限制挺重要的,大家不要忘记了喔! 不过如果是 client 端的话,由于 client 端都是主动向 server 端要数据, 所以 client 端的 port number 就使用随机取一个大于 1024 以上且没有在用的 port number。

    Socket Pair
    由于网络是双向的,要达成联机的话得要服务器与客户端均提供了 IP 与埠口才行。 因此,我们常常将这个成对的数据称之为 Socket Pair 了!

    由于 IP 与埠口常常连在一起说明,因此网络寻址常常使用『 IP:port 』来说明, 例如想要连上鸟哥的网站时,正确的鸟哥网站写法应该是:『 linux.vbird.org:80 』 才对!

    1.4.2 TCP的三次握手

    如何藉由TCP表头来确认这个封包有实际被对方接收?


    三次握手.png

    过程如下:

    • A:封包发起
      当客户端想要对服务器端联机时,就必须要送出一个要求联机的封包,此时客户 端必须随机取用一个大于 1024 以上的端口口来做为程序沟通的接口。然后在 TCP 的表头当中,必须要带有 SYN 的主动联机(SYN=1),并且记下发送出联机封 包给服务器端的序号 (Sequence number = 10001) 。
      -B: 封包接收与确认封包传送
      当服务器接到这个封包,并且确定要接收这个封包后,就会开始制作一个同时带 有 SYN=1, ACK=1 的封包, 其中那个 acknowledge 的号码是要给 client 端确 认用的,所以该数字会比(A 步骤)里面的 Sequence 号码多一号 (ack = 10001+1 = 10002), 那我们服务器也必须要确认客户端确实可以接收我们的封包才行, 所以也会发送出一个 Sequence (seq=20001) 给客户端,并且开始等待客户端给 我们服务器端的回应喔!
    • C:回送确认封包
      当客户端收到来自服务器端的 ACK 数字后 (10002) 就能够确认之前那个要求 封包被正确的收受了, 接下来如果客户端也同意与服务器端建立联机时,就会 再次的发送一个确认封包 (ACK=1) 给服务器,亦即是 acknowledge = 20001+1 = 20002 啰。
    • D:取得最后确认
      若一切都顺利,在服务器端收到带有 ACK=1 且 ack=20002 序号的封包后,就能 够建立起这次的联机了。

    1.4.3 非连接导向的UDP协议

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

    1.4.4 网络防火墙与OSI七层协议

    封包过滤式的网络防火墙可以抵挡掉一些可能有问题的封包, Linux 系统上面是 怎么挡掉封包的呢?其实说来也是很简单,既然封包的表头上面已经有这么多的重要信 息, 那么我就利用一些防火墙机制与软件来进行封包表头的分析,并且设定分析的规 则,当发现某些特定的 IP 、特定的埠口或者是特定的封包信息(SYN/ACK 等等),那么 就将该封包给他丢弃, 那就是最基本的防火墙原理了!

    如果以 OSI 七层协议来说,每一层可以抵挡的数据有:

    • 第二层:可以针对来源与目标的 MAC 进行抵挡;
    • 第三层:主要针对来源与目标的 IP ,以及 ICMP 的类别 (type) 进行抵挡;
    • 第四层:针对 TCP/UDP 的埠口进行抵挡,也可以针对 TCP 的状态 (code)来处理。

    1.5 连上Internet前的准备工作

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

    主机名 (Hostname) 对应 IP 的系统,就是鼎鼎有名的 Domain Name System (DNS) 咯!也就是说,DNS 这个服务的最大功能就是在进行『主机名与该主机的 IP 的 对应』的一项协议。 DNS 在网络环境当中是相当常被使用到的一项协议喔!

    1.5.2 一组可以连上Internet的必要网络参数

    PC 端的网络参数, 主要就是 IP, Netmask, Default Gateway, DNS 这四 个就是了!

    相关文章

      网友评论

          本文标题:一、基础网络概念

          本文链接:https://www.haomeiwen.com/subject/plkkwftx.html