文章目录
负责网络分区和路由寻址的一层
MAC地址
网络适配器的物理地址,出厂时烧录在rom里。具有唯一性,不同厂家生产时都会被分配响应的地址范围。
MAC地址格式
48位6个字节通常表示为12个16进制数:08:00:20:0A:8C:6D
。前3个字节表示为OUI(Organizationally Unique Identifier),是IEEE
的注册管理机构给不同厂家分配的代码,后三个字节有厂家自行分配
MAC地址查看
linux 的
ifconfig 命令
eth0表示网卡
ether: 38:f9:d3:4f:13:76表示的就是MAC地址
MTU 最大传输单位
46 ~ 1500。
ARP协议
IP转化为MAC地址的协议,RARP
逆向
当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是
一台可以通往局域网外的路由器的MAC
地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)
原理
在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,
表里的IP地址与MAC地址是一对应的,如下表所示。
工作过程
以主机A(192.168.38.10)
向主机 B(192.168.38.11)
发送数据为例
-
step1:本地找
当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到就知道目标MAC地址为(00-BB-00-62-C2-02),直接把目标MAC地址写入帧里面发送就可。 -
step2:本地未找到,广播查询(ARP REQUEST)
如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播(ARP request),目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.38.11的MAC地址是什么?” -
step3: 所有人都听到,被寻者响应
网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时
,才向主机A做出这样的回应(ARP response):“192.168.38.11的MAC地址是00-BB-00-62-C2-02”,此回应以单播
方式。这样,主机A就知道主机B的MAC地址,它就可以向主机B发送信息。同时它还更新自己的ARP高速缓存(ARP cache),下次再向主机B发送信息时,直接从ARP缓存表里查找就可。
ARP缓存表采用老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可减少缓存表的长度,加快查询速度。
报文格式
以太网链路层
目标以太网地址:目标MAC地址。FF:FF:FF:FF:FF:FF (二进制全1)为广播地址。
源以太网地址:发送方MAC地址。
帧类型:以太类型,ARP为0x0806。
以太网报文数据
硬件类型:如以太网(0x0001)、分组无线网。
协议类型:如网际协议(IP)(0x0800)、IPv6(0x86DD)。
硬件地址长度:每种硬件地址的字节长度,一般为6(以太网)。
协议地址长度:每种协议地址的字节长度,一般为4(IPv4)。
操作码:1为ARP请求,2为ARP应答,3为RARP请求,4为RARP应答。
源硬件地址:n个字节,n由硬件地址长度得到,一般为发送方MAC地址。
源协议地址:m个字节,m由协议地址长度得到,一般为发送方IP地址。
目标硬件地址:n个字节,n由硬件地址长度得到,一般为目标MAC地址。
目标协议地址:m个字节,m由协议地址长度得到,一般为目标IP地址。
IP协议(netID+hostId)
解释
硬件无关的逻辑地址,(ipv4)32位形如120.120.120.120
逻辑上由网络ID
+主机ID
组成,网络容纳的主机越多,就需要给主机的分配的位数越多。
最初A类地址使用前8位作为网络ID,b类使用16位,c类使用前24位。后来出现了一种跟灵活的无类别路由选择
CIDR
让地址分类基本上变得毫无意义。
IP报头
最小的长度为20字节
- 版本
IP协议的版本,现在是4或6,4就是0100
- 报头长度(IHL)
ip报头的最小长度为20个字节,即5个32位,对应的编码是0101
- 服务类型(TOS)
随着服务质量(QOS)的出现
,这个字段被用来标识数据报的优先级。一般IP这个字段全填为0,0000 0000
- 总长度
报头与数据字段的总长度,标识有多少个32位 - 标识
这是一个依序变大的数值,当应用的消息太大不能用一个数据包发送时,会拆分成多个数据包。这些数据包都有同一个标识
,接收端会根据标识进行还原。 - 标志
这个字段表示分段的可能性。第1位未使用。第2位(DF
)0表示允许分段,1表示不允许;第3位(MF
)
表示是否有更多分段在传输,0表示没有更多的分段。 - 片偏移
被赋予每个连续的分段,目的是接收端按照偏移量重新组装还原 - 生存时间TTL
表示这个数据包被抛弃之前能够保留的时间,以秒为单位或者路由器跳数字段为0时会被抛弃 - 协议标识
表示接受的协议协议模块,6就是TCP - 报头校验和
这个字段包含16位的校验和,只用于检测报头数据的有效性 - 源地址IP
源地址IP - 目的IP
目的IP - 选项
未必有,用于测试等需要额外的信息时添加 - IP数据载荷
一般用于传递TCP或者UDP、ICMP、IGMP的数据
* IP寻址
ipv4由32位0000 0000|0000 0000|0000 0000|0000 0000
类别 | 标志 | 位数 | 32位地址 | 排除地址(特殊用途) | 二进制 |
---|---|---|---|---|---|
A类 | 前8位 | 0~127 | 32位地址以0开头 | 1.0.0.0 ~ 10.255.255.255:127.0.0.0~127.255.255.255 | |
B类 | 前16位 | 128~191 | 32位地址以10开头 | 127.16.0.0 ~172.31.255.255 | |
C类 | 前24位 | 192~223 | 32位地址以110开头 | 192.168.0.0 ~ 192.168.255.255 |
保留的特殊地址
私有网络
1.0.0.0 ~ 10.255.255.255 私有网络的保留地址,设想是这些地址不会被连到互联网。
127.16.0.0 ~172.31.255.255 同上
192.168.0.0 ~ 192.168.255.255 同上
广播地址
在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。
1)受限广播(仅会本地传输)
它不被路由发送,但会被送到相同物理网络段上的所有主机
IP地址的网络字段和主机字段全为1就是地址255.255.255.255
2)直接广播
网络广播会被路由,并会发送到专门网络上的每台主机
IP地址的网络字段定义这个网络,主机字段通常全为1,如 192.168.10.255
loopback
特殊的 loopback IP 網段
好了,那麼除了這個預留的 IP 網段的問題之外,還有沒有什麼其他的怪東西呢?當然是有啦!不然鳥哥幹嘛花時間來唬 XX 呢?沒錯,還有一個奇怪的 Class A 的網域,那就是 lo 這個奇怪的網域啦 (注意:是小寫的 o 而不是零喔)!這個 lo 的網路是當初被用來作為測試作業系統內部迴圈所用的一個網域,同時也能夠提供給系統內部原本就需要使用網路介面的服務 (daemon) 所使用。
簡單的說,如果你沒有安裝網路卡在的機器上面, 但是你又希望可以測試一下在你的機器上面設定的伺服器環境到底可不可以順利運作,這個時候怎麼辦, 嘿嘿!就是利用這個所謂的內部迴圈網路啦!這個網段在 127.0.0.0/8 這個 Class A,而且預設的主機 (localhost) 的 IP 是 127.0.0.1 呦!所以囉,當你啟動了你的 WWW 伺服器,然後在你的主機的 X-Window 上面執行 http://localhost 就可以直接看到你的主頁囉!而且不需要安裝網路卡呢!測試很方便吧!
此外,你的內部使用的 mail 怎麼運送郵件呢?例如你的主機系統如何 mail 給 root 這個人呢?嘿嘿!也就是使用這一個內部迴圈啦!當要測試你的 TCP/IP 封包與狀態是否正常時,可以使用這個呦!(所以哪一天有人問你嘿!你的主機上面沒有網路卡, 那麼你可以測試你的 WWW 伺服器設定是否正確嗎?這個時候可得回答:當然可以囉!使用 127.0.0.1 這個 Address 呀! _ )
ICMP 消息控制协议
消息在互联网传输过程中难免会报错,icmp用于调试和报错,ICMP会将问题通知给源IP.
子网
ISP
internet服务供应商
子网的灵活划分便于ISP
或者管理员灵活管理网络和提供服务
受限于A,B,C的划分太笼统,比如A类网址可以容纳160万台主机,信息传递和广播比较费事。所以出现了subnet的划分
子网掩码 netmask
网络ID和主机ID共同构成32位IP,子网掩码就是全1开头+全零结尾。 子网划分的数量= 2^n ,n为子网掩码为1的位数
IP 非 掩码 = 主机ID
1 255.255.255.128 128 126
2 255.255.255.192 64 62
3 255.255.255.224 32 30
4 255.255.255.240 16 14
5 255.255.255.248 8 6
6 255.255.255.252 4 2
网段
子网的别称,
用子网掩码 and IP地址,留下来的就是网段标识,一致就说明两台机器在同一网段。
又假如530台机器要划分网段,那么需要2^10=104去容纳,就需要10为,那么就选B类的IP端:188.188.x.x即可。
网关
网段中第一个编号为网关地址(默认情况下),最后一位为广播地址。网内机器与外交流统一通过网关地址。
DHCP会随机挑一个作为网关地址
CIDR
形如104.123.123.123/20
20的含义是子网掩码是前20为1,也即网段标识为前20位。就不限于用A(8位)、B、C类
网址很死的来划分。
路由
清楚了网络的划分和网络ip的分配原理后。还有一个重要的问题如何将数据准确送到目的。这个就是路由。
网络是层级划分的 :内部传输
,不走网关。外部联系
,与其他网络,要走网关。
路由表
每个主机都有自己的路由表