基础网络概念

1, 网络是什么

计算机网络的组成组件:
image
  • 节点 (node):节点主要是具有网络地址 (IP) 的设备之称。
  • 服务器主机 (server):就网络联机的方向来说,提供数据以『响应』给用户的主机, 都可以被称为是一部服务器。
  • 工作站 (workstation) 或客户端 (client):任何可以在计算机网络输入的设备都可以是工作站, 若以联机发起的方向来说,主动发起联机去『要求』数据的,就可以称为是客户端 (client)。
  • 网络卡 (Network Interface Card, NIC):内建或者是外插在主机上面的一个设备, 主要提供网络联机的卡片,目前大都使用具有 RJ-45 接头的以太网络卡。一般 node 上都具有一个以上的网络卡, 以达成网络联机的功能。
  • 网络接口:利用软件设计出来的网络接口,主要在提供网络地址 (IP) 的任务。 一张网卡至少可以搭配一个以上的网络接口;而每部主机内部其实也都拥有一个内部的网络接口,那就是 loopback (lo) 这个循环测试接口!
  • 网络形态或拓朴 (topology):各个节点在网络上面的链接方式,一般讲的是物理连接方式。 举例来说,上图中显示的是一种被称为星形联机 (star) 的方式,主要是透过一个中间连接设备, 以放射状的方式连接各个节点的一种形态,这就是一种拓朴。
  • 网关 (route) 或通讯闸 (gateway):具有两个以上的网络接口, 可以连接两个以上不同的网段的设备,例如 IP 分享器就是一个常见的网关设备。
计算机网络协议: TCP/IP
image

不论是接收端还是发送端,每个一阶层只认识对方的同一阶层数据。
0.应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter]。此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层;

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

网络媒体一次传输的数据量是有限的,因此如果要被传输的数据太大时,我们在分层的包装中,就得要将数据先拆开放到不同的包裹中, 再给包裹一个序号,好让目的端的主机能够藉由这些序号再重新将数据整合回来

2,TCP/IP 的链结层相关协议

广域网使用的设备:
  • 传统电话拨接:透过 ppp 协议。

早期网络大概都只能透过调制解调器加上电话线以及计算机的九针串行端口 (以前接鼠标或游戏杆的插孔),然后透过 Point-to-Point Protocol (PPP 协议) 配合拨接程序来取得网络 IP 参数,这样就能够上网了。不过这样的速度非常慢

  • 整合服务数字网络 (Integrated Services Digital Network, ISDN)

也是利用现有的电话线路来达成网络联机的目的,只是联机的两端都需要有 ISDN 的调制解调器来提供联机功能。比较少见

  • 非对称数位用路回路 (Asymmetric Digital Subscriber Line, ADSL):透过 pppoe 协定

也是透过电话线来拨接后取得 IP 的一个方法,只不过这个方式使用的是电话的高频部分,与一般讲电话的频率不同。 因此妳可以一边使用 ADSL 上网同时透过同一个电话号码来打电话聊天。ADSL 同样使用调制解调器,只是他透过的是 PPPoE (PPP over Ethernet) 的方法! 将 PPP 仿真在以太网络卡上,因此你的主机需要透过一张网络卡来连接到调制解调器,并透过拨接程序来取得新的接口 (ppp0)

  • 电缆调制解调器 (Cable modem)

主要透过有线电视 (台湾所谓的第四台) 使用的缆线作为网络讯号媒体,同样需要具备调制解调器来连接到 ISP,以取得网络参数来上网。

局域网络使用的设备-以太网络:
1,以太网络的传输协议:CSMA/CD

整个以太网络的重心就是以太网络卡。所以说,以太网络的传输主要就是网络卡对网络卡之间的数据传递而已。 每张以太网络卡出厂时,就会赋予一个独一无二的卡号,那就是所谓的 MAC (Media Access Control) 。

image

图内的中心点为集线器, 各个主机都是联机到集线器,然后透过集线器的功能向所有主机发起联机的。集线器是一种网络共享媒体,什么是网络共享媒体啊?想象一下上述的环境就像一个十字路口,而集线器就是那个路口! 这个路口一次只允许一辆车通过,如果两辆车同时使用这个路口,那么就会发生碰撞的车祸事件啊!那就是所谓的共享媒体。 也就是说,网络共享媒体在单一时间点内, 仅能被一部主机所使用

