网络层重点协议
在网络环境中确定一个合适的路径
IP协议
协议头格式
20 字 节 | 4位版本 | 4位首部长度 | 8位服务类型(TOS) | 16位总长度 | |
16位标识 | 3位标志 | 13位片偏移 | |||
8位生存时间(TTL) | 16位首部检验和 | ||||
32位源地址IP地址 | |||||
32位目的IP地址 | |||||
选项(若存在) | |||||
数据 |
- 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
- 4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节 数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
- 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留 字段(必须置为0)。
- 4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。 这四者相互冲突,只能选择一个。
- 对于ssh/telnet这样的应用程序,最小延时比较重要;
- 对于 ftp这样的程序,最大吞吐量比较重要。
- 4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。 这四者相互冲突,只能选择一个。
- 16位总长度(total length):IP数据报整体占多少个字节。
- 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每 一个片里面的这个id都是相同的。
- 3位标志字段:
- 第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。
- 第 二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。
- 第三位表 示"更多分片",如果分片了的话,最后一个分片置为1(类似于一个结束标记),其他是0。
- 13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。
其实就是 在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。
因此, 除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
- 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。
- 一般是64。每次 经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出 现路由循环。
- 8位协议:表示上层协议的类型。
- 16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。
- 32位源地址和32位目标地址:表示发送端和接收端。
- 选项字段(不定长,最多40字节):略
数据链路层重点协议
以太网
局域网的一种技术标准(规定,规范)
以太网帧
6字节 | 6字节 | 2字节 | 46~1500字节 | 4字节 | |
目的MAC地址 | 源MAC地址 | 类型 | 数据 | CRC | |
类型 (0800) | IP数据报 | ||||
类型 (0806) | ARP请求/应答(28字节) | PAD(18字节) | |||
类型 (8035) | RARP请求/应答(28字节) | PAD(18字节) |
- 帧协议类型字段有三种值,分别对应IP、ARP、RARP
- 帧末尾是CRC校验码
MTU
以太网的最大传输单元
- 对数据传输的大小限制,这个限制是不同的数据链路对应的物理层,产生的限制。
- 超过大小就会分片。
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要 在后面补填充位
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU
不同的数据链路层标准的MTU是不同的;
数据包长度大于拨号链路的MTU了,则需要对 数据包进行分片(fragmentation);
MTU对IP协议的影响
由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。
- 将较大的IP包拆分为多个小包(IP协议头格式,16位标识id,3位标志,13位片偏移)
- 多个小包的标识id相同
- 3位标志:
- 第二位为0,标识允许分片;
- 第三位,结束标识
- 13位片偏移:标识小包顺序,IP数据方便重组
- 小包丢失,接收端重组失败
- 网络层不负责重新传输数据;
MTU对UDP协议的影响
- 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络 层分成多个IP数据报。
- IP数据报有任意一个丢失,接收端网络重组失败,若UDP数据报,在网络层被分层,整个数据丢失概率大大增加
MTU对TCP协议的影响
TCP的一个数据报不能无限大,受制于MTU;
了解:
TCP的单个数据报的最大消息长度,称 为MSS(Max Segment Size);
TCP在建立连接的过程中,通信双方会进行MSS协商。
最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于 数据链路层的MTU)。
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值
然后双方得知对方的MSS值之后,选择较小的作为最终MSS。
MSS的值就是在TCP首部的40字节变长选项中(kind=2);
- 小包丢失,得益于TCP可靠连接,保证数据重发
ARP协议
ARP:一个介于数据链路层和网络层之间的协议;
ARP协议建立了IP地址与MAC地址的映射关 系
IP:网络传输的起点和终点
MAC:下一跳的起点和终点
在数据链路层,寻找目标网路设备(下一跳)MAC地址的过程,称为ARP寻址:
(1)主机和路由器中都保存了一张ARP缓存表:通过IP地址可以找到对应的MAC地址。
(2)根据下一跳设备的IP地址,在ARP缓存表中能找到对应的MAC地址,则可以设置目的MAC并发送 数据报。
(3)如果找不到,则发送ARP广播数据报:广播(FF:FF:FF:FF:FF:FF)的目的MAC为寻找MAC,询问下一跳设备的MAC地址;
(4)目标设备,会返回ARP应答数据报,包括自己的MAC地址;
总结:
数据链路层
- 数据链路层的作用:两个设备(同一种数据链路节点)之间进行传递数据
- 以太网是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:
- 规定了网络拓扑结构,访问控制方式,传输速率等;
- 以太网帧格式
- 理解mac地址
- 理解arp协议
- 理解MTU
网络层
- 网络层的作用:在复杂的网络环境中确定一个合适的路径。
- 理解IP地址,理解IP地址和MAC地址的区别。
- 理解IP协议格式。
- 了解网段划分方法
- 理解如何解决IP数目不足的问题,掌握网段划分的两种方案。理解私有IP和公网IP
- 理解网络层的IP地址路由过程。理解一个数据包如何跨越网段到达最终目的地。
- 理解IP数据包分包的原因。
- 了解NAT设备的工作原理