网络层 IP协议 数据链路层

IP头部字段: img IP协议字段:

  1. 4位版本:IPV4

  2. 4位首部长度:标记IP报头有多长20~60

  3. 8位TOS字段:3位弃用 1位保留 4位服务类型:最小延迟,最大吞吐量,最高可靠性,最小成本

  4. 16位数据报总长度:UDP数据段最大大小:64K-20-8

  5. 16位分片标识:UDP数据报有可能在网络层进行分片,标识当前分片所在的原始数据报

  6. 3位标志:1位保留 1位标识是否禁止分片 1位标识是否还有更多分片

  7. 13位分片偏移量:表示当前分片在原始数据中的位置,以8个字节为单位,分片大小都是8的整数倍

  8. 8位报文生存周期TTL:所能经过的路由器跳数

  9. 8位的上层协议:数据分用时决定数据使用传输层的那个协议解析

  10. 16位校验和:检验数据一致性

  11. 32位源/目的IP地址:标识数据从哪个主机来,到哪个主机去

  12. 40字节选项数据

备注:将一个大包分成多个小包,应用层叫分包,传输层叫分段,网络层叫分片.

数据分片:TCP数据不会出现数据分片,因为在传输层会协商MSS,而MSS本身就是根据MTU(最大传输单元)计算得到的.

MTU < UDP数据大小 < 64K-28,则UDP数据会在网络层进行数据分片.

网络号:

每一个路由器向自己的子网中的主机分配地址的时候,这些地址中应该包含这个网络的标记,这个标记用于区分每一个网络.每一个网络的网络号只要不一样,则分配的IP地址不会冲突.

主机号:

每一个主句的IP地址不但要具备网络的标识(网络号),还需要在局域网中能够唯一标识,这个唯一标识称为主机号.

网段的划分:

早期的划分方式:将所有IP地址划分为五类地址

A类地址: 高8位中的一位:0 低7位是网络号,剩下的都是主机号 0.0.0.0~127.255.255.255

B类地址: 高16位中高两位:10 低14位网络号;剩下的都是主机号 128.0.0.0 ~191.255.255.255

C类地址: 高24位中高三位:110 低21位网络号;剩下的都是主机号 192.0.0.0~223.255.255.255

D类地址: 高四位固定:1110 224.0.0.0~239.255.255.255

E类地址: 高五位固定:11110 240.0.0.0~247.255.255.255

新的划分方式:CIDR(对网络的划分借助一个字段叫子网掩码

子网掩码:uint32_t类型的数据,数据由连续的二进制1组成

作用:

  1. 子网掩码取反可以得到局域网中的主机范围 例如:255.255.255.0 取反0.0.0.255 0~255

  2. 子网掩码与IP地址相与可以得到网络号 192.168.122.132&255.255.255.0 192.168.122.0

问题:有个网络192.168.122.132/24,现在公司有四个部门,需要将当前的网络平均划分称为四个子网,请问如何划分,划分以后各个子网的网络号以及子网掩码以及主机IP的地址范围:

解题思路:192:C类地址:C类网络只有256个主机号,平均划分四个子网,每个子网64个主机号

每个子网的子网掩码:255.255.255.192

192.168.122.0~192.168.122.63 255.255.255.192 192.168.122.0

192.168.122.64~192.168.122.127 255.255.255.192 192.168.122.64

192.168.122.128~192.168.122.191 255.255.255.192 192.168.122.128

192.168.122.192~192.168.122.255 255.255.255.192 192.168.122.192

特殊的IP地址:

  1. 主机号全为0 --- 网络号

  2. 主机号全为1 --- UDP的局域网广播地址

  3. 127.0.0.1 虚拟回环网卡,用于本机网络测试

  4. 0.0.0.0 本机任意地址

路由选择:

每个路由器都有一张路由表,记录当前路由器所相连的网络(网络号,子网掩码,网卡名称)

当路由器接收到一个数据,则取出目的IP地址,通过路由表判断当前数据的目的主机属于哪一个相连的网络(使用目的地址与子网掩码进行相与,然后与目的网络的网络号进行判断)

  1. 若属于某个相连的网络,则使用对应网卡,将数据发送出去

  2. 若路由表匹配失败,则将数据发送到下一层网络设备(对于局域网来说就是当前路由器的网关设备)

数据链路层

数据链路层:负责相邻设备之间的数据帧传输

以太网协议(Ethernet):

Mac地址:相邻设备定位的地址:物理网卡的硬件地址 无符号6个字节整数 uint8_t 网卡出厂时,早期不能更改

Ethernet协议实现:源Mac地址,目的Mac地址,上传协议类型,数据,帧尾(包含校验和)

如何获取相邻设备的Mac地址:

ARP协议(地址解析协议):介于网络层与链路层之间的协议,通过IP地址获取MAC地址

通过发送一个arp请求数据包,要求指定IP地址将自己的Mac地址做一个应答响应回来.

并且对IP地址和Mac地址的关系进行映射缓存(缓存时间很短,通常只有30分钟)

MTU:最大传输单元(链路层限制的最大的数据帧大小 以太网默认:1500字节)

MTU对TCP协议(编程)的影响:

三次握手的时候通信双方会协商MSS(最大数据段大小),往后通信的时候都会从缓冲区中取出不大于MSS大小的数据进行传输

然而MSS是根据MTU计算得到的: MSS=MTU-最小IP报头-最小TCP报头=MTU-40字节

因此我们说TCP在传输层会自动进行数据分段,因此TCP在传输在网络层时不会进行数据分片.

MTU对udp协议(编程)的影响:

不会协商MSS,只要数据小于64K-28就可以进行传输,但是大于MTU的话就会在网络层进行数据分片.

MTU < 数据大小 < 64K-28 :就会在网络层进行分片

但是分片越多传输越危险,因为一个分片出现问题,则原始报文重组失败所有分片都会被丢弃(因此要尽可能的减少数据分片的几率)

UDP通信编程时,程序员在应用层进行数据分包,传输的数据大小尽量能够计算一下MSS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值