如何传输:

  1. 监听媒体使用情况 (Carrier Sense):A 主机要发送网络封包前,需要先对网络媒体进行监听,确认没有人在使用后, 才能够发送出讯框;
  2. 多点传输 (Multiple Access):A 主机所送出的数据会被集线器复制一份,然后传送给所有连接到此集线器的主机! 也就是说, A 所送出的数据, B, C, D 三部计算机都能够接收的到!但由于目标是 D 主机,因此 B 与 C 会将此讯框数据丢弃,而 D 则会抓下来处理;
  3. 碰撞侦测 (Collision Detection):该讯框数据附有检测能力,若其他主机例如 B 计算机也刚好在同时间发送讯框数据时, 那么 A 与 B 送出的数据碰撞在一块 (出车祸) ,此时这些讯框就是损毁,那么 A 与 B 就会各自随机等待一个时间, 然后重新透过第一步再传送一次该讯框数据。

看到网络共享媒体在单一时间点内, 仅能被一部主机所使用,是不是疑问为什么大家可以一起上网呢?假如我传输100M的文件,我的 100MB 档案就得要拆成多个小数据报,然后一个一个的传送,每个数据报传送前都要经过 CSMA/CD 的机制。 所以,这个集线器的使用权是大家抢着用的!即使只有一部主机在使用网络媒体时,那么这部主机在发送每个封包间, 也都是需要等待一段时间的 (96 bit time)

2,MAC 的封装格式

上面提到的 CSMA/CD 传送出去的讯框数据,其实就是 MAC !MAC 其实就是我们上面一直讲到的讯框 (frame) 。 只是这个讯框上面有两个很重要的数据,就是目标与来源的网卡卡号,因此我们又简称网卡卡号为 MAC。

你可以把 MAC 想成是一个在网络线上面传递的包裹,而这个包裹是整个网络硬件上面传送数据的最小单位了。 也就是说,网络线可想成是一条『一次仅可通过一个人』的独木桥, 而 MAC 就是在这个独木桥上面动的人。

image

上图中的目的地址与来源地址指的就是网卡卡号 (hardware address, 硬件地址).

硬件地址最小由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF (16 进位法), 这 6 bytes 当中,前 3bytes 为厂商的代码,后 3bytes 则是该厂商自行设定的装置码了

image

特别注意,在这个 MAC 的传送中,他仅在局域网络内生效,如果跨过不同的网域 (这个后面 IP 的部分时会介绍),那么来源与目的的硬件地址就会跟着改变了。 这是因为变成不同网络卡之间的交流了嘛!所以卡号当然不同了.

3, MTU 最大传输单位

标准以太网络讯框所能传送的数据量最大值,我们称为 MTU (Maximum Transmission Unit, 最大传输单位)。

在待会儿会介绍到的 IP 封包中,这个 IP 封包最大可以到 65535 bytes,比 MTU 还要大呢!既然礼物 (IP) 都比盒子 (MAC) 大,那怎么可能放的进去啊?所以啰, IP 封包是可以进行拆解的,然后才能放到 MAC 当中啊!等到数据都传到目的地, 再由目的地的主机将他组装回来就是了。所以啰,如果 MTU 能够大一些的话,那么 IP 封包的拆解情况就会降低, 封包与封包传送之间的等待时间 (前一小节提到的 96 bit time) 也会减少,就能够增加网络带宽的使用啰!

不论你的网络媒体支持 MTU 到多大,你必须要考虑到你的封包需要传到目的地时, 所需要经过的所有网络媒体,然后再来决定你的 MTU 设定才行。就因为这样,我们才不建议你修改标准以太网络的 MTU 嘛!

4,集线器、交换器与相关机制
  • 共不共享很重要,集线器还是交换器?

当一个很忙碌的网络在运作时,集线器 (hub) 这个网络共享媒体就可能会发生碰撞的情况, 这是因为 CSMA/CD 的缘故。那有没有办法避免这种莫名其妙的封包碰撞情况呢?有的,那就使用非共享媒体的交换器即可啊!

交换器与集线器最大的差异,在于交换器内有一个特别的内存, 这个内存可以记录每个 switch port 与其连接的 PC 的 MAC 地址,所以,当来自 switch 两端的 PC 要互传数据时,每个讯框将直接透过交换器的内存数据而传送到目标主机上.

image

A 传送到 D 与 B 传送到 C 都独自拥有 10/100Mbps 的带宽,两边并不会互相影响! 不过,如果是 A 与 D 都传给 C 时,由于 C port 就仅有 10/100Mbps ,等于 A 与 D 都需要抢 C 节点的 10/100Mbps 来用的意思。

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

