以太网
- “以太网” 不是一种具体的网络, 而是一种技术标准; 它既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等
- 以太网中的网线必须使用双绞线,传输速率有10M, 100M, 1000M等
- 以太网是当前应用广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等
以太网帧格式
- 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;
- 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
- 帧末尾是CRC校验码。
MAC地址
- MAC地址是用来识别数据链路层中相连的结点
- MAC地址长度为48位, 6个字节,一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- MAC地址在网卡出厂时就确定了, 不能修改。 MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址可 能会冲突,也有些网卡支持用户配置MAC地址)
对比理解MAC地址
- IP地址描述的是路途总体的 起点 和 终点;
- MAC地址描述的是路途上的每一个区间的起点和终点;
- 在一个数据报的传输过程中,IP一直不变,而MAC地址是一直在变的
为什么存在MAC地址还需要IP地址去标识互联网中的一台主机呢?
在数据链路层,存在多种异构的网络,比如以太网、令牌环网等,也就是数据链路层存在多种MTU,既多种不同的传输信道,如果只有MAC地址,在不同的网络之间是没有办法传输的,只能在MAC地址上封装一次抽象的IP地址来封装底层各种不同的网络。
MTU对IP协议的影响: 由于链路层存在MTU的限制,导致网络层的报文如果超过1500字节,就必须要对齐进行分片发送。
- 将较大的IP包分成多个小包, 并给每个小包打上标签,每个小包IP协议头的 16位标识(id) 都是相同的,这样在重组的时候就知道这个小包来自于哪个报文。
- 每个小包的IP协议头的3位标志字段中, 第2位MF置为0, 表示允许分片, 第3位DF来表示结束标记(当前是否是后一个小包, 是的话置为1, 否则置为0)。
- 到达对端时再将这些小包按顺序重组, 拼装到一起返回给传输层。一旦这些小包中任意一个小包丢失,接收端的重组就会失败,但是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)。
- MSS = MTU - TCP首部 - IP首部,既TCP报文的数据长度