不同协议所属的层次如下图:
IP
IP地址一开始是分类编址,到了20世纪90年代更换为无分类编址。分类编址时IP地址共有五类ABCDE。对于ABC类地址,IP地址都可以划分为网络标识和主机标识。从一个IP地址中提取网络地址要用网络掩码和IP地址进行与运算。IP地址最初是两级编址,但是这会存在极大的地址浪费,并且不利于管理。在子网划分中,一个网络被划分成若干个较小的子网络,其中每个子网都有自己的子网掩码。
每个网络中都有两个特殊地址:主机标识为0表示网络地址,不指向某个主机;主机标识全为1表示直接广播地址,所有主机都会接受这种类型的目的地址的分组。
IP是一种不可靠的无连接数据报协议,分组可能在四种情况下丢失:1)校验失败;2)TTL超时;3)途中路由器不能分片;4)途中路由器缓冲区溢出导致丢包。
和分片相关的字段有:标识、标志和分片偏移。其中分片偏移表示的是分片在整个数据报中的相对位置。这是数据在原始数据报中的偏移,以8字节为度量单位。
IP分组中的校验和仅覆盖首部,而不管数据。校验和的计算为:将分组首部划分为n位的段(n通常为16)。把这些段反码相加,得到的和的长度也是n位。再把这个和取反码就得出校验和。接收端解析时,只需要将首部反码相加然后取反码,判断是否为0即可。
ARP
一个IP分组可以通过咨询路由表找出下一跳的IP地址。但是,既然IP使用的是数据链路层的服务,它就需要知道下一跳的物理地址。通过ARP可以做到这一点。
IP地址是逻辑地址,MAC地址是物理地址。ARP把逻辑地址映射为物理地址,RARP把物理地址映射为逻辑地址。
任何时候,当主机或路由器需要找出这个网络上的另一个主机或路由器的物理地址时,它就可以发送一个ARP查询分组。这个分组包括发送方的物理地址和IP地址以及接收方的IP地址。因为发送方不知道接收方的物理地址,所以这个查询分组会在网络上进行广播。网络上的每一台主机或路由器都会接受并处理这个ARP查询分组,但只有期待的接收方才能认出是自己的IP地址,并返回一个ARP响应分组。这个响应分组包含有接收方的IP地址和物理地址。这个分组利用收到的查询分组中的物理地址以单播方式直接发送给查询者。
ICMP
IP协议没有差错报告或差错纠正机制。IP协议还缺少主机和管理查询所需要的机制。ICMP是为了弥补上述缺陷设计的。
ICMP本身是一个网络层协议。但是,它的报文并不是直接传递给数据链路层。实际上,ICMP报文首先要封装成IP数据报,然后才被传递到下一层。
ICMP报文分为两类:差错报告报文和查询报文。ICMP利用源IP地址把差错报文发送给数据报的源点。
单播路由协议
今天的互联网非常庞大,以至于仅使用一种路由选择协议无法处理更新所有路由器的路由表。为此,互联网需要划分为多个自治系统。一个自治系统就是在一个管理机构管辖下的一组网络和路由器。在AS内部的路由选择称为域内路由选择。AS之间的路由选择称为域间路由选择。AS内可以选择一个或多个路由选择协议,但是AS之间只能使用一种域间路由选择协议。
域内有两种路由选择协议:距离向量和链路状态。域间有一种路由选择协议:路径向量。路由信息协议(RIP)是对距离向量协议的实现。开放最短路径优先(OSPF)协议是对链路状态的实现。边界网关协议(BGP)是对路径向量协议的实现。
运输层
运输层协议的首要任务是提供进程到进程的通信。
运输层需要在两个层次实现流量控制:从发送方的运输层到发送方的应用层以及从接收方的运输层到发送方的运输层。可以看出,流量控制的通信可以通过从消耗者向生产者发送信号来实现。当发送的运输层缓存满溢时,它就通知应用层停止传递报文块,而当它又有了空位置时,就通知应用层继续传递报文块。当接收方的运输层满溢时,它就通知发送方的运输层停止发送分组,而当它又有空位置时,就通知发送方的运输层继续发送分组。
差错控制需要解决下面的问题:1)检测并丢弃损坏的分组;2)识别重复的分组并丢弃它们;3)跟踪丢失和丢弃的分组并重传它们;4)保存失序到达的分组,直至缺失的分组全部抵达。
TCP
序号:定义了指派给本报文段第一个数据字节的编号。
HLEN(首部长度):这个4位段指出TCP首部一共有多少个4字节。
窗口尺寸:发送方允许的接收窗口大小,表示发送方现在可以接收多少数据。
校验和:与UDP一样,但是UDP的校验和是可选的,TCP是强制性的。校验部分包括:伪首部、TCP首部和应用层的数据。
TCP建立连接利用三步握手:客户首先发送一个SYN报文段,然后服务器回复一个SYN+ACK报文段,最后客户端发送一个ACK报文段。SYN报文段不携带任何数据,但是它要消耗一个序号,即当发送数据时,序号应当加1。
TCP终止连接也是通过三步握手:首先客户TCP收到客户进程发来的关闭命令后,就发送一个FIN报文,之后服务器发送一个FIN+ACK报文段,最后客户TCP发送一个ACK报文段。FIN报文段不携带数据,但是要消耗一个序号。
DHCP
一台主机启动后,DHCP是第一个运行的客户/服务器应用程序。也即,当一台主机启动后,如果他认为自己应当连接到Internet,但又不知道自己的IP地址,DHCP就以引导程序的身份发挥作用。
当前计算机要连接到网络需要四种信息:1)计算机的IP;2)计算机的子网掩码;3)一个路由器的IP地址;4)DNS服务器的IP地址。
在DHCP之前,RARP也曾被用来从一个物理地址映射为一个IP地址。但是现在已经被淘汰,原因有二:1),RARP利用了数据链路层的广播服务,这也就表示每个网络上都必须存在一台RARP服务器;2)RARP只能提供计算机的IP地址,但如今的计算机需要上述四种信息。