- TCP/IP 将应用、表现、会谈三层整合成一个应用层,在应用层上面可以实作的程序协议有 HTTP, SMTP, DNS 等等。
- 传送层则没有变,不过依据传送的可靠性又将封包格式分为连接导向的 TCP 及非连接导向的 UDP 封包格式。
- 网络层也没有变,主要内容是提供了 IP 封包,并可选择最佳路由来到达目标 IP 地址。
- 数据链结层与物理层则整合成为一个链结层,包括定义硬件讯号、 讯框转位串的编码等等,因此主要与硬件 (不论是区网还是广域网) 有关。
TCP/IP 如何运作:
我们就拿妳常常连上的 Yahoo 入口网站来做个说明好了,整个联机的状态可以这样看:
应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter]。此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层;
应用层:由应用层提供的 HTTP 通讯协议,将来自浏览器的数据报起来,并给予一个应用层表头,再向传送层丢去;
传送层:由于 HTTP 为可靠联机,因此将该数据丢入 TCP 封包内,并给予一个 TCP 封包的表头,向网络层丢去;
网络层:将 TCP 包裹包进 IP 封包内,再给予一个 IP 表头 (主要就是来源与目标的 IP 啰),向链结层丢去;
链结层:如果使用以太网络时,此时 IP 会依据 CSMA/CD 的标准,包裹到 MAC 讯框中,并给予 MAC 表头,再转成位串后, 利用传输媒体传送到远程主机上。
网络线: 同轴电缆线 -> 双绞线(10BASE-T 100BASE-T)
以太网络的网络线接头 (跳线/并行线):
RJ-45:
接头名称 蕊线顺序 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
568A | 白绿 | 绿 | 白橙 | 蓝 | 白蓝 | 橙 | 白棕 | 棕 |
568B | 白橙 | 橙 | 白绿 | 蓝 | 白蓝 | 绿 | 白棕 | 棕 |
以太网络的传输协议:CSMA/CD
整个以太网络的重心就是以太网络卡,以太网络的传输主要就是网络卡对网络卡之间的数据传递而已。MAC
: 每张以太网络卡出厂时,就会赋予一个独一无二的卡号,那就是所谓的 MAC
(Media Access Control) 啦!
CSMA/CD 搭配上述的环境,它的传输情况需要有以下的流程:
监听媒体使用情况 (Carrier Sense):A 主机要发送网络封包前,需要先对网络媒体进行监听,确认没有人在使用后, 才能够发送出讯框;
多点传输 (Multiple Access):A 主机所送出的数据会被集线器复制一份,然后传送给所有连接到此集线器的主机! 也就是说, A 所送出的数据, B, C, D 三部计算机都能够接收的到!但由于目标是 D 主机,因此 B 与 C 会将此讯框数据丢弃,而 D 则会抓下来处理;
- 碰撞侦测 (Collision Detection):该讯框数据附有检测能力,若其他主机例如 B 计算机也刚好在同时间发送讯框数据时, 那么 A 与 B 送出的数据碰撞在一块 (出车祸) ,此时这些讯框就是损毁,那么 A 与 B 就会各自随机等待一个时间, 然后重新透过第一步再传送一次该讯框数据。
Q:我的计算机明明没有被入侵,为何我的数据会被隔壁的计算机窃取:多点传输
透过上述的流程,我们只要在 B 计算机上面安装一套监听软件,这套软件将原本要丢弃的讯框数据捉下来分析,并且加以重组, 就能够知道原本 A 所送出的讯息了。这也是为什么我们都建议重要数据在因特网上面得要『加密』后再传输!
Q:既然共享媒体只有一个主机可以使用,为何大家可以同时上网:
由于标准的讯框数据在网络卡与其他以太网络媒体一次只能传输 1500bytes,因此我的 100MB 档案就得要拆成多个小数据报,然后一个一个的传送,每个数据报传送前都要经过 CSMA/CD 的机制。即使只有一部主机在使用网络媒体时,那么这部主机在发送每个封包间, 也都是需要等待一段时间的 (96 bit time)!
Q:讯框要多大比较好?能不能修改讯框?:
如上所述,那么讯框的大小能不能改变呢?因为如果讯框的容量能够增大,那么小数据报的数量就会减少, 那每个讯框传送间的等待就可以减少了!是这样没错,但是以太网络标准讯框确实定义在 1500 bytes, 但近来的超高速以太网络媒体有支持 Jumbo frame (巨型讯框) 的话,那么就能够将讯框大小改为 9000bytes 哩!但不是很建议大家随便修改啦。
MAC 的封装格式
目的地址与来源地址: 网卡卡号 (hardware address, 硬件地址)
Time To Live(ttl):
- 对于默认网关为路由器的PING,其TTL值就是最大值255;
- 对于Windows主机,其默认值为128;
- 对于Linux或Unix主机其默认值为64;
- 因此可以通过不同的默认TTL值判断设备的类型。
IP 封包的封装
Protocol:
IP | 内的号码 封包协议名称(全名) |
---|---|
1 | ICMP (Internet Control Message Protocol) |
2 | IGMP (Internet Group Management Protocol) |
3 | GGP (Gateway-to-Gateway Protocol) |
4 | IP (IP in IP encapsulation) |
6 | TCP (Transmission Control Protocol) |
8 | EGP (Exterior Gateway Protocol) |
17 | UDP (User Datagram Protocol) |
- 你只要知道 IP 表头里面含有: TTL, Protocol, 来源地址与目标地址也就够了!而这个 IP 表头的来源与目标 IP ,以及那个判断通过多少路由器的 TTL ,就能了解到这个 IP 将被如何传送到目的端吶。
ARP
当我们想要了解某个 IP 其实是设定于某张以太网络卡上头时,我们的主机会对整个区网发送出 ARP 封包, 对方收到 ARP 封包后就会回传他的 MAC 给我们.1
2
3
4
5$ arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.1.100 ether 00:01:03:01:02:03 C eth0
192.168.1.240 ether 00:01:03:01:DE:0A C eth0
192.168.1.254 ether 00:01:03:55:74:AB C eth0
选项与参数:
- -n :将主机名以 IP 的型态显示
- -d :将 hostname 的 hardware_address 由 ARP table 当中删除掉
- -s :设定某个 IP 或 hostname 的 MAC 到 ARP table 当中