Tcp/ip

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

osi tcp/ip protocol

  1. TCP/IP 将应用、表现、会谈三层整合成一个应用层,在应用层上面可以实作的程序协议有 HTTP, SMTP, DNS 等等。
  2. 传送层则没有变,不过依据传送的可靠性又将封包格式分为连接导向的 TCP 及非连接导向的 UDP 封包格式。
  3. 网络层也没有变,主要内容是提供了 IP 封包,并可选择最佳路由来到达目标 IP 地址。
  4. 数据链结层与物理层则整合成为一个链结层,包括定义硬件讯号、 讯框转位串的编码等等,因此主要与硬件 (不论是区网还是广域网) 有关。

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) 啦!

csmacd

CSMA/CD 搭配上述的环境,它的传输情况需要有以下的流程:

  1. 监听媒体使用情况 (Carrier Sense):A 主机要发送网络封包前,需要先对网络媒体进行监听,确认没有人在使用后, 才能够发送出讯框;

  2. 多点传输 (Multiple Access):A 主机所送出的数据会被集线器复制一份,然后传送给所有连接到此集线器的主机! 也就是说, A 所送出的数据, B, C, D 三部计算机都能够接收的到!但由于目标是 D 主机,因此 B 与 C 会将此讯框数据丢弃,而 D 则会抓下来处理;

  3. 碰撞侦测 (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 的封装格式

mac
目的地址与来源地址: 网卡卡号 (hardware address, 硬件地址)

Time To Live(ttl):

  • 对于默认网关为路由器的PING,其TTL值就是最大值255;
  • 对于Windows主机,其默认值为128;
  • 对于Linux或Unix主机其默认值为64;
  • 因此可以通过不同的默认TTL值判断设备的类型。

IP 封包的封装

ip package
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 当中