目录
链路层
TCP/IP支持多种不同的数据链路协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI、RS-232串行线路等,当今TCP/IP采用的主要局网技术是以太网。
以太网的帧结构
帧数据的发送方式以“广播”的方式在子网络内的主机之间传输。广播就是它不是把帧数据准确送到接收方,而是向本网络内所有计算机发送,每台计算机根据收到的帧数据的标头的MAC地址判断自己是否为接收方。
一个帧首部的发送者和接收者信息由MAC地址确定,MAC地址在每台主机的网卡上,是唯一的。
最大传输单元MTU:
数据链路层中的不同协议对帧的数据部分长度都有一个限制,不同协议的MTU值不同。
常用的以太网为1500个字节,MTU主要是为了限制一次传输的最大IP数据报的值,如果IP层有一个数据报要传,而且数据产度比数据链路层的MTU大,则就需要将IP数据报进行分片,使每一片都小于MTU。
网络层IP协议
前20字节和紧接其后的选项部分是IP数据报的首部,前20个字节是固定的,选项最多40字节,整个IP首部长度在20-60之间。
因为首部字节数那里是16位,16位能表达的最大长度为2^16=65535字节,即IP数据包最大总长度包含首部和数据为65535字节。但是实际上当IP数据包的长度大于MTU时,就会进行IP分片,把很长的IP数据包分成不同的部分加在帧数据中。
IP协议的分片:
IP数据报在长度超过MTU时会发生分片,在接收端再将分片重组,通常只有UDP协议加了IP首部之后的IP数据包会发生分片。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。
IP协议规定了该网络地址的规则,作用是为每个计算机一个网络地址,让我们区分不同MAC地址的计算机是否在同一个子网络中。
规定网络地址/IP地址由4组8个的二进制位构成,我们通常不用它的二进制形式,而是用每个组的十进制表示,从0.0.0.0一直到255.255.255.255。IP地址一部分代表不同子网络,一部分代表不同主机,这两部分的位数不是定死的,不能直接从IP地址上得到它的子网络和主机,要用子网掩码区分。
子网掩码是表示子网络特征的一个参数,在形式上等同于IP地址,但是它的网络部分全部为1,主机部分全部为0,写成十进制举个例子为255.255.255.0。
判断是否是同一子网络用IP地址和子网掩码与运算。
ARP协议
ARP协议只用在局域网中。通过IP地址可以得到对方主机是否在同一子网络,如果在同一子网络,用ARP协议根据目标主机的IP地址得到目标主机的MAC地址,进而通过以太网协议进行广播传输。
ARP协议原理:
局域网中的每个主机都有一个ARP缓存,它保存了最近发起的IP地址到MAC地址的映射记录,当该主机要向局域网中的某一主机发送数据时,它会先从自己的缓存中查找映射,看是否存在目标IP地址,
如果找到,就通过映射找到它的MAC地址,从而发送过去
如果没有找到该目的IP地址,它就向该局域网内发送一个广播,广播中包含自己的IP地址、MAC地址和目的主机的IP地址