三、 网际互联的网络层——IP地址【计算机网络全景梳理系列】

本文主要是介绍三、 网际互联的网络层——IP地址【计算机网络全景梳理系列】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0.回顾——数据链路层

上一节讲到,Bob和Alice等小伙伴建立了一个小团伙的局域网。在这个局域网中:

  • 他们把原始的信息流(Bits)封装成帧(Frame)来传输,这样可以区分出一个与一个消息。
  • 同时,使用转义字符解决了某些数据和帧符号相同的问题,实现了可以传输任意字符的透明传输效果。
  • 为了避免传输过程中受到噪声的影响,在这些帧中还添加了差错控制,避免传输错误的信息。

在局域网中的每个小伙伴,都有一个自己独特的身份证号——MAC地址,这个MAC地址在每个人的一生中是不会改变的。而且在局域网的范围中,通过交换机自学习功能,小伙伴们可以通过这个MAC地址中来互相发送信息,实现了物理路由

在这个局域网中,为了节省资金,大家会共用一个公共信道(逻辑上总线型)。而为了避免发生冲突,大家分想了不少的办法

  • 大家根据令牌轮流使用(令牌
  • 边发边听,相互谦让(CSMA/CD 载波监听多点接入/冲突检测
  • 发前预约信道(CSMA/CA 载波监听多点接入/冲突避免
1. 新挑战——不同局域网之间如何交流

Bob和小伙伴们创建的局域网大大方便了同学间的学习交流,从此声名远扬。大家纷纷效仿创建了一个又一个类似的局域网。在世界各地创建的局域网中,人们又希望世界各地不同的局域网之间任意两台机器也能实现相互交流的效果。

为了在不同的局域网之上,提供统一的任意地方到任意地方的信息传输服务,Bob和全世界的小伙伴们在数据链路层的基础上又创建了网络层

回顾一开始的假设,网络层要解决的最大问题就是如何实现任意两台设备的互联,一个信息可以准确的从发送地传输到目的地?

2. 面向连接与无连接之争

在一开始的计算机网络领域,大家曾对网络层要使用类似与电报面向连接的虚电路服务还是分组交换的无连接服务。针对面向连接的虚电路服务,ITU-T组织层发布多X.25协议。但是不同于电报中电话机设备简单,计算机网络设备比较智能,同时为了降低网络造价,面向无连接的分组交换协议成为现在网络层的主流方法。

服务方式连接方式协议
虚电路面向连接ITU-T X.25
分组交换无连接IP
3. 网络层之魂——IP地址
3.1 为什么需要IP地址,而不用MAC地址

为了实现任意两个网络设备之间的互联通信,需要辨别不同设备,即需要有一个身份辨别。在上一节中,我们讲到了在数据链路层中,每个设备都有一个自己的唯一ID(MAC地址)。

那么可以在网络层中使用MAC地址来寻址吗?

显然不能,理由很简单——在写信的时候,信封上地址栏会写身份证号码吗?哈哈,显然不会。我们不会写对方的身份证号码而是它的地址。仅仅靠身份证号码可找不到对方,所以我们需要另外的信息——IP地址。

所以,IP就是网络世界中的地址,数据包就是靠着这个IP地址传输到对方设备。

概念唯一性现实世界类比
MAC地址物理世界唯一身份证号码
IP地址网络世界唯一住址

就跟人会搬家一样,不同的网络设备可能会接入不同的网络中。所以在写信寄包裹时候只能凭借具体的住址。

3.2 IP地址分配

IP地址是互联网上每台设备在全世界范围内唯一32位标识符

不同与真实世界中,各地的地址根据地理位置已经有所划分。网络中的IP地址是需要分配的,具体的机构为ICANN。IP地址可以分为两个部分:

  • 网络号:设备所处的网络,类似小区的地址,这必须是全球唯一的
  • 主机号:标志者主机在网络中的位置,例如3栋401,这个可以类似的

不同的局域网中有着不同数量的主机数量,为了分层次管理,全球的IP分为了A类到E类五种类型。

私有地址

即使可供分类的IP很多,但是全世界的主机更多。每个网络设备都有一个自己IP不太现实。所以为了避免这种情况,IP地址分为了公有地址私有地址。其中私有地址不会出现在全球网络中,但是可以在一个局域网中中分配。这样,一个局域网对外可以只有一个共有IP,而在内部可以分配多个私有IP。

在不同的类型IP都有对应的私有地址,例如 A类中的10.x.x.x、B类中的172.16.x.x, C类中的192.168.0.x。

3.3 IP数据报封装

类似于以太网帧,网络层会把分组的数据封装为一个IP数据包。一个IP数据包可以分为两个部分,首部数据部分。其中首部说明了一个数据报的很多相关信息,首部的最小长度为20字节。其中每个字段的含义如下:

字段bit含义常见值
版本4IP协议的版本4(IPV4)
首部长度4所有首部的字节数(20-60字节)20(最小长度)
区分服务8服务类型(实际上没有使用)
总长度16首部和数据之和,单位为字节最大为65535字节
标识16表示字段 (计数器)
标志3是否分片
片偏移13分片后在原来的位置偏移
生存时间8TTL (1-255)
协议8协议号TCP:6 UDP:17 ICMP:1
首部校验和16校验值
源地址32发送设备的IP地址
目的地址32接收设备的IP地址
可选字段/用于测试 调试 安全限制等
填充/让部分长度为32的整倍数
4. 是谁的包裹?——ARP协议

上一节中讲到数据包在发送时候使用的是IP地址(类别于信封上的信息),而具体的数据是必须发送到一个具有特定MAC地址的设备上(类似于有唯一身份证ID的一个人)。那从网络层到数据链路层,网络是需要知道具体的数据报属于谁。

这就像快递小哥把快递送到学校后,还需要找到包裹上信息的对应的人。(但是不同于真实世界可以打电话,这里加速快递小哥没有电话)

那该怎么办呢?——ARP协议出现了!

ARP协议机制
广播机制——逐个问:“是不是你的包裹?”

想象一下你就是快递小哥,你已经把包裹送到对应的宿舍里,宿舍里有四个人,而你肯定也都不认识。那你接下来应该怎么确定是谁的包裹呢?

“这不很简单,一个个问呗”。对,ARP协议也是使用这么粗暴的方式。

在不知道IP地址对应着的是哪个设备时候,设备会向同一链路的所有设备广播ARP请求包

  • 请求包中包含了目的地的IP地址
  • 每个设备接收到后会查看和自己匹不匹配
  • 若匹配,主机会发送回ARP请求包(请求包中会包含了主机的MAC地址)

这样,包裹(数据包)就被成功的送到对应的同学(设备)上了。

cache机制——拿小本本记下

但这也不是事,总不能每次都一个一个去问,这也太浪费时间了吧。那有什么好的办法呢?

“嘿,这不简单,拿小本本记下呗!”

类似的,在每个设备上会维护一个APR表,用来记录每个IP对应下的MAC地址。这样,就不用每次去一个个问了。

超时清除机制——人员流动

类似于现实世界中人员会流动(学生更换寝室),小本本不能一直用下去需要更新一样,ARP表中的内容超过一定时间期限后就会被清除

ARP结构

ARP协议会被包括在以太网帧中被发送。

整体的以太网帧结构为

  • DST 以太网的目的地址,全1表示广播
  • SRC以太网的源地址
  • 帧类型
  • ARP数据包
    • 硬件类型 ,以太网来说,此值为 1
    • 协议类型, 指出映射的协议地址类型,对于 IPv4 地址,这个值是 0x0800
    • 硬件大小协议大小 分别指出硬件地址和协议地址的字节数。常见值分别是 6 和 4
    • Op 字段指出操作类型
    • 后面就分别是发送者目的以太网地址IP地址
  • 后面就是以太网帧帧尾了,包括对齐PAD和校验CRC
ARP攻击

从上面快递员送快递的例子来就可以感受到ARP协议是一个不安全的协议,很容易受到ARP攻击

攻击类型详细类比
泛洪攻击发送大量假的ARP包,占用资源假冒快递员给你打骚扰电话,把你弄的贼烦
主机欺骗攻击骗过主机,使得局域网内被攻击主机发送给网关的流量信息实际上都发送给攻击者假冒快递员,去收你的快递。把你的快递占为己有
网关欺骗攻击骗过网关,攻击者源源不断的获取局域网内其他用户的数据小红假冒小绿去领快递,所有小绿的快递都被小红领了
中间人攻击同时欺骗局域网内的主机和网关,局域网中用户的数据和网关的数据会发给同一个攻击者小红和小黄写信,本来是小红和小黄之间直接交换的。但是小绿作为中间人可以获得其中的私密信息
IP冲突攻击假冒别人的IP地址真假小红,有两个人都声称包裹是自己的。
IPv6中NDP协议

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。

这篇关于三、 网际互联的网络层——IP地址【计算机网络全景梳理系列】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/639505

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

webapp地址

F:\LSP\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A