TCP/IP模型是计算机网络的事实标准,它在历史上出现得也比国际标准OSI模型要早.因为在日本大学院的专攻就是网络工学,再加上过去几年担当塾讲师,讲过多轮计算机网络的课,对各层的功能,主要协议和设备等都有一些基本的了解.
TCPIP详解一共有3卷,我手上有英文原版,也有中文翻译版,阅读以译本为参考,然后每卷单列一个子目录。
协议的定义: 国家事务或外交场合的正式程序或规则系统.
不同厂商,不同型号的计算机之间也需要进行数据交换,它们也需要一系列通用的协议来完成指定任务.所以就需要TCP/IP参考模型.
大多数用户所熟悉的IP地址,是IPv4地址,一般采用点分十进制。
与之相对的,是在IPv6中,地址长度从32位扩展到128位,它使用的是8段四位十六进制数,每个字段由冒号: 分隔.并且它也有一些简化的书写方法.
### 基本的IP地址结构
根据IPv4地址长度,可以计算它的地址空间大小为$2^{32}=4,294,967,296$,而IPv6的地址空间为$2^{128}=340,282,366,920,938,463,463,374,607,431,768,211,456$.
所以势必要进行地址分块,才能方便使用.
为了在茫茫互联网世界中定位到某一台电脑,需要先找到它所在的网络,(因为互联网本身就是由类型不同,规模不同的网络组成的),所以IPv4地址也反映了这一要素,它分为网络号和主机号.
早期将IPv4地址分为ABCDE这5类,列表如下:
类别 | 网络号 | 主机号 | 特征 | 网络数 | 主机数 |
---|---|---|---|---|---|
A | 8位 | 24位 | 网络号以0开头 | 128 | 16,777,216 |
B | 16位 | 16位 | 网络号以10开头 | 16384 | 65536 |
C | 24位 | 8位 | 网络号以110开头 | 2097152 | 256 |
D | 网络号以1110开头,用于组播 | NA | NA | ||
E | 网络号以1111开头,保留地址 | NA | NA |
补充说明:
有些地址通常不作为单播地址使用,比如地址块中的第一个和最后一个地址,前者用于表示该网络,后者表示网络广播地址.
但这种分类方法慢慢出现了新问题,A类和B类网络号规模太大,浪费了许多主机号(太多用不完),而C类规模较小,不能提供足够的主机号.
为了解决这一问题,在保持ABC类网络号集中分配的前提下,各站点的管理员获得权利进一步划分子网络号.但同时也带来了新问题,之前的ABCDE分类方法只要知道网络号,就知道主机号位数了,现在管理员是如何划分子网络的需要反映到路由器和主机中.即只有被划分子网的网络中的主机和路由器知道子网结构.
这里给出了一个示例,左右两个以太网都是子网络,按ABCDE分类法,它们属于B类网络号,即128.32.x.x.
外网的流量先经过边界路由器(这里路由器对外的IP地址为137.164.23.30),因为下面连着2个子网络,所以路由器要区分流向2个子网络的流量.它要找到子网ID.
子网掩码是一台主机或路由器所使用的分配位,为了确定子网ID.除了用二进制表示外,一般更常用的方式是/xx(范围是1~32)
上面的例子里,网络管理员选择的子网掩码是255.255.255.0,即/24.每个子网可以连接256-2=254台主机.
子网掩码中某位的1表示IP地址的对应位与一个地址的网络/子网络部分对应,
子网掩码中某位的0表示IP地址的对应位与一个地址的主机号部分对应.
链路层的目的是为IP模块发送和接收IP数据报(即PDU),在L2链路层可以携带一些IP辅助协议,比如ARP.
TCP/IP支持多种不同的链路层,即该层所处的局域网,它于网络硬件类型有关,常见的有以下几种:
这几种以第1,4和5种最为常见.
在L2层,我们使用帧(Frame)来与其他层的PDU进行区分.帧格式支持可变帧长度,范围是64Bytes到1518Bytes,上限称之为MTU(最大传输单元).
关于帧最小为64Bytes的解释,有兴趣可以点开看一下:
以太网标准是1980年首次发布,并在1982年加以修订,第一个常见格式的以太网是10Mb/s以太网,被IEEE采纳被经过轻微修改成为802.3标准.
它的结构是,一个或多个站(即主机)组成的共享一个电缆段的区域.因为线路共享,为了减少冲突,采用了CSMA/CD机制,可以协调哪些计算机可以访问共享介质,不需要其他特殊协议或同步.
CSMA/CD的处理流程如下:
待补充
接下来是第2卷,内容是TCP/IP的具体实现,它有32章之多.