把四层摊开来看,地址的位置是明确的:它属于负责找路的那一层,也就是网络层。往上一层关心的是连接和端口,往下一层关心的是物理介质上的收发。这三层各自用不同的标识:上面用端口区分同一台设备上的不同服务,中间用地址区分网络里的不同设备,下面用网卡标识区分同一段线缆上的不同硬件。三个标识各管一段范围,互不替代。代理IP的转发动的是中间这一层。
三层标识各管什么
端口解决的是同一台设备上多个服务怎么区分,地址解决的是数据要送到哪一台设备,网卡标识解决的是同一段物理介质上哪块硬件收。范围从大到小依次收窄,最上层的标识作用范围最广,最下层的最小。这三层标识之间没有换算关系,各自独立维护。同一台设备换一个接入网络,地址变了,端口和网卡标识不变;换一块网卡,网卡标识变了,地址和端口不变。正因为互不牵动,配置的时候才能只改需要改的那一项。
| 层 | 标识 | 作用范围 |
|---|---|---|
| 传输层 | 端口 | 本机内部区分服务 |
| 网络层 | 地址 | 整个网络里区分设备 |
| 接口层 | 网卡标识 | 同一段介质上区分硬件 |
为什么不能用一层管完
如果只用网卡标识,设备换一块网卡就找不到自己了,而且它的作用范围只在本段介质内,跨不过去。如果只用端口,它离开本机就没有意义。地址的性质正好卡在中间:作用范围够大,又能跟着设备移动。
往上一层关心什么
传输层关心的是这条连接还在不在、顺序对不对、丢了要不要重发。这些事跟走哪条路没有关系,所以单独放在上面一层处理。代理IP的转发程序通常同时处理这两层:它既要知道往哪送,也要维护这条连接的状态。
往下一层关心什么
接口层只管把数据变成电信号或者无线电波发出去,以及从介质上收回来。它不关心内容是什么,也不关心目标在哪。地址在这一层会被翻译成对应的网卡标识,然后交给硬件发出。
端口、地址、网卡标识,三个标识各管一段范围。
地址的性质卡在中间:范围够大,又能跟着设备移动。
三层分工清楚,替换其中一层不影响其余。代理IP的转发落在中间这一层。
