网络篇三---以太网和tcp/ip协议

来源:互联网 发布:动态最优化基础ppt 编辑:程序博客网 时间:2024/05/17 05:56
1、以太网络:一种网络硬件技术,经过发展,已经是一项公认的标准介面了,如此一来,大家都可以依据这个标准来配置与开发自己的硬件, 只要硬件符合这个标准,理论
上,他就能够加入以太网络的世界
2、INTERNET:以软件技术将硬件整合,该网络系统称为 ARPANET, 这个咚咚就是目前熟知的 TCP/IP 技术的雏形了!在 1975 年左右, ARPANET 已可以在常见
的 Ethernet 与 Token-Ring 等硬件平台底下互通数据了。DARPA 在 1980 年正式推出 TCP/IP 技术后, 由於想要推展此项技术,因此
与柏克莱 (Berkeley) 大学合作,将 TCP/IP 植入著名的 BSD Unix 系统内, 由於大学乃是未来人才数据库的培养处,所以, TCP/IP 这
个技术便吸引越来越多使用者的投入, 而这种连接网络的技术也被称之为 Internet 。
TCP/IP 这个 Internet 的通讯协议也是有标准的,那就是底下的网站所提供的基本文件∶ http://www.rfc-editor.org/;透过这些文件的辅助,任何人只要会写程序语言的话,就有可能发展出自己的 TCP/IP 软件, 并且连接上 Internet 。
3、硬件就属『以太网络』最为常见, 软件当然就是 TCP/IP 这个 Internet 最通用的通讯协议;
4、目前办公室内部的以太网络多是利用集线器以及交换器(Hub/Switch)做为中心, 利用星形连线达成网络环境的一种方式,因此网络线是一个很重要的媒体
5、在以太网络内,我们就是以 MAC (Media Access Control, 媒体存取控制)来管理数据传送的。 而 MAC 其实就是一个讯框( frame ), 你可以把他想成是一个在网络线上
面传递的包裹, 而这个包裹是整个网络硬件上面传送数据的最小单位;
6、这个 MAC 当中,最重要的就是那个 6 Bytes 的目的与来源位址了! 事实上,在所有的以太网络卡当中都有一个独一无二的网络卡卡号, 那就是上头的『目的与来源位址』
,这个位址是硬件位址( hardware address ), 共有 6 bytes ,分别由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF, 这 6 bytes 当中,前 3bytes 为厂商的代码,后 3bytes
则是该厂商自行配置的装置码了。 在 Linux 当中,你可以使用 ifconfig 这个命令来查阅你的网络卡卡号喔! 不过,由於 MAC 主要是与网络卡卡号有关,所以我们也常常将 MAC
作为网络卡卡号的代称。 特别注意,在这个 MAC 的传送中,他仅在区域网络内生效;
7、这个 MAC 讯框可以容纳多大的数据啊??在正规的以太网络当中, 就如同上图三所标示的,一个讯框标准容量最大可达 1500Bytes;
8、Hub 就是网络共享媒体, Hub 仅是将所有来自 PC 的 frame 再次送出去给所有的 PC 而已,所以他是个共享媒体。
9、当来自 switch 两端的 PC 要互传数据时, 每个 frame 将不会透过 CSMA/CD 的监听,而是透过 switch 直接将该 frame 送到目标主机上头去呐! 也就是说, switch 不是个
共享媒体,且 switch 的每个端口 (port) 都具有独立的频宽喔! 举例来说,10/100 的 Hub 上连结 5 部主机,那么整个 10/100Mbps 是分给这五部主机的, 所以这五部主机总共
只能使用 10/100Mbps 而已。那如果是 switch 呢?由於『每个 port 都具有 10/100Mbps 的频宽』, 所以就看您当时的传输行为是如何罗!举例来说,如果是底下的状况时,每个连线都是 10/100 Mbps 的;
10、主机只要能够取得正确的 IP 与相关参数配置时,你就可以连上 Internet 了, 根本不管你的网络硬件是以太网络还是光纤网络;而且,你主机的操作系统是啥,Internet 也是不管的! 这是为什么呢?因为网络的传输是有分层架构的,每个分层 (layer) 是可以独立的。 同时每个分层都有独自的标准可供依循,例如在网络媒体的硬件部分就可以参考 IEEE 的 802.3 的标准! 如此一来,大家都可以在自己的分层当中找到相关的标准来配置自己的数据,如此网络连结就变的更容易了。
11、在上述的七层协议当中,前两层(实体与数据连接层)主要就是由一些硬件标准所规范出来的, 像我们前一小节提到的以太网络之 MAC 讯框相关的格式,以及一些类似以太网络线接头规范、 CSMA/CD 的技术等等,都是在前两层进行规范的。至於网络层与传送层则与 TCP/IP 有关。我们知道目前的 Internet 相关的 IP 与 TCP 封包格式是由 Internet Network && Information Center (INTERNIC) 所统一整理与维护的,至於 TCP/IP 的标准则主要以 Request For Comment (RFC) 技术报告的形式公开。 而会谈、表现与应用层则主要与操作系统及应用程序有关。
12、我们以常见的 WWW 浏览器来进行说明好了。 假设你想要由奇摩雅虎(tw.yahoo.com)下载一个大於 10Mbytes 的文件, 那么你必须要由你的主机打开浏览器,并且输入相关的网址列后才能开始下载,对吧! 不过,我们知道由於网络媒体的关系,标准以太网络的硬件最大仅能支持 1500 bytes 的讯框大小, 而我要去奇摩雅虎时,必须要知道奇摩雅虎那部主机的 IP 才行,而我们的浏览器使用的是 TCP 的封包格式。这样一层一层下来,你可以将各个分层想成是一个一个的大袋子, 而且每个袋子都必须要包含在下一个袋子内,例如 IP 的袋子必须要装在 MAC 讯框的袋子内。
所以,由於最后被传送的袋子(实体层)的限制,我必须要将 10Mbytes 的文件先切成数个小包, 然后将这些小包给他包到 TCP 的袋子内,这个袋子记载了我的数据内容。
然后这个袋子还要装到 IP 这个袋子内,IP 这个袋子会记录我的住址以及要传送到的目的地的住址,最后再将这个 IP 的袋子装到 MAC 的讯框袋子内, 这个袋子就记录了可以在同一区域内传递袋子的网卡卡号了。
13、我们现在知道要有网络的话,必须要有网络相关的硬件,而目前最常见的网络硬件介面为以太网络, 包括网络线、网络卡、Hub/Switch 等等。而以太网络上面的传输使用网络卡卡号为基准的 MAC 讯框, 配合 CSMA/CD 的监听技术来传送讯框,这是硬件部分。那么在软件部分,我们知道 Internet 其实就是 TCP/IP 这个通讯协议的通称,Internet 是由 INTERNIC 所统一管理的, 但其实他仅是负责分配 Internet 上面的 IP 以及提供相关的 TCP/IP 技术文件而已, 另外,在 TCP/IP 上面还有很多的应用程序,包括 FTP, HTTP, EMAIL 等等的技术。之后这个 MAC 的大袋子就会被带到下个传递点去, 当然啦, MAC 这个袋子的传递是需要符合 CSMA/CD 以及以太网络的相关定义的喔! 当传到目的地后,对方会一个袋子一个袋子的解开,最后拿到他们的数据。不过,由於我的 10Mbytes 已经被分成多个小袋子了,所以每个小袋子内需要有序号,这样当所有的小袋子都到达目的地后, 对方才可以依照这些序号将所有小袋子内的数据给他整合成为原来的数据
14、电子讯号只有 0 跟 1 啊,所以在网络单位的计算上,一般通常是以二进位的 bit 为单位的。那么这个 bit 与我们通常用来计算文件大小的单位 bytes 有什么关连性?其实:

    1byte = 8bits

