IP协议
IP协议的本质:提供一种能力,将数据跨网络从A主机传输到B主机
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这样的程序, 最大吞吐量比较重要.
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位目标地址: 表示发送端和接收端.
网段划分
路由器也是一个主网的主机,也要配置ip地址
路由器一定至少连接了2个子网,路由器也就相当于同时在两个子网。
路由器可以配置多个ip。认为路由器有多张网卡即可。路由器可以构建子网。
ip地址 只有在联网的时候才有
A类网络:2的7次方个A类网络,一共包含了2的24次方台主机。
子网掩码:区分网络号和主机号
c++
122.133.144.155
1111 1111 1000 0000 0000 0000 0000 0000
两个ip地址不用,主机号为0,或者全1
c++
140.252.20.0100 0100
255.255.255.1111 0000 &
140.252.20.0100 0000
私有IP地址和公网IP地址
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都
可以,但是RFC 1918规定了用于组建局域网的私有IP地址
**10. **前8位是网络号,共16,777,216个地址
172.16.到172.31 .,前12位是网络号,共1,048,576个地址
192.168. ,前16位是网络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP);
我们使用的ip地址都是私有ip
运营商
我们是怎么上网的?
调制解调器(光猫) : 将光信号转为电信号也就是01序列
家用路由器:构建局域网
NAT
(Network Address Translation,网络地址转换)一种用于修改网络数据包中IP地址信息的技术。它在路由器或网关上运行,允许多个设备共享一个公网IP,从而节省IP地址资源。NAT广泛应用于家庭、企业网络及运营商网络中,帮助解决IPv4地址枯竭问题。
NAT的工作原理:
NAT通过将私有IP地址(通常在局域网中使用的地址,如192.168.x.x或10.x.x.x)转换为公共IP地址,实现内网设备与互联网的通信。当内网设备向外发送数据时,NAT会将设备的私有IP替换为路由器的公网IP;当返回的数据包到达时,NAT再将公共IP转换回私有IP,并将数据发送到对应的内网设备。
NAT的类型:
-
静态NAT:
- 一对一转换,即每个内部私有IP都有一个固定的公网IP进行映射。常用于某些需要固定IP地址的服务(如企业服务器)。
-
动态NAT:
- 路由器从公网IP池中动态分配公网IP给内网设备,当内网设备请求时,它们共享或轮流使用这些IP。动态NAT适合IP数量有限的场景。
-
PAT(Port Address Translation),也叫端口地址转换:
- 常见的NAT类型 ,又叫"NAPT "或"过载NAT"。使用一个公网IP,但通过端口号区分多个内网设备的流量。每个内部设备的请求通过不同的端口号映射到相同的外部IP地址,这就是为什么多个设备可以通过一个公网IP访问互联网。
NAT的优势:
- IP地址节省:内网设备共享一个或多个公网IP,避免IPv4地址枯竭。
- 安全性:内网设备的私有IP隐藏在NAT后,外部设备无法直接访问这些设备,增加了一定的网络安全性。
- 灵活性:NAT允许多个设备通过同一个公网IP进行互联网通信,简化了网络管理。
NAT的缺点:
- 网络性能:NAT在转换IP地址和端口时会增加一些延迟,特别是在使用大量会话的情况下。
- P2P应用支持较差:某些点对点(P2P)协议或应用(如视频通话、在线游戏)可能会受到NAT的限制,因为这些应用通常需要设备之间直接通信。
- 影响端到端连接:NAT打破了IP层的端到端通信模型,这使得某些应用程序需要额外的配置才能正常工作,如VPN、VoIP等。
NAT是当前网络环境中重要的基础技术,随着IPv6的逐渐普及,NAT的需求会逐渐减少,但在短期内仍然是IPv4网络中的关键工具。
ARP
(Address Resolution Protocol,地址解析协议)是一种网络协议,主要用于通过已知的IP地址 来查找对应的MAC地址。ARP协议在IPv4网络中非常重要,它负责在同一局域网内进行IP地址与物理地址(MAC地址)之间的转换,从而实现设备之间的通信。
ARP的工作原理:
- 当一个设备(如电脑)想与同一局域网中的另一台设备通信时,它会先知道目标设备的IP地址,但不一定知道它的MAC地址。
- 发送方设备会发送一个ARP请求,其中包含目标设备的IP地址,并询问网络"谁拥有这个IP地址?"
- 局域网中的所有设备都会接收到这个ARP请求,拥有该IP地址的设备会回应一个ARP回复,告诉发送方"这个IP地址对应我的MAC地址"。
- 发送方接收到ARP回复后,将IP地址与MAC地址的对应关系存储在它的ARP缓存中,以便后续通信中直接使用,无需再次查询。
ARP请求与回复的详细过程:
- ARP请求:以广播的方式发出,因为发送方不知道目标设备的MAC地址。所有连接到网络的设备都会收到这个请求。
- ARP回复:目标设备在收到ARP请求后,将自己的MAC地址封装在一个ARP回复中,并将其发给请求设备,这个回复是单播的,只发给请求方。
ARP示例:
假设设备A(IP地址为192.168.1.2,MAC地址为AA:AA:AA:AA:AA:AA)需要与设备B(IP地址为192.168.1.3,MAC地址为BB:BB:BB:BB:BB:BB)通信:
- 设备A知道设备B的IP地址(192.168.1.3),但不知道它的MAC地址。
- 设备A发送一个ARP请求:
"谁是192.168.1.3?"
。这个请求以广播形式发送给网络上的所有设备。 - 设备B接收到ARP请求后,发送一个ARP回复:
"我是192.168.1.3,我的MAC地址是BB:BB:BB:BB:BB:BB。"
- 设备A接收到这个ARP回复后,将设备B的IP和MAC地址映射存储在ARP缓存中。
- 设备A现在可以直接使用设备B的MAC地址与它通信。
ARP缓存:
ARP缓存是一个临时存储设备IP地址和MAC地址映射的表,设备通过它来避免每次通信时都需要发送ARP请求。ARP缓存中的映射有一定的有效期,通常在几分钟后会过期。
ARP的优缺点:
优点:
- 提高网络通信效率:ARP缓存减少了每次通信都要请求MAC地址的频率。
- 动态解析:设备无需预先知道所有设备的MAC地址,可以根据需要动态解析。
缺点:
- 安全性问题(ARP欺骗/ARP中毒) :
- ARP协议本身没有安全验证机制,因此容易被攻击。例如,在ARP欺骗攻击中,攻击者伪装成局域网中其他设备,向受害设备发送伪造的ARP回复,将受害设备的流量劫持到攻击者那里。这种攻击通常用于网络监听或中间人攻击。
解决ARP欺骗的对策:
- 静态ARP表:可以手动配置静态ARP条目,使得特定IP地址只能与指定的MAC地址对应。这可以防止ARP表被恶意篡改,但手动管理复杂,适合较小的网络。
- 安全网络设备:很多交换机和路由器支持ARP防护机制(如动态ARP检测,DAI),可以检测和阻止异常的ARP流量。
- 加密通信:通过加密数据传输(如VPN、SSL等)可以在ARP欺骗攻击发生时保护通信内容。
ARP的常见类型:
- ARP请求:用于查询IP地址对应的MAC地址,发出时是广播帧。
- ARP回复:用于响应ARP请求,提供MAC地址,发出时是单播帧。
- G ratuitous ARP(无偿ARP):当一个设备启动或IP地址改变时,它会发送无偿ARP告诉网络中的其他设备自己的IP地址和MAC地址。这通常用于检测IP地址冲突或更新其他设备的ARP缓存。