ip协议也属于tcp/ip协议栈
ip协议报头格式
ip协议如何将自己的报头和有效载荷分离?
报头可以做到定长加自描述字段将报头和有效载荷分离出来
ip协议如何将自己的有效载荷交付给上层协议?
依靠报头中8位协议决定将自己交付给上层的那个协议
IP实现跨网络传输的前提是什么
前提:把报文可以从一台主机送到和自己直接相连的下一台主机(由数据链路层提供:mac帧)——》局域网通信
分片与组装
为什么要进行分片
因为底层的mac帧规定了MTU(最大传送单元)
如何进行分片和组装的
实际可以将上述问题分割成以下三个问题:
-
如何识别是分片报文? -
如何进行合理组装 -
如何发现丢包问题 -
如何保证自己收到了所有的分片呢? 1.通过13位的片偏移+3位标志中的”更多分片“,如果更多分片为0,则的代表没有分片,如果是1则代表有分片。 2.根据标识聚合所有的分片报文,按照片偏移进行升序排序。 3.每个报文都有自己的起始片偏移,起始片偏移+自身分片的长度=下一个分片报文的起始片偏移。 4.开头没有丢失,中间没丢,收到结尾报文(更多分片为0)
什么是分片和组装
IP报文无法将报文整体发送给对方,需要将报文拆成多片到对方再进行组装
mac的有效载荷最大是MTU,其中MTU包含了什么?
IP的报头+ip的数据=MTU(1500字节),所以每一个分片都要包含IP报头。
IP:提供一种能力,将数据从A主机跨网络发送给B主机的能力。
网络划分
IP地址分为两个部分, 网络号和主机号
- 网络号: 保证相互连接的两个网段具有不同的标识;
- 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;
- 不同的子网其实就是把网络号相同的主机放到一起
- 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复
- A类 0.0.0.0到127.255.255.255
- B类 128.0.0.0到191.255.255.255
- C类 192.0.0.0到223.255.255.255
- D类 224.0.0.0到239.255.255.255
- E类 240.0.0.0到247.255.255.255
上述网络划分会浪费很多网络号,所以提出了一种新的划分方案,称为CIRD
- 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号
- 子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾
- 将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号
其实每一个子网都有自己的子网掩码
特殊的IP地址
- 将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网
- 将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包。
- 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
数据链路层
以太网
“以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等; 以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等
以太网帧格式
如何分离?
定长报头
如何交付?
根据两个字节的类型,根据数值不一样然后决定交付给上层
|