所以啦,一般来说,我们看到的网络提供者 (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 喔
15、MAC 是 Media Access Control (媒体存取控制),我们在前小节的 图三已经介绍过该讯框的数据格式, 且 MAC 常用来做为硬件位址 (Hardware address) 的代称。我们自己主机上面的MAC 很好解决, 假设您的网络卡仅有一张,则 Linux 系统内网卡的代号默认由 eth0 开始编号;
16、我们知道讯框是在两张网络卡之间传讯的, 那我如何知道其他主机的网络卡卡号呢?此时就得要透过 ARP (Address Resolution Protocol) 的帮忙了。 由於 TCP/IP 的通讯协议内大多仅需要了解 IP 即可,但讯框却是透过 MAC 来传递, 因此 IP 与 MAC 就得要透过一个解析的功能罗!那就是 ARP。
17、当我们的主机想要找出目标 IP 时,就会对整个区域网络进行广播封包(broadcast)的传送, 这个广播封包可以对所有区域网络内的计算机要求回报他的 IP 与 MAC , 当目标 IP 看到这个广播封包时,就会回应您主机相关的 MAC 信息,如果非目标主机接到这个封包, 就会主动的忽略!如此一来,你就可以取得目标主机的 MAC 罗! 而这个目标主机的 MAC 就会被记录到你的主机内的 ARP table (ARP table 在内存中), 不过还是要再次的提醒, MAC 是不能跨路由的;
18、P 是一种数据封包的格式,这个 IP 数据封包最大可以到达 65535 bytes , 然而就如同图三以太网络讯框的数据所示, 由於标准以太网络讯框可包含的数据最大仅达 1500 bytes , 并且依照不同的网络媒体而有不同的 MAC 讯框大小,我们前面也谈到的 OSI 七层协议当中, 由於 IP 封包必须要放到 MAC 讯框当中,因此 IP 封包在 Internet 上面应该是不可能达到 65535 bytes 这个值的(因为必须小於 MAC 讯框所能容许的最大值)。另外, 由於网络连线过程当中封包所经过的网络媒体各不相同,因此 MAC 讯框大小当然也不同, 而为了让 IP 封包可以适用在所有的网络媒体讯框当中,因此, IP 封包是可以被『重组的』!
19、主机的 IP 与相关网域的配置方式主要有:固定制手动配置(static): 我们可以取得固定的 Public IP ,取得的管道可以是学术网络、或者是向 ISP 注册固定的 Public IP。不过,在使用固定的 Public IP 时,你必须要手动的在你的操作系统配置好网络参数我们知道 MAC 讯框表头 (将他想成是一个信封袋外面的记录数据) 当中最重要的就是网络卡卡号 (hardware address) 这个咚咚!(参考图三 ),那么 IP 表头最重要的是什么呢?呵呵!那就是 IP 位址 (address) 了
20、IP 就只有 Public 与 Private IP 这两种
21、IP 封包除了数据之外,他的表头数据 (head) 是长怎样呢? 在图三的 MAC 讯框表头里面最重要的莫过於那个网络卡硬件位址, 那么在 IP 表头里面当然就以来源与目标的 IP 位址为最重要。
22、网络层的协议只是提供路由的判断以确定封包的传送路径, 但是这些协议并没有管理可能由於网络媒体的损坏问题,或者是网络的负荷过重以及其他不可预期的情况, 而造成封包损毁或者被丢弃的状态。为了使封包的传送过程中更具有稳定性与可靠性, 我们就得提供一套机制来让数据可以没有错误的到达到目的地。
23、在 TCP/IP 这个协议组合当中,TCP ( Transmission Control Protocol ) 就是用来做为传送的一个协议,当然啦,还有一个 UDP 的协议呢!在 TCP 这个协议当中, 他提供了较为稳定而且可靠的连线状态,至於 UDP 则是一个比较没有这么可靠的连线型态了
24、IP 与路由仅能将数据封包传送到正确的目标而已, 但是这个目的地是否真的能够收下来这个封包?那可就不一定了。要确认该数据能否正确的被目的端所接收, 就必须要在数据封包上面多加一些参数来判断才行。
25、在网络层的 IP 之上则是传送层,而传送层的数据打包成什么? 最常见的就是 TCP 封包了。这个 TCP 封包数据必须要能够放到 IP 的数据袋当中才行喔! 所以,我们可以将 MAC, IP 与 TCP 的封包数据这样看:各封包之间的相关性。所以说,IP 除了表头之外的 Data 内容其实就是 TCP 封包的表头与内容;而 MAC 的 Data 内容, 就是一个完整的 IP 封包数据!这也是我们上头提到的,最终还是得以 MAC 能够支持的最大容许容量, 才能够决定 IP 与 TCP 封包是否需要再进行分段的工作;
26、TCP 封包的表头数据,各个项目以 Source Port, Destination Port 及 Code 算是比较重要的项目
(1)Source Port & Destination Port ( 来源端口 & 目标端口 )
什么是端口(port)?我们知道 IP 封包的传送主要是藉由 IP 位址连接两端, 但是到底这个连线的通道是连接到哪里去呢?没错!就是连接到 port 上头啦! 举例来说,鸟站 (http://linux.vbird.org) 有开放 WWW 服务器, 这表示鸟站的主机必须要启动一个可以让 client 端连接的端口,这个端口就是 port , 中文翻译成为端口。同样的,用户端想要连接到鸟哥的鸟站时,就必须要在 client 主机上面启动一个 port ,这样这两个主机才能够利用这条『通道』来传递封包数据喔! 这个目标与来源 port 的纪录,可以说是 TCP 封包上最重要的参数了! 下个小单元我们还会继续介绍。
(2)Code (Control Flag, 控制标志码)
当我们在进行网络连线的时候,必须要说明这个连线的状态,好让接收端了解这个封包的主要动作。 这可是一个非常重要的控制码喔!这个栏位共有 6 个 bits ,分别代表 6 个控制码,若为 1 则为启动。分别说明如下:

    URG(Urgent):若为 1 则代表该封包为紧急封包, 接收端应该要紧急处理,且图十二当中的 Urgent Pointer 栏位也会被激活。

    ACK(Acknowledge):若为 1 代表这个封包为回应封包, 则与上面提到的 Acknowledge Number 有关。

    PSH(Push function):若为 1 时, 代表要求对方立即传送缓冲区内的其他对应封包,而无须等待缓冲区满了才送。

    RST(Reset):如果 RST 为 1 的时候, 表示连线会被马上结束,而无需等待终止确认手续。这也就是说,这是个强制结束的连线, 且发送端已断线。

    SYN(Synchronous):若为 1 , 表示发送端希望双方创建同步处理,也就是要求创建连线。通常带有 SYN 标志的封包表示『主动』要连接到对方的意思。

    FIN(Finish):若为 1 ,表示传送结束, 所以通知对方数据传毕,是否同意断线,只是发送者还在等待对方的回应而已。

其中比较常见到的应该是 ACK/SYN/FIN 等,这三个控制码是务必要记下来的, 这样未来在谈到防火墙的时候,您才会比较清楚为啥每个 TCP 封包都有所谓的『状态』条件。
(3) port 主要是由主机的程序所触发的,网络上面的其他 client 端, 可以通过这个端口直接与启动该 port 的程序相互沟通, 而达到数据传输的目的。我们都知道二进位
程序 (binary program) 才是真的主机认识的程序命令, 那么我们要启动网络服务时,其实也就是启动一个 program 就是了。但是网络上面如何与您的 program 互通数据呢?就是透过在网络介面上面的 port 来达成的。
(4)必须要注意的是 port 的沟通是双向的, 举例来说,当我们要使用浏览器连接到奇摩雅虎查阅数据时, 我们必须要使用 client 端主机的浏览器连接到 Yahoo 主机的 WWW 服务器软件上面。 由於是透过网络介面,所以我们的浏览器也必须要启动一个 port 并且透过这个 port 连接到 Yahoo 主机的 WWW port 上头去,然后透过 TCP 封包上头各项参数的确认后, 才能够创建连线,并进一步开始传输数据。
(5)服务器时激活的 port number 啦。这些 port number 通常小於 1024 , 且是提供给许多知名的网络服务软件用的。在我们的 Linux 环境下, 各网络服务与 port number 的对应默认给他写在 /etc/services 文件内喔! 不过如果是 client 端的话,由於 client 端都是主动向 server 端要数据, 所以 client 端的 port number 就使用随机取一个大於 1024 以上且没有在用的 port number 来进行连线。
(6)小於 1023 以下的端口要启动时, 启动者的身份必须要是 root 才行;
27、每个封包的基本内容有哪些数据呢?这就得要谈论到 Socket Pair ( 成对的端口 )了! 当本机发送出封包时,主机是根据 IP 封包内的 IP 位址来判别来源与目的地的行进路线, 并且,也需要 TCP 封包内的 port number 来告知
Client 与 Server 是以哪一个端口来进行连线的对吧! 所以呢,一个连线过程所包含的底下这些咚咚就称为成对插槽 (socket pair) 了:
    来源 IP ( Source Address )
    目的 IP ( Destination Address )
    来源端口 ( Source Port )
    目的端口 ( Destination Port )






11、
原创粉丝点击