①以太网帧格式:
对于CRC校验码(循环冗余校验码):作为一种差错校验码,最明显的特征就是在所要发送的信息字段的后面加上用于校验的冗余码字段。 而对于CRC的生成,(假设有k位信息码,n位冗余码),最主要在于n位冗余码的生成:(利用除法及余数原理) 举个例子:k位信息码位101001,需要给定3位冗余码,也就是生成(k+n,k)校验码,给定除数P为1101 计算方法:用k位信息码,先向它的末尾加上n个0(101001000),并将其作为被除数,用它除以我们的给定除数P(1101),而除的过程利用模2加,也就是我们的按位异或操作,计算得出余数R(001),将其作为我们的后三位冗余码,由此就可以得到我们的校验码(101001001) 补充一个概念:冗余码在这里也叫做帧检验序列FCS 上述就是CRC校验码在发送端的生成过程,而当我们的校验码到达接收端后,接收端会对其进行检测,大致方法如下: 将接收到的每一个帧都除以之前约定好的除数P,至于除法计算过程与生成过程相同,只不过在这里我们要判断余数是否为0,若为0,则在传输过程中并未出现差错,否则认为传输过程中出现误码,则认为当前接收的这个帧出现差错(但是这里我们并不能知道是哪一位或者哪几位出现差错),由此将当前帧进行丢弃 如上,就是CRC校验码的生成与校验过程,其中有一点不得不提,就是反复提到的除数P,在实际应用当中通常会有以下几种生成多项式(多项式中出现的每一项的次数就是表示了在之前二进制序列当中的哪一位存在1): CRC-16:X^16+X^15+X^2+1 CRC-CCITT:X^16+X^12+X^5+1 CRC-32
②ARP地址解析协议 在局域网当中,对于知道目的IP地址及端口号,却不知道目的MAC地址,很明显难以填写以太网数据帧中的目的MAC地址字段,无法实现信息从源主机到单一目的主机的传输,由此源主机会发出ARP请求询问目的主机的MAC地址,而目的主机在接收到请求后会发出ARP应答,发送自己的MAC地址给源主机 至于其中的具体过程,首先得了解ARP数据报的格式:
上图是经过以太网数据帧封装的ARP数据帧格式,其中帧类型会被设置成0806(ARP请求/应答),硬件类型指的是链路层网络类型(1---以太网),协议类型是指要转换的地址类型(0x0800代表IP地址),op字段(0----ARP应答,1----ARP请求) 下面分析具体的ARP过程: 首先由源主机发出ARP请求,由于不知道目的MAC地址,所以这里我们采用广播的方式将以太网首部的目的MAC地址填写成全F,这样一来只要是在当前局域网内的主机均能够收到源主机发送的数据(注意:无论是不是广播方式,同一个局域网内的所有主机均能够收到源主机的数据,只是能否传给上层就得看MAC地址是否符合了),并传输给上层(由于在链路层对于与自己MAC地址不符的数据,会选择在当前层进行丢弃,这样一来一般的MAC地址就无法送达到上层进行IP地址的判断了,而广播这一方式很好的解决了这样的问题,在链路层所有主机均不会对数据进行丢弃,能够送达至上层进行IP地址的判断),对于IP地址吻合的主机,会发送ARP应答,将自己的MAC地址填写至源MAC地址字段,而目的MAC地址字段则是填写成之前送过来的ARP请求中的源MAC地址,经过以太网数据帧的封装发送出去,而这一次仅有指定的目的主机才能在上层获得所要的数据(源MAC地址) 二.网络层 IP协议:
IP协议报头各字段: 4位版本:指IP协议的版本(4----IPv4),4位首部长度:占四位,单位为字(4字节),最小为5(20字节),最大为15(60字节);8位服务类型TOS:用于区分服务;16位总长度:指的是报头加数据整个数据报所占大小,单位字节【通过4位首部长度与16位总长度可以将报头与有效载荷区分开来】
16位标识:对于IP数据报进行标识,但并不代表序号(没有先后),当我们的IP数据报因为超过MTU大小时,需要进行分片,对于同一个数据报的分片,这个字段的值是相同的,便于之后的恢复;3位标志:MF=1表示之后还有分片,MF=0表示这是最后一个分片,DF=0表示当前数据报允许分片,DF=1则表示不能在进行分片,还有一位作为保留;13位片偏移:表示当前数据报在原数据报中的相对位置
8位生存时间TTL:表示游离报文的生存时间,防止存在太多的未能被处理的游离数据报文,在TTL为0时,路由器就会将此报文进行丢弃;8位协议:表示上层协议类型;16位首部检验和:用于对数据报报头信息进行检验
32位源IP地址:源主机IP地址;32位目的IP地址:目的主机IP地址
关于IP协议不得不提的就是IP地址:我们的IP地址被划分成网络号和主机号,以点分十进表示,网络号相同的IP地址之间处于同一个局域网当中,可以进行直接通信,而对于网络号不同的IP地址,它们处于不同路由器管理下的局域网当中,它们之间进行通信要通过路由器进行转发
下面介绍一种特殊的IP地址:127.*,常用的是127.0.0.1,用作本地环回测试,当发送数据包的目的地址是环回地址,或者是与本机上的其他网络设备的IP地址相同的地址,那么数据包将不会发送到网络上,而是通过环回设备这一特殊的网络设备,将数据包重新由协议栈底层发回给上层,所以通常被用来网络协议栈和网络服务