深入学习IP协议

309 阅读7分钟

分类

局域网(LAN)

主要有以太网(802.3网/有线局域网)和无线局域网(WLAN/802.11网)

10BASE-T以太网:BASE传送基带信号,T双绞线,传输速率10Mb/s,曼彻斯特编码,CSMA/CD介质访问控制

吉比特以太网:使用光纤或者双绞线,传输速率1Gb/s

广域网(WAN)

传输对象:分组/数据报

传输方式:数据报交换(分组,无连接,不可靠)

作用:路由选择/拥塞控制/异构网络互联

路由选择(路由算法)

内部网关协议:RIP协议/OSPF协议 外部网关协议:BGP协议

协议

IP协议

数据报:首部+数据部分(TCP/UDP)

最大传送单元MTU(数据报):1500B.
以太网最大传输单元,IP数据报(首部+数据部分)最大为1500B,大于1500B的IP数据报就无法封装成帧
最小帧长(MAC帧):64B
CSMD/CD为了在检测到碰撞时能停止数据的传输,有一个最小帧长.
最小帧长(MAC帧):1518B
MTU是1500B,MAC帧首部和尾部一共有18B

ARP协议

在相邻结点间传送数据时,使用的不是IP地址,而是物理地址(MAC地址)
所以主机路由器需要根据IP地址找到MAC地址,ARP协议就是完成IP地址到MAC地址的映射

ARP解决了下一步要怎么走

本网络:

  • 主机1发送给主机2:使用主机1中的ARP缓存找到2的MAC地址
  • 左路由器发送给主机1:使用路由器中的ARP找到1的MAC地址

另一网络:

  • 主机1发送给主机3:使用主机1中的ARP找到路由器左边端口的MAC地址
  • 左路由器发送给主机5:使用路由器中的ARP找到相邻路由器左边那个端口的MAC地址

注意看一下对于主机和路由器,"本网络"的指代

ARP缓存表的形成

  1. 源主机/路由器检查ARP缓存,如果有就向MAC帧中写入MAC地址,没有则写入广播MAC地址FF-FF-FF-FF-FF-FF(ARP请求分组)
  2. 本网络是它的广播域,广播域的节点会向源报告自己的MAC地址(ARP响应分组)
  3. 源收到响应,写入字节的ARP缓存

DHCP协议

这实际上是一个应用层协议,基于UDP

DHCP服务器管理网络中的资源,主机向DHCP服务器请求IP地址/默认网关/DNS域名解析服务器

ICMP协议

负责测试目的主机是否可达以及报告差错

ICMP报文分为和ICMP询问报文和ICMP差错报告报文
ICMP报文实际上是一个特殊的IP数据报(首部+数据部分),其数据有特定的内容

询问报文:测试目的站的相关情况

PING命令

差错报告:当路由器检测出源端的IP数据报出现问题,会根据这个数据报组装成一个ICMP差错报告报文

Traceroute命令

IGMP协议

组播路由选择协议,找出以源主机为根节点的组播转发树

组播

单播、组播/多播、广播
单播是一对一,组播是一对特定的多个,广播是一对所有
这三种数据传播方式都有相应的IP地址和MAC地址,比如在网络192.168.10.0这个网络内,192.168.10.2是一个单播的IP地址,代表某一台特定的主机;192.168.10.255是广播IP,代表所有主机;而组播IP地址也类似,它代表几个主机。数据在链路上传输依赖物理地址找到目的地,所有有对应的arp协议引射到MAC地址(硬件组播)。组播的MAC地址的特点是前25位固定,后23位截取组播IP地址尾部。
组播IP地址的格式:D类网络(224.0.0.0~239.255.255.255)
组播优势:减轻链路压力

IGMP协议是为了让路由器知道本局域网内是否有主机在某个多播组内

  1. 加入组播组:当主机要加入组播组A,向路由器k发送一个目的地址是A的IGMP报文,路由器k将该IGMP报文发送给因特网上其他组播路由器
  2. 保持存活:路由器k会将本局域网的组播成员定期周期性汇报给其他的路由器。路由器k通过IGMP报文探寻本局域网内的主机,有回应的主机则认为本局域网内还有组播组的成员(路由器A只知道有或者没有,不知道具体是谁)。

设备

路由器:路由选择/分组转发

路由器内有路由表+转发表,转发表是路由表+RIP映射到物理地址

IPv4地址分类

网络地址由网络号+主机号构成

** 为什么需要网络号**?
路由器做路由选择的判断依据是ip地址的网络号,路由表里存的也是网络号,而不是完整的ip地址

网络号可自由填充的部分不能是全0
主机号不能是全1,又不能是全0

A类网络

  • 网络号:1~126(去掉全0和127环回地址)
  • 主机号:0.0.1~255.255.254

私有ip地址:10.x.x.x
(0000 1010)(x)(x)(x)

B类网络

  • 网络号:128.1~191.255(去掉全0)
  • 主机号:0.1~255.254

私有ip地址:172.16.x.x~172.31.x.x
(1010 1100)(0001 0000)(x)(x)~(1010 1100)(0001 1111)(x)(x)

C类网络

  • 网络号:192.0.1~223.255.255(去掉全0)
  • 主机号:1~254

私有ip地址:192.168.0.X~1922.168.255.X
(1100 0000)(1010 1000)(0000 0000)(x)~(1100 0000)(1010 1000)(1111 1111)(x)

网络地址转换NAT

将IPv4的地址分为公网ip和私有ip地址,一个公网ip地址可以映射多个私网ip地址,增加了ipv4可表示的主机数目

MAC地址是48为,IPv4是32位,IPv6是64位

比如本来又10个ip地址.
将5个定为公网ip,5个是私有ip,通过端口映射就可以表示25个主机了,实际上NAT不止可以定位到主机,还可以定位到进程.

子网划分

子网划分和超网并没有增加IPv4能容纳的主机个数,但是类似于减少了"内部碎片",只需申请一个网络号,可以管理多个子网

划分子网后对外仍然表现为一个网络

一个B类网络地址145.13.0.0,分成多个三级的网络地址145.13.3.0/145.13.7.0/145.13.21.0

这个网络里一个ip地址是145.13.3.10

它的二级ip地址的子网掩码:255.255.0.0
三级ip地址的子网掩码:255.255.255.0

构成超网(无分类编址CIDR)

CIDR将网络前缀当成网络号部分,相同的网络前缀的IP地址组成一个"CIDR地址块"

记法:在IP地址后面标注网络前缀的位数
比如** IP地址**128.14.357/20(1000000 00001110 0010)(0011 00000111)
地址块128.14.32.0/20(1000000 00001110 0010)(0000 00000000)
子网掩码255.255.240.0(11111111 11111111 1111)(0000 00000000)

网络前缀可自由填充的部分不能是全0
主机号不能是全1,又不能是全0

因为网络前缀的"网络号"部分一般不是全0或全1,"子网号"部分一般没有限制

缩短网络前缀,可以将多个子网聚合成一个较大的子网

** 解决IPv4地址不够的办法**
NAT地址转换,子网划分,构成超网
其中NAT地址转换真正增加了IPv4能容纳的主机数目,好比本来只有10个IP地址,人为将他们分为7个公网IP地址和3个私有IP地址,每一个公网IP可以对应3个私有IP地址,这样可以容纳21个主机
而子网划分和构成超网类似于"减少内部碎片",充分利用分配到的网络里的每一个IP地址,比如一家公司的业务需求是三个网络,每个网络里面只有两台,没有子网划分技术之前需要申请三个C类网络去组网,现在用一个网络号去做子网划分就可以了