以太网络上面的传输使用网络卡卡号为基准的 MAC 讯框,配合 CSMA/CD 的标准来传送讯框,这就是硬件部分。在软件部分,我们知道 Internet 其实就是 TCP/IP 这个通讯协议的通称,Internet 是由 InterNIC所统一管理的, 但其实他仅是负责分配 Internet 上面的 IP 以及提供相关的 TCP/IP 技术文件而已。

3.1 IP 封包的封装

目前IP有两个版本。 IPv4 (Internet Protocol version 4, 因特网协定第四版)和IPV6,目前运用最广泛的还是IPV4,所以下面讲的是IPV4。

IP 封包可以达到 65535 bytes 这么大,在比 MAC 大的情况下,我们的操作系统会对 IP 进行拆解的动作。

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

3.2 IP 地址的组成与分级

我们知道 IP (Internet Protocol) 其实是一种网络封包,而这个封包的表头最重要的就是那个 32 位的来源与目标地址! 为了方便记忆,所以我们也称这个 32 bits 的数值为 IP 网络地址就是了。

既然 IP 的组成是 32 bits 的数值,也就是由 32 个 0 与 1 组成的一连串数字!那么当我们思考所有跟 IP 有关的参数时,你就应该要将该参数想成是 32 位的数据喔!

将 32 bits 的 IP 分成四小段,每段含有 8 个 bits ,将 8 个 bits 计算成为十进制,并且每一段中间以小数点隔开,那就成了目前大家所熟悉的 IP 的书写模样了。如:

11111111.11111111.11111111.11111111   ==> 255.255.255.255

IP 最小可以由 0.0.0.0 一直到 255.255.255.255 ,主要分为 Net_ID (网域号码)与 Host_ID (主机号码) 两部份。

11000000.10101000.00000000.11111111     192.168.0.255
|----------Net_ID---------|-host--|
第一组表示IP的等级,第四组为主机号码

在上面的范例当中,前面三组数字 (192.168.0) 就是网域号码,最后面一组数字则称为主机号码。网域相同说明IP在同一网域内,也就是同一局域网内。

IP 在同一网域的意义
  • Net_ID 与 Host_ID 的限制:在同一个网段内,Net_ID 是不变的,而 Host_ID 则是不可重复;Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 ,因为全为 0 表示整个网段的地址 (Network IP)而全为 1 则表示为广播的地址 (Broadcast IP)
  • 在区网内透过 IP 广播传递数据:在同一网域内,这些主机都可以透过 CSMA/CD 的功能直接在区网内用广播进行网络的联机,亦即可以直接网卡对网卡传递数据 (透过 MAC 讯框)。
  • 设定不同区网在同物理网段的情况:在同一个物理网段之内,如果两部主机设定成不同的IP网段,则由于广播地址的不同,导致无法透过广播的方式来进行联机。 此时得要透过路由器 (router) 来进行沟通才能将两个网域连结在一起
  • 网域的大小:当 Host_ID 所占用的位越大,亦即 Host_ID 数量越多时,表示同一个网域内可用以设定主机的 IP 数量越多。
IP 的分级
以二进制说明 Network 第一个数字的定义:
Class A : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 0
          |--net--|---------host------------|
Class B : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 10
          |------net-------|------host------|
Class C : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 110
          |-----------net-----------|-host--|
Class D : 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 1110
Class E : 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 1111

五种分级在十进制的表示:
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
3.3 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

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

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

简单的说,如果你没有安装网络卡在的机器上面, 但是你又希望可以测试一下在你的机器上面设定的服务器环境到底可不可以顺利运作,这个时候怎么办, 嘿嘿!就是利用这个所谓的内部循环网络啦!这个网段在 127.0.0.0/8 这个 Class A,而且默认的主机 (localhost) 的 IP 是 127.0.0.1

IP 的取得方式

主机的 IP 与相关网域的设定方式主要有:

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

例如将第一个 Host_ID 被拿来作为 Net_ID ,所以,整个 Net_ID 就有 25 bits ,至于 Host_ID 则减少为 7 bits 。在这样的情况下,原来的一个 Class C 的网域就可以被切分为两个子域,而每个子域就有『 256/2 - 2 = 126 』个可用的 IP 了。

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

那到底是什么参数来达成子网的切分呢?那就是 Netmask (子网掩码) 的用途了。

以 192.168.0.0 ~ 192.168.0.255 这个网域为范例,将Net_ID都变成1,Host_ID 变成0.

