Linux网络编程学习笔记-应用层相关概念及协议-2

8 篇文章 0 订阅
8 篇文章 0 订阅

1.最大传输单元(MTU)/路径MTU

  1. 以太网和IEEE802.3对数据帧的长度都有限制,其最大值分别是1500和1492字节,将这个限制称作最大传输单元(MTU,Maximum Transmission Unit)。
  2. 如果IP层有一个数据报要传递,而数据的长度比链路层的MTU还大,那么IP层就要进行分片(Fragmentation)(应该尽可能避免分片),把数据报分成若干篇,这样每一篇都小于MTU。
  3. 当网络上的两台主机相互进行通信时,两台主机之间要经过多个网络,每个网络的链路层可能有不同的MTU,其中两台通信主机路径中的最小MTU称作路径MTU

1.1 以太网帧格式

以太网的数据封装格式如下图所示,该图片来自于百度
这里写图片描述

1.2 地址解析

IP地址只是逻辑地址,并不知道对应主机的位置,需要将其转换成物理地址进行进一步操作。从IP地址到Mac地址的转换过程被称为地址解析(ARP),相对应的从Mac地址转换成IP地址的协议被称为反向地址解析协议(RARP)
例如在帧的头部,目的地址的获取就需要用到ARP协议。帧的传输格式主要有三种,一种是IP数据报,一种是ARP数据报,一种是RARP数据报。

2. ICMP协议

数据报再传输至链路地址时需要知道源MAC地址目的MAC地址,有时候IP对应的MAC地址并不存在,这个时候就需要向源主机报告错误信息,这个时候就会用到ICMP协议

ICMP协议用于传递差错信息,时间、回显、网络信息等控制数据。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1。

此外在IP默认部分片的情况下,数据报长度超过MTU时会出错,该错误也是通过ICMP协议反馈给源主机。判断对等方是否可达的ping程序就是通过将数据分装成ICMP协议来实现的。

注意:ICMP协议属于IP(运输层)。
ICMP协议

具体的协议报文会在后面的讲解中进一步说明。

3. ARP协议

IP地址转化成Mac地址的协议叫做ARP协议。假设A要发送数据给B,报文中已经填充了B的IP地址,在封装至TCP层时,主机A会发送一个广播给所有主机,IP地址为A所需要地址的主机会响应该请求,其他主机会丢弃。
地址解析完成之后,IP与MAC的对应关系会存放在ARP高速缓冲中。
ARP协议

ARP地址解析过程如下图所示:
ARP解析过程

4.RARP协议

RARP协议主要用在无盘工作站上,因为没有硬盘所以无法存储IP地址,为了获取无盘工作站的IP地址,就只能通过使用RARP协议。无盘工作站再工作的时候会向RARP服务器发送RARP请求并传输自己的MAC地址已获取IP地址。

rarp

5.数据在网络中的传输过程

在广域网中有A,B两个主机,他们之间的ping过程如下图所示。
传输过程

  1. 应用程序ping会判断发送的是主机名还是IP地址,调用gethostbyname()解析主机B,将主机名转换成一个32位的IP地址。这个过程叫做DNS域名解析
  2. ping程序向目的IP地址发送一个ICMP的ECHO包
  3. 将目标主机的IP地址转换成48位硬件地址,再局域网内发送ARP请求广播,查找主机B的硬件地址。
  4. 主机B的ARP协议层接受到主机A的ARP请求后,将本机的硬件地址填充到应答包,发送ARP应答到主机A
  5. 发送ICMP数据包到主机B
  6. 主机B接受到主机A的ICMP包,发送响应包
  7. 主机A接收到主机B的ICMP包响应包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值