简要历史1973年,ARPANET核心组成员Vint Cerf和Bob Kahn发表了一篇里程碑论文,阐述了实现分组的端到端交付的协议。
这篇关于传输控制协议(TCP的论文包括:封装、数据报,以及网关的功能。
后来,TCP被划分为两个协议:传输控制协议(TCF)和网际互联协议(IP)。
IP处理数据报的路由选择,而TCP负责高层的一些功能,如分段、重装和差错检测。
这个用来进行网际互联的协议后来就被称为TCP/IP。
TCP/IP协议族简介TCP/IP协议族由5层组成:物理层、数据链路层、网络层、运输层和应用层。
前四层与OSI模型的前四层相对应,提供物理标准、网络接口、网际互联、以及运输功能。
而应用层与OSI模型中最高的三层相对应。
TCP/IP协议族中的各层包含了一些相对独立的协议。
在物理层和数据链路层,TCP/IP并没有定义任何协议。
在网络层TCP/IP支持网际互联协议(IP),而IP又由四个支撑协议组成:ARP、RARP ICMP和IGMP。
在传统上,TCP/IP协议族在运输层有两个运输协议:TCP和UDP,然而现在已经设计出一个新的运输层协议SCTP 以满足新的应用的需要。
IP是主机到主机的协议,即把分组从一个物理设备交付到另一个物理设备。
UDP 和TCP是运输机协议,负责把报文从一个进程(运行着的程序)交付到另一个进程。
编址使用TCP/IP协议的互联网使用3个等级的地址:物理(链路)地址、逻辑(IP)地址以及端口地址。
每一种地址属于TCP/IP体系结构中的特定层。
物理地址物理地址也叫链路地址,是结点的地址,由它所在的局域网或广域网定义。
物理地址包含在数据链路层使用的帧中。
以太网的地址是6字节(48位)长,通常用十六进制记法,如:07:01:02:01:2C:4B。
以太网的地址共3 种:单播、多播和广播。
在单播地址中的第一个字节的最低位0;在多播地址中的第一个字节的最低位是1。
广播地址是48 个1。
逻辑地址因特网的逻辑地址是32位地址,可以用来标志连接在因特网上的每个主机。
在因特网上没有两个主机有相同的IP地址。
同样,逻辑地址也可以是单播地址、多播地址和广播地址。
In ternet被各种路由器和网关设备分隔成很多网段,为了标识不同的网段,需要把32位的IP地址划分成网络号和主机号两部分,网络号相同的各主机位于同一网段,相互间可以直接通信,网络号不同的主机之间通信则需要通过路由器转发。
把所有IP地址分为五类,如下图1所示:图2-1A 类到B类到C 类到D 类到E类到在分类编址的 A 类、B 类、C 类地址中,IP 地址可划分为net-id (网络标识)和 host-id (主机标识)。
对于A 类地址,1字节定义net-id 而3字节定义host-id 。
对于B 类地址,2字节定义net-id ,2字节定义host-id 。
对于C 类地址,3字节定义net-id 而1字节定义host-id 。
D 类地址和E 类地址不划分 net-id 和host-id 。
网络地址是一个地址块的第一个地址,向因特网的其余部分定义这个网络。
路由器就是根据网络地址 来选择分组的路由。
若给出网络地址,我们就能够找出这个地址的类别、地址块以及这个地址块的地址范 围。
这种划分方案有很大的局限性,它对网络的划分是 flat 的而不是层级结构 (hierarchical) 的。
Internet 上的每 个路由器都必须掌握所有网络的信息,随着大量 C 类网络的出现,路由器需要检索的路由表越来越庞大,负担越来越重。
于是提出了新的划分方案,称为CIDR (Classless Interdomain Routing )。
网络号和主机号的划分需要用一个额外的子网掩码( sub netmask )来表示,而不能由IP 地址本身的 数值决定,也就是说,网络号和主机号的划分与这个 IP 地址是A 类、B 类还是C 类无关,因此称为Classless的。
这样,多个子网就可以汇总(summarize )成一个In ternet 上的网络。
IP 地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。
IP 地址和子网掩码还有一种更简洁的表示方法,例如/24,表示IP 地址为,子网掩码的 高24位是1,也就是。
目的地址为,表示本网络内部广播,路由器不转发这样的广播数据包。
目的地址的主机号为全 1,表示广播至某个网络的所有主机,例如目的地址表示广播至网络(假设子 网掩码为)。
端口地址 计算机是多进程设备,即可以在同一时间运行多个进程。
因特网通信的最终目的是使一个进程能够和 另一个进程通信。
为了能够同时发生这些事情,需要有一种方法对不同的进程打上标号,就是说这些进程 需要地址。
在TCP/IP 体系结构中,给一个进程指派的标号叫做端口地址。
TCP/IP 中的端口地址是16位长,通常用 10 进制数表示。
分层数据包介绍 以太网帧图 2-2DA 字段有6字节,是下一站的物理地址(也叫 MAC 地址)。
SA 字段有6字节,是前一站的物理地址。
类型字段有三种值,分别对应 IP 、 ARP 、 RARP 。
携带从上层协议封装起来的数据。
它的最小长度是 46字节,最大长度是 1500 字 节。
ARP RARP 的数据包长度不够 46字节,要在后面补填充位。
最大值1500称为以太网的最大传输单元(MTU ),如果一个数据包从以太网路由到链路上,数据 包的长度大于链路的MTU 了,则需要对数据包进行分片 差错检测信息, 4 字节。
图 2-3ARP 分组的格式如下:16位字段,用来定义运行 ARP 的链路层网络的类型。
以太网是类型 1。
16位字段,指要转换的地址类型。
0x0800位IP 地址。
8 位字段,定义以字节为单位的物理地址长度。
对以太网这个值为 6。
8位字段,定义以字节为单位的逻辑地址长度。
对 I Pv4协议这个值是4。
16位字段,定义分组的类型。
为 1表示ARP 请求,为2表示ARP 应答。
可变长度字段,定义发送端的物理地址。
定义发送端的逻辑地址。
目的地址( DA ) 源地址( SA ) 类型 数据CRC ARP 报文格式如上图 3 所示, 硬件类型 协议类型 硬件长度 协议长度 操作发送端硬件地址 发送端协议地址目标硬件地址目标协议地址 IP 数据报格式定义目标的物理地址。
道目标的物理地址。
定义目标的逻辑(如,对于 IP ) ARP 请求报文,这个字段是全0,因为发送端不知地址。
2-4如上图 4 所示, 版本( VER ) 首部长度( HLEN )IP 数据报的结构包括: 这个 4 位字段定义 这个 4位字段定义 长度是 20 字节,这个字段的值是 5 (5*4=20)。
当选项字段位最大值时,这个字IP 协议的版本。
IP 首部总长度,以4字节为单位计算。
当没有选项时,首部段的值是 15(15*4=60)。
TOS 位是4位子字段,共有5种不同的服务类型。
这个 16 位字段定义了以 字节 计的数据报总长度(首部加上数据) 传来的数据长度,可以从总长度减去首部长度。
总长度字段是16 位,因此 IP数据报的长度限制是 65535(216- 1)字节。
这个16位字段与源IP 地址一起唯一地定义这个数据报。
IP 协议使用一个 计数器 来标志数据报,当IP 协议发送数据时,就把这个计数器的当前值复制到标识字段中, 并加 1。
当数据报被 分片时,标识字段的值就 复制 到所有的分片中。
换言 之, 所有的分片具有相同的标识号 ,即原始数据报的标识号。
在终点重装数据 报时,终点就知道所有具有相同标识号的分片必须组装成一个数据报。
3 位字段。
第一位保留。
第二位为不分片位,为 1 表示不对数据报进行分片;为 0 表示在需要时对数据报进行分片。
第三位为分片位, 为 1 表示这个数据报不是 最后的分片,在其后还有分片;为 0 表示这个数据报是最后的分片。
分片偏移 (Fragment Offset )这个 13 位字段表示该分片在整个数据报中的相对位置, 以 8 字节为度量单位。
用来控制数据报所通过的最大路由跳数,这个生存时间的单位不是秒,而是 ( hop )。
服务类型( DS ) 总长度标识 (Identification)标志( Flags )生存时间( TTL ) 。
要找出上层 协议 检验和源地址 目的地址这个8位字段定义使用IP 层服务的高层协议。
女口: TCR UDP 、ICMP 和IGMP 等。
IP 分组中的检验和只在首部而不在数据部分进行。
因为,所有将数据封装在IP数据报中的高层协议, 都有覆盖整个分组的检验和; 其次,,每经过一个路由器, IP 数据报的首部就要改变一次,但数据部分不变。
因此检验和只对发生变化的 部分进行检验。
这个32位字段定义源点的IP 地址。
在IP 数据报从源主机发送到目的主机的时 间内,这个字段必须保持不变。
这个32位字段定义了终点的IP 地址。
在IP 数据报从源主机发送到目的主机的 时间内,这个字段必须保持不变。
ICMP 报文格式 类型代码检验和 (icmpchksum)8位字段,定义ICMP 报文的类型。
ICMP 报文的类型有:终点不可达、源点抑制、超 时、参数问题、改变路由、回送请求或回答、时间戳请求或回答、地址掩码请求或 回答、路由器询问和通告。
8 位字段,指明了发送这个特定报文类型的原因。
16位字段。
在ICMP 中,检验和的计算覆盖了整个报文(首部和数据)。
ICMP 回送请求或回答报文头格式如下图5所示: 图 2-5ICMP 超时报文头格式如下图 7所示:图2-7图2-8类型8位字段,定义了查询、成员关系报告、退出报告三种报文类型, 类型值分别为0x11、0x16、 0x17。
最大响应时间8位字段,定义了查询必须在多长时间内回答。
它的值以十分之一秒位单位。
在查询报文中这个值不是零,但在其他两种报文中则置为零。
检验和 组地址16位字段,检验和在 8字节的报文上计算。
在一般查询报文中这个字段的值为0,在特殊查询报文、成员关系报告报文以及退出报告报文中定义 groupid (组多播地址)。
UDP 用户数据报首部格式图2-9UDP 数据报格式如上图9所示。
用户数据报有8个字节的固定首部。
源端口号 16位字段,定义源主机上运行的进程所使用的端口号。
目的端口号 16位字段,定义目的主机上运行的进程使用的端口号。
长度 16位字段,定义了用户数据报的总长度,首部加上数据。
检验和16位字段,UDP 的检验和包括三部分:伪首部、UDP 首部以及从应用层来的数据。
位首部是IP 分组的首部的一部分,包括:源IP 地址、目的IP 地址、8位协议和16位UDP 总长度。