Netmask:   255.255.255.0   <==网域定义中,最重要的参数
Network:   192.168.0.0     <==第一个 IP 该网段的 Network
Broadcast: 192.168.0.255   <==最后一个 IP   Broadcast
可用以设定成为主机的 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

如果我们以 192.168.0.0 ~ 192.168.0.255 这个网段来说,要是给予 Net_ID 是 26 位时,总共分为几段呢? 因为 26-24=2 ,所以总共用掉两个位,因此有 2 的 2 次方,得到 4 个网段。再将 256 个 IP 平均分配到 4 个网段去, 那我们就可以知道这四个网段分别是:

192.168.0.0~192.168.0.63
192.168.0.64~192.168.0.127
192.168.0.128~192.168.0.191
192.168.0.192~192.168.0.255
无层级 IP: CIDR(Classless Interdomain Routing)

我们常常会以 Network 以及 Netmask 来表示一个网域。在上述的偷吃步计算网域方法中,四个网段的写法就可以写成:

192.168.0.0/26  <==因为 Net_ID 共有 26 个 bits
192.168.0.64/26
192.168.0.128/26
192.168.0.192/26

这就是一般网域的表示方法。

3.5 路由概念

我们知道在同一个区网里面,可以透过 IP 广播的方式来达到资料传递的目的。但如果是非区网内的数据呢? 这时就得要透过那个所谓的邮局 (路由器) 的帮忙了!

下列图示当中共有两个不同的网段,分别是 Network A 与 Network B,这两个网段是经由一部路由器 (Server A) 来进行数据转递的

image

PC01 与 PC11通过Net_ID 来发现他们不属于同一网段。主机通过路由表来传动数据,每部主机都有自己的路由表。

  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 接收到这个封包后, 会依据上述的流程,也分析自己的路由信息,然后向后继续传输到正确的目的地主机上头。

上面的案例是一个很简单的路由概念,事实上, Internet 上面的路由协议与变化是相当复杂的,因为 Internet 上面的路由并不是静态的,他可以随时因为环境的变化而修订每个封包的传送方向。

3.6 观察主机路由: route
[root@www ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref  Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0      0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0      0 lo
0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0      0 eth0

当你下达 route 时, 屏幕上说明了这部机器上面共有三个路由规则,第一栏为『目的地的网域』,,例如 192.168.0.0 就是一个网域;最后一栏显示的是 『要去到这个目的地要使用哪一个网络接口!』,例如 eth0 就是网络卡的装置代号。如果我们要传送的封包在路由规则里面的 192.168.0.0/255.255.255.0 或者 127.0.0.0/255.0.0.0 里面时,因为第二栏 Gateway 为 * ,所以就会直接以后面的网络接口来传送出去,而不透过 Gateway !

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

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

当我们想要了解某个IP其实是设定于某张以太网络卡上头时,我们的主机会对整个区网发送出 ARP 封包, 对方收到 ARP 封包后就会回传他的 MAC 给我们,我们的主机就会知道对方所在的网卡,那接下来就能够开始传递数据啰。 如果每次要传送都得要重新来一遍这个 ARP 协定那不是很烦?因此,当使用 ARP 协议取得目标 IP 与他网卡卡号后, 就会将该笔记录写入我们主机的 ARP table 中 (内存内的数据) 记录 20 分钟。

arp 这个指令获取本机的 ARP 表格内的 IP/MAC 对应数据。如果你有特殊需求的话, 也可以利用『 arp -s 』这个选项来定义静态的 ARP 对应!

3.8 ICMP 协定

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

基本上,ICMP 是一个错误侦测与回报的机制,最大的功能就是可以确保我们网络的联机状态与联机的正确性。

ICMP 也是网络层的重要封包之一,不过,这个封包并非独立存在,而是纳入到 IP 的封包中!也就是说, ICMP 同样是透过 IP 封包来进行数据传送的。因为在 Internet 上面有传输能力的就是 IP 封包。

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

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

网络层的 IP 封包只负责将数据送到正确的目标主机去,但这个封包到底会不会被接受,或者是有没有被正确的接收, 那就不是 IP 的任务啦!那是传送层的任务之一。

4.1 可靠联机的 TCP 协议

在前面的 OSI 七层协议当中,在网络层的 IP 之上则是传送层,而传送层的数据打包成什么? 最常见的就是 TCP 封包了。这个 TCP 封包数据必须要能够放到 IP 的数据袋当中才行喔! 所以,我们将图 2.1-4 简化一下,将 MAC, IP 与 TCP 的封包数据这样看:

image

TCP 封包的表头:
image

想详细了解表头的可以看这里:TCP数据报首部

通讯端口

在TCP中,最重要的是来源端口和目的端口。由于是 16 位,因此目标与来源端口最大可达 65535 号 (2 的 16 次方)。不同服务通过不同端口实现。

打个比方:IP 是门牌,TCP 是楼层,真正提供服务的, 是在该楼层的那个人 (程序)!

再举个例子来说,一部主机就好像是一间多功能银行,该银行内的每个负责不同业务的窗口就好像是通讯端口, 而我们民众就好像是 Client 端来的封包。当你进入银行想要缴纳信用卡账单时, 一到门口服务人员就会指示你直接到该窗口去缴纳,当然,如果你是要领钱,服务人员就会请你到领钱的窗口去填写数据, 你是不会跑错的对吧! _。万一跑错了怎么办?呵呵!当然该窗口就会告诉你『我不负责这个业务,你请回去!』

特权端口 (Privileged Ports)

Internet 上面已经有很多规范好的固定 port (well-known port), 这些 port number 通常小于 1024 ,且是提供给许多知名的网络服务软件用的。

另外一点比较值得注意的是,小于 1024 以下的埠口要启动时, 启动者的身份必须要是 root 才行,所以才叫做特权端口。

4.2 TCP 的三向握手
image
  • 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 序号的封包后,就能够建立起这次的联机了。

不论是服务器端还是客户端,都必须要透过一次 SYN 与 ACK 来建立联机,所以总共会进行三次的交谈! 在设定防火墙或者是追踪网络联机的问题时,这个『双向』的概念最容易被忽略, 而常常导致无法联机成功的问题啊!切记切记!

4.3 非连接导向的 UDP 协议

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

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

另外,很多的软件其实是同时提供 TCP 与 UDP 的传输协议的,举例来说,查询主机名的 DNS 服务就同时提供了 UDP/TCP 协议。由于 UDP 较为快速,所以我们 client 端可以先使用 UDP 来与服务器联机。 但是当使用 UDP 联机却还是无法取得正确的数据时,便转换为较为可靠的 TCP 传输协议来进行数据的传输。 这样可以同时兼顾快速与可靠的传输!

4.4 网络防火墙与 OSI 七层协定

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

举例来说,大家都知道 Telnet 这个服务器是挺危险的,而 Telnet 使用的 port number 为 23 ,所以,当我们使用软件去分析要送进我们主机的封包时, 只要发现该封包的目的地是我们主机的 port 23 ,就将该封包丢掉去!

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

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

5 连上 Internet 前的准备事项

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

DNS 这个服务的最大功能就是在进行『主机名与该主机的 IP 的对应』的一项协议。当浏览器输入www.baidu.com,我的计算机首先就会藉由向 DNS 主机查询 www.baidu.com 的 IP 后,再将查询到的 IP 结果回应给我的浏览器, 那么我的浏览器就可以藉由该 IP 来连接上主机啦!

发现了吗?我的计算机必须要向 DNS 服务器查询 Hostname 对应 IP 的信息 喔!那么那部 DNS 主机的 IP 就必须要在我的计算机里面设定好才行,并且必须要是输入 IP 喔,不然我的计算机怎么连到 DNS 服务器去要求数据呢?

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

一组合理的网络设定需要哪些数据呢?

  • IP
  • Netmask
  • Network
  • Broadcast
  • Gateway
  • DNS
    其中,由于 Network 与 Broadcast 可以经由 IP/Netmask 的计算而得到,因此需要设定于你 PC 端的网络参数, 主要就是 IP, Netmask, Default Gateway, DNS 这四个就是了!

如果你是使用 ADSL 拨接来上网的话,上面这些数据都是由 ISP 直接给你的,那你只要使用拨接程序进行拨接到 ISP 的工作之后, 这些数据就自动的在你的主机上面设定完成了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,391评论 2 57
  • title: 网络基础学习总结(1) tags: 网络 categories:笔记 date: 2017-06-1...
    行径行阅读 2,369评论 0 3
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,019评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 12,979评论 6 174
  • [憨笑][憨笑][憨笑] 昨日七夕韵律风, 一直吹到夜三更。 聚欢离恨情难了, 今早黎明意尚浓。 [鼓掌][鼓掌]...
    小车16阅读 95评论 0 0